Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Brauche Hilfe bei einer Adressverwaltung (https://www.delphipraxis.net/114273-brauche-hilfe-bei-einer-adressverwaltung.html)

Newbi 22. Mai 2008 16:15


Brauche Hilfe bei einer Adressverwaltung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hiho.

Ich stehe vor einem Unbekannten Problem, den das Programm arbeitet zwar ohne Fehler, macht aber dennoch nicht das was ich will.
Es gibt noch ein paar mehr Fehler in anderen Bereichen, aber zur Zeit dreht es sich nur um dieses eine Problem, den hier komme ich einfach nicht weiter.

Ich Speichere einen Datensatz (Unit_Adress_Add + Unit_Save), was wunderbar funktioniert, diesen ändere ich nun und speichere ihn wieder (Unit_Adress_Edit + Unit_Load + Unit_Save), hierbei setzt er aber den Datensatz ans Ende der Datei und überschreibt nicht den anderen, was er eigentlich soll.

Klaus01 22. Mai 2008 17:14

Re: Brauche Hilfe bei einer Adressverwaltung
 
Guten Abend,

kannst Du bitte den relavanten Code (Speicherroutine) hier einstellen.
Worin speicherst Du? IniFile, Datenbank, TextFile, XMLFile ...

Grüße
Klaus

Pluto 22. Mai 2008 21:09

Re: Brauche Hilfe bei einer Adressverwaltung
 
Falls Du in eine Tabelle speicherts:

Da gibt es Edit, Append undd Insert
Edit: Ändern und überschreiben
Append: Am ende anhängen
Insert: Je nach sortierung einfügen

grenzgaenger 22. Mai 2008 21:17

Re: Brauche Hilfe bei einer Adressverwaltung
 
Zitat:

Zitat von Newbi
das Programm arbeitet zwar ohne Fehler, macht aber dennoch nicht das was ich will, es sind noch eine paar mehr Fehler vorhanden...

ein wunderbarer satz :-)

Newbi 23. Mai 2008 06:36

Re: Brauche Hilfe bei einer Adressverwaltung
 
danke.

Ich speichere in eine Typisierte Datei.

Unit_Adress_Add
Delphi-Quellcode:
unit Unit_Adress_Add;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,IniFiles;

type
  TFrm_Adress_Add = class(TForm)
    Pan_Standart: TPanel;
    Lbl_Anzeige_ID: TLabel;
    Lbl_Anzeige_Name: TLabel;
    Lbl_Anzeige_Vorname: TLabel;
    Lbl_Anzeige_Fax: TLabel;
    Lbl_Anzeige_Telefon_Arbeit: TLabel;
    Lbl_Anzeige_Telefon_Mobil: TLabel;
    Lbl_Anzeige_Street: TLabel;
    Lbl_Anzeige_Telefon_Privat: TLabel;
    Lbl_Anzeige_Land: TLabel;
    Lbl_Anzeige_PLZ: TLabel;
    Lbl_Anzeige_Stadt: TLabel;
    Lbl_Anzeige_Hausnummer: TLabel;
    Lbl_Ausgabe_ID: TLabel;
    Edt_Eingabe_Name: TEdit;
    Edt_Eingabe_Hausnummer: TEdit;
    Edt_Eingabe_PLZ: TEdit;
    Edt_Eingabe_Stadt: TEdit;
    Edt_Eingabe_Land: TEdit;
    Edt_Eingabe_Telefon_Privat: TEdit;
    Edt_Eingabe_Telefon_Mobil: TEdit;
    Edt_Eingabe_Telefon_Arbeit: TEdit;
    Edt_Eingabe_Fax: TEdit;
    Edt_Eingabe_Vorname: TEdit;
    Edt_Eingabe_Street: TEdit;
    Pan_Neu: TPanel;
    Lbl_Anzeige_ICQ: TLabel;
    Lbl_Anzeige_Mail_1: TLabel;
    Lbl_Anzeige_Mail_2: TLabel;
    Lbl_Anzeige_AIM: TLabel;
    Lbl_Anzeige_Yahoo: TLabel;
    Lbl_Anzeige_MSN: TLabel;
    Lbl_Anzeige_WWW: TLabel;
    Edt_Eingabe_Mail_1: TEdit;
    Edt_Eingabe_Mail_2: TEdit;
    Edt_Eingabe_WWW: TEdit;
    Edt_Eingabe_ICQ: TEdit;
    Edt_Eingabe_MSN: TEdit;
    Edt_Eingabe_Yahoo: TEdit;
    Edt_Eingabe_AIM: TEdit;
    Btn_Action_Save: TButton;
    Btn_Action_Clear: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Btn_Action_SaveClick(Sender: TObject);
    procedure Btn_Action_ClearClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Frm_Adress_Add: TFrm_Adress_Add;
  ID:Integer;
  Name:String;
  Vorname:String;
  Street:String;
  Hausnummer:String;
  PLZ:Integer;
  Stadt:String;
  Land:String;
  Telefon_Mobil:Integer;
  Telefon_Privat:Integer;
  Telefon_Arbeit:Integer;
  Fax:Integer;
  Mail_1:String;
  Mail_2:String;
  www:String;
  ICQ:String;
  MSN:String;
  AIM:String;
  Yahoo:String;
  Delete:boolean;
  DateiSizeCon:Integer;
  Fehler:Integer;
  EingabeFalsch1,EingabeFalsch2,SpeichernFalsch1,SpeichernFalsch2,Name_m,Vorname_m,PLZ_m,Tel_Mobil,Tel_Arbeit,Tel_Privat,Fax_m:String;

implementation
uses Unit_Variablen,Unit_Save;
{$R *.dfm}

procedure TFrm_Adress_Add.FormCreate(Sender: TObject);
begin
        // Sprachdateien abrufen
                Unit_Variablen.ini_lang_Adress_Add:=TIniFile.Create(Unit_Variablen.DirtoExe+Unit_Variablen.ini_lang_dir+Unit_Variablen.ini_lang+'/'+Unit_Variablen.ini_lang_Adress_Add_Name);
                        Btn_Action_Clear.Caption:=Unit_Variablen.ini_lang_Adress_Add.ReadString('Buttens','Btn_Action_Clear','');
                        Btn_Action_Save.Caption:=Unit_Variablen.ini_lang_Adress_Add.ReadString('Buttens','Btn_Action_Save','');
                        Lbl_Anzeige_Hausnummer.Caption:=Unit_Variablen.ini_lang_Adress_Add.ReadString('Labels','Lbl_Anzeige_Hausnummer','');
                        Lbl_Anzeige_Land.Caption:=Unit_Variablen.ini_lang_Adress_Add.ReadString('Labels','Lbl_Anzeige_Land','');
                        Lbl_Anzeige_Name.Caption:=Unit_Variablen.ini_lang_Adress_Add.ReadString('Labels','Lbl_Anzeige_Name','');
                        Lbl_Anzeige_PLZ.Caption:=Unit_Variablen.ini_lang_Adress_Add.ReadString('Labels','Lbl_Anzeige_PLZ','');
                        Lbl_Anzeige_Stadt.Caption:=Unit_Variablen.ini_lang_Adress_Add.ReadString('Labels','Lbl_Anzeige_Stadt','');
                        Lbl_Anzeige_Street.Caption:=Unit_Variablen.ini_lang_Adress_Add.ReadString('Labels','Lbl_Anzeige_Street','');
                        Lbl_Anzeige_Vorname.Caption:=Unit_Variablen.ini_lang_Adress_Add.ReadString('Labels','Lbl_Anzeige_Vorname','');
                        Lbl_Anzeige_Telefon_Arbeit.Caption:=Unit_Variablen.ini_lang_Adress_Add.ReadString('Labels','Lbl_Anzeige_Telefon_Arbeit','');
                        Lbl_Anzeige_Telefon_Mobil.Caption:=Unit_Variablen.ini_lang_Adress_Add.ReadString('Labels','Lbl_Anzeige_Telefon_Mobil','');
                        Lbl_Anzeige_Telefon_Privat.Caption:=Unit_Variablen.ini_lang_Adress_Add.ReadString('Labels','Lbl_Anzeige_Telefon_Privat','');
                        EingabeFalsch1:=Unit_Variablen.ini_lang_Adress_Add.ReadString('MsgBoxs','EingabeFalsch1','');
                        EingabeFalsch2:=Unit_Variablen.ini_lang_Adress_Add.ReadString('MsgBoxs','EingabeFalsch2','');
                        SpeichernFalsch1:=Unit_Variablen.ini_lang_Adress_Add.ReadString('MsgBoxs','SpeichernFalsch1','');
                        SpeichernFalsch2:=Unit_Variablen.ini_lang_Adress_Add.ReadString('MsgBoxs','SpeichernFalsch2','');
                        Name_m:=Unit_Variablen.ini_lang_Adress_Add.ReadString('MsgBoxs','Name','');
                        Vorname_m:=Unit_Variablen.ini_lang_Adress_Add.ReadString('MsgBoxs','Vorname','');
                        PLZ_m:=Unit_Variablen.ini_lang_Adress_Add.ReadString('MsgBoxs','PLZ','');
                        Tel_Mobil:=Unit_Variablen.ini_lang_Adress_Add.ReadString('MsgBoxs','Tel_Mobil','');
                        Tel_Privat:=Unit_Variablen.ini_lang_Adress_Add.ReadString('MsgBoxs','Tel_Privat','');
                        Tel_Arbeit:=Unit_Variablen.ini_lang_Adress_Add.ReadString('MsgBoxs','Tel_Arbeit','');
                        Fax_m:=Unit_Variablen.ini_lang_Adress_Add.ReadString('MsgBoxs','Fax','');
                Unit_Variablen.ini_lang_Adress_Add.free;
        // Id Ausgeben
                Lbl_Ausgabe_ID.Caption:=inttostr(Unit_Variablen.SpeichernDatei_Number);
end;

procedure TFrm_Adress_Add.Btn_Action_SaveClick(Sender: TObject);
begin
        // Eingaben abrufen
                ID:=Unit_Variablen.SpeichernDatei_Number;
                Name:=Edt_Eingabe_Name.Text;
                if Name=''
                        then
                                begin
                                        Fehler:=1;
                                        Application.MessageBox(Pchar(Name_m),Pchar(EingabeFalsch2),MB_OK);
                                end;
                Vorname:=Edt_Eingabe_Vorname.Text;
                if Vorname=''
                        then
                                begin
                                        Fehler:=1;
                                        Application.MessageBox(Pchar(Vorname_m),Pchar(EingabeFalsch2),MB_OK);
                                end;
                Street:=Edt_Eingabe_Street.Text;
                if Street=''
                        then
                                Street:='0';
                Hausnummer:=Edt_Eingabe_Hausnummer.Text;
                if Hausnummer=''
                        then
                                Hausnummer:='0';
                try
                        PLZ:=strtoint(Edt_Eingabe_PLZ.Text);
                except
                        Application.MessageBox(Pchar(PLZ_m),Pchar(EingabeFalsch2),MB_OK);
                        Fehler:=1;
                end;
                Stadt:=Edt_Eingabe_Stadt.Text;
                if Stadt=''
                        then
                                Stadt:='0';
                Land:=Edt_Eingabe_Land.Text;
                if Land=''
                        then
                                Land:='0';
                try
                        Telefon_Mobil:=strtoint(Edt_Eingabe_Telefon_Mobil.Text);
                except
                        Application.MessageBox(Pchar(Tel_Mobil),Pchar(EingabeFalsch2),MB_OK);
                        Fehler:=1;
                end;
                try
                        Telefon_Privat:=strtoint(Edt_Eingabe_Telefon_Privat.Text);
                except
                        Application.MessageBox(Pchar(Tel_Privat),Pchar(EingabeFalsch2),MB_OK);
                        Fehler:=1;
                end;
                try
                        Telefon_Arbeit:=strtoint(Edt_Eingabe_Telefon_Arbeit.Text);
                except
                        Application.MessageBox(Pchar(Tel_Arbeit),Pchar(EingabeFalsch2),MB_OK);
                        Fehler:=1;
                end;
                try
                        Fax:=strtoint(Edt_Eingabe_Fax.Text);
                except
                        Application.MessageBox(Pchar(Fax_m),Pchar(EingabeFalsch2),MB_OK);
                        Fehler:=1;
                end;
                Mail_1:=Edt_Eingabe_Mail_1.Text;
                if Mail_1=''
                        then
                                Mail_1:='0';
                Mail_2:=Edt_Eingabe_Mail_2.Text;
                if Mail_2=''
                        then
                                Mail_2:='0';
                www:=Edt_Eingabe_WWW.Text;
                if www=''
                        then
                                www:='0';
                ICQ:=Edt_Eingabe_ICQ.Text;
                if ICQ=''
                        then
                                ICQ:='0'
                        else
                                begin
                                        // Bindestriche entfernen
                                                ICQ :=StringReplace(ICQ, '-', '', [ rfReplaceAll ]);
                                end;
                MSN:=Edt_Eingabe_MSN.Text;
                if MSN=''
                        then
                                MSN:='0';
                AIM:=Edt_Eingabe_AIM.Text;
                if AIM=''
                        then
                                AIM:='0';
                Yahoo:=Edt_Eingabe_Yahoo.Text;
                if Yahoo=''
                        then
                                Yahoo:='0';
                Delete:=false;
        // Daten ins Array schreiben
                Unit_Variablen.Datensatz.vID:=ID;
                Unit_Variablen.Datensatz.vName:=Name;
                Unit_Variablen.Datensatz.vVorname:=Vorname;
                Unit_Variablen.Datensatz.vStreet:=Street;
                Unit_Variablen.Datensatz.vHausnummer:=Hausnummer;
                Unit_Variablen.Datensatz.vPLZ:=PLZ;
                Unit_Variablen.Datensatz.vStadt:=Stadt;
                Unit_Variablen.Datensatz.vLand:=Land;
                Unit_Variablen.Datensatz.vTelefon_Mobil:=Telefon_Mobil;
                Unit_Variablen.Datensatz.vTelefon_Privat:=Telefon_Privat;
                Unit_Variablen.Datensatz.vTelefon_Arbeit:=Telefon_Arbeit;
                Unit_Variablen.Datensatz.vFax:=Fax;
                Unit_Variablen.Datensatz.vMail_1:=Mail_1;
                Unit_Variablen.Datensatz.vMail_2:=Mail_2;
                Unit_Variablen.Datensatz.vMSN:=MSN;
                Unit_Variablen.Datensatz.vwww:=WWW;
                Unit_Variablen.Datensatz.vAIM:=Aim;
                Unit_Variablen.Datensatz.vYahoo:=Yahoo;
                Unit_Variablen.Datensatz.vDelete:=Delete;
        // Alle Eingaben Fehlerfrei
                if Fehler=1
                        then
                                begin
                                        application.MessageBox(Pchar(EingabeFalsch1),Pchar(EingabeFalsch2), MB_OK);
                                        Fehler:=0;
                                end
                        else
                                begin
                                        Unit_Variablen.Speichern_New:=true;
                                        Unit_Save.Form2.save;
                                                // Speichern erfolgreich ?
                                                        if Unit_Variablen.SpeichernDatei_Size_Check=true
                                                                then
                                                                        begin
                                                                                inc(Unit_Variablen.SpeichernDatei_Number);
                                                                                Lbl_Ausgabe_ID.Caption:=inttostr(Unit_Variablen.SpeichernDatei_Number);
                                                                                Unit_Variablen.SpeichernDatei_Size_Check:=false;
                                                                                Btn_Action_Clear.Click;
                                                                        end
                                                                else
                                                                        begin
                                                                                Application.MessageBox(Pchar(SpeichernFalsch1),Pchar(SpeichernFalsch2),MB_OK)
                                                                        end;
                                end;
end;

procedure TFrm_Adress_Add.Btn_Action_ClearClick(Sender: TObject);
begin
Edt_Eingabe_Fax.Text:='0';
Edt_Eingabe_Hausnummer.Text:='';
Edt_Eingabe_Name.Text:='';
Edt_Eingabe_Vorname.Text:='';
Edt_Eingabe_Land.Text:='';
Edt_Eingabe_Stadt.Text:='';
Edt_Eingabe_Street.Text:='';
Edt_Eingabe_PLZ.Text:='00000';
Edt_Eingabe_AIM.Text:='';
Edt_Eingabe_ICQ.Text:='';
Edt_Eingabe_Mail_1.Text:='';
Edt_Eingabe_Mail_2.Text:='';
Edt_Eingabe_MSN.Text:='';
Edt_Eingabe_WWW.Text:='';
Edt_Eingabe_Yahoo.Text:='';
Edt_Eingabe_Telefon_Mobil.Text:='0';
Edt_Eingabe_Telefon_Privat.Text:='0';
Edt_Eingabe_Telefon_Arbeit.Text:='0';
end;

end.

Unit_Save
Delphi-Quellcode:
unit Unit_Save;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IniFiles;

type
  TForm2 = class(TForm)
  procedure save;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation
uses Unit_Variablen;
{$R *.dfm}

procedure TForm2.save;
begin
        // Das Array in die SpeichernDatei schreiben
                // Größe der SpeicherDatei abfragen
                        FileMode:=0;           // Datei wird nur mit LeseBerechtigung geöffnet
                        Reset(Unit_Variablen.Datei);
                        Unit_Variablen.SpeichernDatei_Size:=FileSize(Unit_Variablen.Datei);
                        CloseFile(Unit_Variablen.Datei);
                // Wird ein Eintrag hinzugefügt oder geändert?
                        If Unit_Variablen.Speichern_New=true
                                then
                                        begin
                                                // Ans Ende der Datei gehen
                                                        FileMode:=1;           // Datei wird nur mit SchreibeBerechtigung geöffnet
                                                        Reset(Unit_Variablen.Datei);
                                                        seek(Unit_Variablen.Datei,Unit_Variablen.Datensatz.vID-1);
                                        end
                                else
                                        begin
                                                // An die entsprechende Position in der Datei gehen
                                                        FileMode:=1;           // Datei wird nur mit SchreibeBerechtigung geöffnet
                                                        Reset(Unit_Variablen.Datei);
                                                        seek(Unit_Variablen.Datei,Unit_Variablen.SpeichernDatei_ID-1);
                                        end;
                // Dateien eintragen & Datei schließen
                        write(Unit_Variablen.Datei,Unit_Variablen.Datensatz);
                        CloseFile(Unit_Variablen.Datei);
                // SpeichernDatei prüfen
                        FileMode:=0;           // Datei wird nur mit LeseBerechtigung geöffnet
                        Reset(Unit_Variablen.Datei);
                        Unit_Variablen.SpeichernDatei_Size_Con:=FileSize(Unit_Variablen.Datei);
                        CloseFile(Unit_Variablen.Datei);
                // Wurde ein Datensatz geändert oder Hinzugefügt?
                        If Unit_Variablen.Speichern_New=true
                                then
                                        begin
                                                // Wurde die Datei erfolgreich gespeichert?
                                                        If (Unit_Variablen.SpeichernDatei_Size=Unit_Variablen.SpeichernDatei_Size_Con) or (Unit_Variablen.SpeichernDatei_Size>Unit_Variablen.SpeichernDatei_Size_Con)
                                                                then
                                                                        begin
                                                                                // Nein die Daten wurden nicht gespeichert
                                                                                        Unit_Variablen.SpeichernDatei_Size_Check:=false;
                                                                                        Application.MessageBox(Pchar(ini_lang_Save_Done_no),Pchar(ini_lang_Save_Done_no2),MB_OK);
                                                                        end
                                                                else
                                                                        begin
                                                                                // Ja die Daten wurden erfolgreich gespeichert
                                                                                        Application.MessageBox(Pchar(ini_lang_Save_Done_yes),Pchar(ini_lang_Save_Done_yes2),MB_OK);
                                                                                        Unit_Variablen.SpeichernDatei_Size_Check:=true;
                                                                        end;
                                        end
                                else
                                        begin
                                                // Ja die Daten wurden erfolgreich gespeichert
                                                        Application.MessageBox(Pchar(ini_lang_Save_Done_yes),Pchar(ini_lang_Save_Done_yes2),MB_OK);
                                                        Unit_Variablen.SpeichernDatei_Size_Check:=true;
                                        end;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
        // Sprachdateien abrufen
                Unit_Variablen.ini_lang_Save:=TIniFile.Create(Unit_Variablen.DirtoExe+Unit_Variablen.ini_lang_dir+Unit_Variablen.ini_lang+'/'+Unit_Variablen.ini_lang_Save_Name);
                        Unit_Variablen.ini_lang_Save_Done_yes:=Unit_Variablen.ini_lang_Save.ReadString('MsgBoxs','ini_lang_Save_Done_yes','');
                        Unit_Variablen.ini_lang_Save_Done_no:=Unit_Variablen.ini_lang_Save.ReadString('MsgBoxs','ini_lang_Save_Done_no','');
                        Unit_Variablen.ini_lang_Save_Done_yes2:=Unit_Variablen.ini_lang_Save.ReadString('MsgBoxs','ini_lang_Save_Done_yes2','');
                        Unit_Variablen.ini_lang_Save_Done_no2:=Unit_Variablen.ini_lang_Save.ReadString('MsgBoxs','ini_lang_Save_Done_no2','');
                Unit_Variablen.ini_lang_Save.free;
end;

end.

Unit_Adress_Edit
Delphi-Quellcode:
unit Unit_Adress_Edit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,IniFiles;

type
  TFrm_Adress_Edit = class(TForm)
    Btn_Action_Search: TButton;
    Btn_Action_Clear: TButton;
    Btn_Action_Save: TButton;
    Pan_Neu: TPanel;
    Lbl_Anzeige_ICQ: TLabel;
    Lbl_Anzeige_Mail_1: TLabel;
    Lbl_Anzeige_Mail_2: TLabel;
    Lbl_Anzeige_AIM: TLabel;
    Lbl_Anzeige_Yahoo: TLabel;
    Lbl_Anzeige_MSN: TLabel;
    Lbl_Anzeige_WWW: TLabel;
    Edt_Eingabe_Mail_1: TEdit;
    Edt_Eingabe_Mail_2: TEdit;
    Edt_Eingabe_WWW: TEdit;
    Edt_Eingabe_ICQ: TEdit;
    Edt_Eingabe_MSN: TEdit;
    Edt_Eingabe_Yahoo: TEdit;
    Edt_Eingabe_AIM: TEdit;
    Pan_Standart: TPanel;
    Lbl_Anzeige_ID: TLabel;
    Lbl_Anzeige_Name: TLabel;
    Lbl_Anzeige_Vorname: TLabel;
    Lbl_Anzeige_Fax: TLabel;
    Lbl_Anzeige_Telefon_Arbeit: TLabel;
    Lbl_Anzeige_Telefon_Mobil: TLabel;
    Lbl_Anzeige_Street: TLabel;
    Lbl_Anzeige_Telefon_Privat: TLabel;
    Lbl_Anzeige_Land: TLabel;
    Lbl_Anzeige_PLZ: TLabel;
    Lbl_Anzeige_Stadt: TLabel;
    Lbl_Anzeige_Hausnummer: TLabel;
    Lbl_Ausgabe_ID: TLabel;
    Edt_Eingabe_Name: TEdit;
    Edt_Eingabe_Hausnummer: TEdit;
    Edt_Eingabe_PLZ: TEdit;
    Edt_Eingabe_Stadt: TEdit;
    Edt_Eingabe_Land: TEdit;
    Edt_Eingabe_Telefon_Privat: TEdit;
    Edt_Eingabe_Telefon_Mobil: TEdit;
    Edt_Eingabe_Telefon_Arbeit: TEdit;
    Edt_Eingabe_Fax: TEdit;
    Edt_Eingabe_Vorname: TEdit;
    Edt_Eingabe_Street: TEdit;
    Edt_Eingabe_ID: TEdit;
    procedure Btn_Action_ClearClick(Sender: TObject);
    procedure Btn_Action_SaveClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Btn_Action_SearchClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Frm_Adress_Edit: TFrm_Adress_Edit;
  ID:Integer;
  Name:String;
  Vorname:String;
  Street:String;
  Hausnummer:String;
  PLZ:Integer;
  Stadt:String;
  Land:String;
  Telefon_Mobil:Integer;
  Telefon_Privat:Integer;
  Telefon_Arbeit:Integer;
  Fax:Integer;
  Mail_1:String;
  Mail_2:String;
  www:String;
  ICQ:String;
  MSN:String;
  AIM:String;
  Yahoo:String;
  Delete:boolean;
  DateiSizeCon:Integer;
  Fehler:Integer;
  EingabeFalsch1,EingabeFalsch2,SpeichernFalsch1,SpeichernFalsch2,Name_m,Vorname_m,PLZ_m,Tel_Mobil,Tel_Arbeit,Tel_Privat,Fax_m:String;
  ID_1,ID_2,ID_3,KeineDaten:String;

implementation
uses Unit_Variablen,Unit_Load,Unit_Save;
{$R *.dfm}

procedure TFrm_Adress_Edit.Btn_Action_ClearClick(Sender: TObject);
begin
// Felder leeren
        Edt_Eingabe_Fax.Clear;
        Edt_Eingabe_Hausnummer.Clear;
        Edt_Eingabe_Land.Clear;
        Edt_Eingabe_Name.Clear;
        Edt_Eingabe_PLZ.Clear;
        Edt_Eingabe_Stadt.Clear;
        Edt_Eingabe_Street.Clear;
        Edt_Eingabe_Telefon_Arbeit.Clear;
        Edt_Eingabe_Telefon_Mobil.Clear;
        Edt_Eingabe_Telefon_Privat.Clear;
        Edt_Eingabe_Vorname.Clear;
        Edt_Eingabe_AIM.Clear;
        Edt_Eingabe_ICQ.Clear;
        Edt_Eingabe_Mail_1.Clear;
        Edt_Eingabe_Mail_2.Clear;
        Edt_Eingabe_MSN.Clear;
        Edt_Eingabe_WWW.Clear;
        Edt_Eingabe_Yahoo.Clear;
end;

procedure TFrm_Adress_Edit.Btn_Action_SaveClick(Sender: TObject);
begin
// Eingaben abrufen
                ID:=Unit_Variablen.SpeichernDatei_Number;
                Name:=Edt_Eingabe_Name.Text;
                if Name=''
                        then
                                begin
                                        Fehler:=1;
                                        Application.MessageBox(Pchar(Name_m),Pchar(EingabeFalsch2),MB_OK);
                                end;
                Vorname:=Edt_Eingabe_Vorname.Text;
                if Vorname=''
                        then
                                begin
                                        Fehler:=1;
                                        Application.MessageBox(Pchar(Vorname_m),Pchar(EingabeFalsch2),MB_OK);
                                end;
                Street:=Edt_Eingabe_Street.Text;
                if Street=''
                        then
                                Street:='0';
                Hausnummer:=Edt_Eingabe_Hausnummer.Text;
                if Hausnummer=''
                        then
                                Hausnummer:='0';
                try
                        PLZ:=strtoint(Edt_Eingabe_PLZ.Text);
                except
                        Application.MessageBox(Pchar(PLZ_m),Pchar(EingabeFalsch2),MB_OK);
                        Fehler:=1;
                end;
                Stadt:=Edt_Eingabe_Stadt.Text;
                if Stadt=''
                        then
                                Stadt:='0';
                Land:=Edt_Eingabe_Land.Text;
                if Land=''
                        then
                                Land:='0';
                try
                        Telefon_Mobil:=strtoint(Edt_Eingabe_Telefon_Mobil.Text);
                except
                        Application.MessageBox(Pchar(Tel_Mobil),Pchar(EingabeFalsch2),MB_OK);
                        Fehler:=1;
                end;
                try
                        Telefon_Privat:=strtoint(Edt_Eingabe_Telefon_Privat.Text);
                except
                        Application.MessageBox(Pchar(Tel_Privat),Pchar(EingabeFalsch2),MB_OK);
                        Fehler:=1;
                end;
                try
                        Telefon_Arbeit:=strtoint(Edt_Eingabe_Telefon_Arbeit.Text);
                except
                        Application.MessageBox(Pchar(Tel_Arbeit),Pchar(EingabeFalsch2),MB_OK);
                        Fehler:=1;
                end;
                try
                        Fax:=strtoint(Edt_Eingabe_Fax.Text);
                except
                        Application.MessageBox(Pchar(Fax_m),Pchar(EingabeFalsch2),MB_OK);
                        Fehler:=1;
                end;
                Mail_1:=Edt_Eingabe_Mail_1.Text;
                if Mail_1=''
                        then
                                Mail_1:='0';
                Mail_2:=Edt_Eingabe_Mail_2.Text;
                if Mail_2=''
                        then
                                Mail_2:='0';
                www:=Edt_Eingabe_WWW.Text;
                if www=''
                        then
                                www:='0';
                ICQ:=Edt_Eingabe_ICQ.Text;
                if ICQ=''
                        then
                                ICQ:='0'
                        else
                                begin
                                        // Bindestriche entfernen
                                                ICQ :=StringReplace(ICQ, '-', '', [ rfReplaceAll ]);
                                end;
                MSN:=Edt_Eingabe_MSN.Text;
                if MSN=''
                        then
                                MSN:='0';
                AIM:=Edt_Eingabe_AIM.Text;
                if AIM=''
                        then
                                AIM:='0';
                Yahoo:=Edt_Eingabe_Yahoo.Text;
                if Yahoo=''
                        then
                                Yahoo:='0';
                Delete:=false;
        // Daten ins Array schreiben
                Unit_Variablen.Datensatz.vID:=ID;
                Unit_Variablen.Datensatz.vName:=Name;
                Unit_Variablen.Datensatz.vVorname:=Vorname;
                Unit_Variablen.Datensatz.vStreet:=Street;
                Unit_Variablen.Datensatz.vHausnummer:=Hausnummer;
                Unit_Variablen.Datensatz.vPLZ:=PLZ;
                Unit_Variablen.Datensatz.vStadt:=Stadt;
                Unit_Variablen.Datensatz.vLand:=Land;
                Unit_Variablen.Datensatz.vTelefon_Mobil:=Telefon_Mobil;
                Unit_Variablen.Datensatz.vTelefon_Privat:=Telefon_Privat;
                Unit_Variablen.Datensatz.vTelefon_Arbeit:=Telefon_Arbeit;
                Unit_Variablen.Datensatz.vFax:=Fax;
                Unit_Variablen.Datensatz.vMail_1:=Mail_1;
                Unit_Variablen.Datensatz.vMail_2:=Mail_2;
                Unit_Variablen.Datensatz.vMSN:=MSN;
                Unit_Variablen.Datensatz.vwww:=WWW;
                Unit_Variablen.Datensatz.vAIM:=Aim;
                Unit_Variablen.Datensatz.vYahoo:=Yahoo;
                Unit_Variablen.Datensatz.vDelete:=Delete;
        // Alle Eingaben Fehlerfrei
                if Fehler=1
                        then
                                begin
                                        application.MessageBox('Fehlerhafte / Unvollständige Eingabe. Daten wurden nicht gespeichert!','Eingabefehler');
                                        Fehler:=0;
                                end
                        else
                                begin
                                        Unit_Variablen.Speichern_New:=false;
                                        Unit_Save.Form2.save;
                                                // Speichern erfolgreich ?
                                                        if Unit_Variablen.SpeichernDatei_Size_Check=true
                                                                then
                                                                        begin
                                                                                inc(Unit_Variablen.SpeichernDatei_Number);
                                                                                Lbl_Ausgabe_ID.Caption:=inttostr(Unit_Variablen.SpeichernDatei_Number);
                                                                                Unit_Variablen.SpeichernDatei_Size_Check:=false;
                                                                                Btn_Action_Clear.Click;
                                                                                Btn_Action_Save.Visible:=false;
                                                                                Btn_Action_Search.Visible:=true;
                                                                                Edt_Eingabe_ID.Visible:=true;
                                                                                Lbl_Ausgabe_ID.Visible:=false;
                                                                        end
                                                                else
                                                                        begin

                                                                        end;
                                end;
end;

procedure TFrm_Adress_Edit.FormCreate(Sender: TObject);
begin
        // Sprachdateien abrufen
                Unit_Variablen.ini_lang_Adress_Edit:=TIniFile.Create(Unit_Variablen.DirtoExe+Unit_Variablen.ini_lang_dir+Unit_Variablen.ini_lang+'/'+Unit_Variablen.ini_lang_Adress_Edit_Name);
                        Btn_Action_Clear.Caption:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('Buttens','Btn_Action_Clear','');
                        Btn_Action_Save.Caption:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('Buttens','Btn_Action_Save','');
                        Btn_Action_Search.Caption:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('Buttens','Btn_Action_Search','');
                        Lbl_Anzeige_Hausnummer.Caption:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('Labels','Lbl_Anzeige_Hausnummer','');
                        Lbl_Anzeige_Land.Caption:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('Labels','Lbl_Anzeige_Land','');
                        Lbl_Anzeige_Name.Caption:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('Labels','Lbl_Anzeige_Name','');
                        Lbl_Anzeige_PLZ.Caption:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('Labels','Lbl_Anzeige_PLZ','');
                        Lbl_Anzeige_Stadt.Caption:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('Labels','Lbl_Anzeige_Stadt','');
                        Lbl_Anzeige_Street.Caption:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('Labels','Lbl_Anzeige_Street','');
                        Lbl_Anzeige_Vorname.Caption:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('Labels','Lbl_Anzeige_Vorname','');
                        Lbl_Anzeige_Telefon_Arbeit.Caption:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('Labels','Lbl_Anzeige_Telefon_Arbeit','');
                        Lbl_Anzeige_Telefon_Mobil.Caption:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('Labels','Lbl_Anzeige_Telefon_Mobil','');
                        Lbl_Anzeige_Telefon_Privat.Caption:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('Labels','Lbl_Anzeige_Telefon_Privat','');
                        EingabeFalsch1:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('MsgBoxs','EingabeFalsch1','');
                        EingabeFalsch2:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('MsgBoxs','EingabeFalsch2','');
                        SpeichernFalsch1:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('MsgBoxs','SpeichernFalsch1','');
                        SpeichernFalsch2:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('MsgBoxs','SpeichernFalsch2','');
                        Name_m:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('MsgBoxs','Name','');
                        Vorname_m:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('MsgBoxs','Vorname','');
                        PLZ_m:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('MsgBoxs','PLZ','');
                        Tel_Mobil:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('MsgBoxs','Tel_Mobil','');
                        Tel_Privat:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('MsgBoxs','Tel_Privat','');
                        Tel_Arbeit:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('MsgBoxs','Tel_Arbeit','');
                        Fax_m:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('MsgBoxs','Fax','');
                        ID_1:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('MsgBoxs','ID_1','');
                        ID_2:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('MsgBoxs','ID_2','');
                        ID_3:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('MsgBoxs','ID_3','');
                        KeineDaten:=Unit_Variablen.ini_lang_Adress_Edit.ReadString('MsgBoxs','KeineDaten','');
                Unit_Variablen.ini_lang_Adress_Edit.free;
end;

procedure TFrm_Adress_Edit.Btn_Action_SearchClick(Sender: TObject);
var
Text:String;
begin
        // Sind Einträge in der Datei vorhanden
                if Unit_Variablen.SpeichernDatei_Number < 2
                        then
                                begin
                                        // FehlerNachricht ausgeben
                                                application.MessageBox(Pchar(KeineDaten),Pchar(SpeichernFalsch2),MB_OK)
                                end
                        else
                                begin
                                        // Eingegebene ID Abrufen
                                                Unit_Variablen.SpeichernDatei_ID:=strtoint(Edt_Eingabe_ID.Text);
                                        // Ist die ID < 1 oder > als die gesammte Anzahl Einträge
                                                if (Unit_Variablen.SpeichernDatei_ID < 1) or (Unit_Variablen.SpeichernDatei_ID > Unit_Variablen.SpeichernDatei_Number)
                                                        then
                                                                begin
                                                                        //FehlerNachricht ausgeben
                                                                                Text:=ID_1+#10#13+ID_2+' '+inttostr(Unit_Variablen.SpeichernDatei_Number-1)+' '+ID_3;
                                                                                        application.MessageBox(pchar(Text), Pchar(EingabeFalsch2), MB_OK);
                                                                end
                                                        else
                                                                begin
                                                                        // LadenDatei aussführen
                                                                                Unit_Load.Form3.load;
                                                                        // Alles in die Felder schreiben
                                                                                // Daten aus dem Array in die Variablen übertragen
                                                                                        ID:=Unit_Variablen.Datensatz.vID;
                                                                                        Name:=Unit_Variablen.Datensatz.vName;
                                                                                        Vorname:=Unit_Variablen.Datensatz.vVorname;
                                                                                        Street:=Unit_Variablen.Datensatz.vStreet;
                                                                                        Hausnummer:=Unit_Variablen.Datensatz.vHausnummer;
                                                                                        PLZ:=Unit_Variablen.Datensatz.vPLZ;
                                                                                        Stadt:=Unit_Variablen.Datensatz.vStadt;
                                                                                        Land:=Unit_Variablen.Datensatz.vLand;
                                                                                        Telefon_Mobil:=Unit_Variablen.Datensatz.vTelefon_Mobil;
                                                                                        Telefon_Privat:=Unit_Variablen.Datensatz.vTelefon_Privat;
                                                                                        Telefon_Arbeit:=Unit_Variablen.Datensatz.vTelefon_Arbeit;
                                                                                        Fax:=Unit_Variablen.Datensatz.vFax;
                                                                                        Mail_1:=Unit_Variablen.Datensatz.vMail_1;
                                                                                        Mail_2:=Unit_Variablen.Datensatz.vMail_2;
                                                                                        MSN:=Unit_Variablen.Datensatz.vMSN;
                                                                                        WWW:=Unit_Variablen.Datensatz.vwww;
                                                                                        Aim:=Unit_Variablen.Datensatz.vAIM;
                                                                                        Yahoo:=Unit_Variablen.Datensatz.vYahoo;
                                                                                        Delete:=Unit_Variablen.Datensatz.vDelete;
                                                                                // Daten in die Felder schreiben
                                                                                        Lbl_Ausgabe_ID.Caption:=inttostr(ID);
                                                                                        Edt_Eingabe_Hausnummer.Text:=Hausnummer;
                                                                                        Edt_Eingabe_Fax.Text:=inttostr(Fax);
                                                                                        Edt_Eingabe_Land.Text:=Land;
                                                                                        Edt_Eingabe_Name.Text:=Name;
                                                                                        Edt_Eingabe_PLZ.Text:=inttostr(PLZ);
                                                                                        Edt_Eingabe_Stadt.Text:=Stadt;
                                                                                        Edt_Eingabe_Street.Text:=Street;
                                                                                        Edt_Eingabe_Vorname.Text:=Vorname;
                                                                                        Edt_Eingabe_Telefon_Arbeit.Text:=inttostr(Telefon_Arbeit);
                                                                                        Edt_Eingabe_Telefon_Mobil.Text:=inttostr(Telefon_Mobil);
                                                                                        Edt_Eingabe_Telefon_Privat.Text:=inttostr(Telefon_Privat);
                                                                                        Edt_Eingabe_AIM.Text:=AIM;
                                                                                        Edt_Eingabe_ICQ.Text:=ICQ;
                                                                                        Edt_Eingabe_Mail_1.Text:=Mail_1;
                                                                                        Edt_Eingabe_Mail_2.Text:=Mail_2;
                                                                                        Edt_Eingabe_MSN.Text:=MSN;
                                                                                        Edt_Eingabe_WWW.Text:=WWW;
                                                                                        Edt_Eingabe_Yahoo.Text:=Yahoo;
                                                                                // Buttens wechseln
                                                                                        Btn_Action_Search.Visible:=false;
                                                                                        Btn_Action_Save.Visible:=True;
                                                                                        Edt_Eingabe_ID.Visible:=false;
                                                                                        Lbl_Ausgabe_ID.Visible:=true;
                                                                end;
                                end;
end;

end.

Unit_Load
Delphi-Quellcode:
unit Unit_Load;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,IniFiles;

type
  TForm3 = class(TForm)
  procedure load;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;
  Fehler1,Fehler2:String;
implementation
uses Unit_Variablen;
{$R *.dfm}
procedure TForm3.load;
begin
        try
                // Datensatz auslesen und ins Array schreiben
                        // Zeiger vor den richtigen Eintrag setzen
                                FileMode:=0;           // Datei wird nur mit LeseBerechtigung geöffnet
                                Reset(Unit_Variablen.Datei);
                                seek(Unit_Variablen.Datei, Unit_Variablen.SpeichernDatei_ID-1);
                        // Datensatz lesen & Datei schließen
                                read(Unit_Variablen.Datei,Unit_Variablen.Datensatz);
                                CloseFile(Unit_Variablen.Datei);
        except
                application.MessageBox(Pchar(Fehler1),Pchar(Fehler2) ,MB_OK);
        end;
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
        // Sprachdateien abrufen
                Unit_Variablen.ini_lang_Load:=TIniFile.Create(Unit_Variablen.DirtoExe+Unit_Variablen.ini_lang_dir+Unit_Variablen.ini_lang+'/'+Unit_Variablen.ini_lang_Load_Name);
                        Fehler1:=Unit_Variablen.ini_lang_Load.ReadString('MsgBoxs','Fehler1','');
                        Fehler2:=Unit_Variablen.ini_lang_Load.ReadString('MsgBoxs','Fehler2','');
                Unit_Variablen.ini_lang_Load.free;
end;
end.

Ich hoffe, ich habe nichts vergessen.

DP-Maintenance 23. Mai 2008 06:42

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Projekte" nach "Sonstige Fragen zu Delphi" verschoben.
Ist ja kein gemeinsams Projekt.

Sharky 23. Mai 2008 06:43

Re: Brauche Hilfe bei einer Adressverwaltung
 
Hai Newbi,

hänge den Quellcode doch bitte als Anhang an dein Posting. Bei so vielen Zeilen scrollt man sich ja die Flossen wund.

Danke.

Newbi 23. Mai 2008 06:46

Re: Brauche Hilfe bei einer Adressverwaltung
 
Wenn du zum Runterladen meinst, dann schau bitte einma aufs erste Posting.

Das ich den Code so einstelle, wurde von einem Post vor dir gewünscht.

Klaus01 23. Mai 2008 07:21

Re: Brauche Hilfe bei einer Adressverwaltung
 
Delphi-Quellcode:
    seek(Unit_Variablen.Datei,Unit_Variablen.Datensatz.vID-1);
  end
else
  begin  // hier einen Haltepunkt setzen
     // An die entsprechende Position in der Datei gehen
    FileMode:=1;           // Datei wird nur mit SchreibeBerechtigung geöffnet
    Reset(Unit_Variablen.Datei);
    seek(Unit_Variablen.Datei,Unit_Variablen.SpeichernDatei_ID-1); // die Variable SpeichernDatei_ID auf ihren Wert überprüfen
  end;
Guten Morgen,

füge doch mal einen Haltepunkt ein
und überprüfe die Variable Unit_Variablen.SpeichernDatei_ID auf ihren Wert.
Dazu die Variable markieren und ctrl+F5 drücken.

Dann möchte ich Dir noch ein Tutorial zum debuggen ans Herz legen.

Grüße
Klaus

Luckie 23. Mai 2008 07:46

Re: Brauche Hilfe bei einer Adressverwaltung
 
Zitat:

Zitat von Newbi
Das ich den Code so einstelle, wurde von einem Post vor dir gewünscht.

Ja aber nur den relevanten Teil.

Desweiteren ist dein Programmstil absolut grausam. So viele globale Variablen habe ich schon lange nicht mher gesehen. Desweiteren macht deine Code-Formatierung den Code nahezu unlesbar.

Mein Tipp mach aus den Adressdaten erstmal einen Record, dann sieht das ganze schon viel übersichtlicher aus.

Newbi 23. Mai 2008 07:48

Re: Brauche Hilfe bei einer Adressverwaltung
 
Danke schonmal, Tut werde ich lesen und das mit dem Haltepunkt nachher ausprobieren.
Der Record und alles ist schon vorhanden. :)

Datensatz:TAdressen; // SpeichernDatei
Datei:File of TAdressen; // DateiVariable

Luckie 23. Mai 2008 07:58

Re: Brauche Hilfe bei einer Adressverwaltung
 
Und was sind das für tausend globale Variablen?

Newbi 23. Mai 2008 21:34

Re: Brauche Hilfe bei einer Adressverwaltung
 
Kein Butten oder Label hat einen Text, zumindest nicht, solange das Programm noch nicht gespeichert ist.

Anhand der Sprachwahl werden alle TextElemente aus IniDateien ausgelesen.

Deshalb diese doch recht große Anzahl an Variablen.

Ich habe angesprochenes tut nun ein wenig gelesen, nein noch net alles.
Das mit dem HaltePunkt habe ich probiert, jedoch ist der Angezeigte Wert korrekt, er müsse also an der richtigen Position speichern,
was das Programm aber nicht tut.

Luckie 23. Mai 2008 21:44

Re: Brauche Hilfe bei einer Adressverwaltung
 
Ich habe in deinem Code, den Record immer noch nicht gefunden, aber er darf keine AnsiStringsenthalten, sondern nur ShortStrings. Bei AnsiStrings speicherst du nämlich immer nur den Zeiger in der Datei ab, oder sonstigen Müll; ebendso beim lesen dann wieder.

Newbi 23. Mai 2008 21:50

Re: Brauche Hilfe bei einer Adressverwaltung
 
Delphi-Quellcode:
  TAdressen=record
                vID:Integer;
                vName:String[255];
                vVorname:String[255];
                vStreet:String[255];
                vHausnummer:String[255];
                vPLZ:Integer;
                vStadt:String[255];
                vLand:String[255];
                vTelefon_Mobil:Integer;
                vTelefon_Privat:Integer;
                vTelefon_Arbeit:Integer;
                vFax:Integer;
                vMail_1:String[255];
                vMail_2:String[255];
                vwww:String[255];
                vICQ:String[11];
                vMSN:String[255];
                vAIM:String[255];
                vYahoo:String[255];
                vDelete:boolean;

Das ist der Record

grenzgaenger 24. Mai 2008 08:33

Re: Brauche Hilfe bei einer Adressverwaltung
 
aber jetzt sag uns doch mal, welches problem du hast <glaskugel reib> :freak:

<OT>Daniel, wir brauchen ein neues Smiley, 'ne Glaskugel</OT>

marabu 24. Mai 2008 08:58

Re: Brauche Hilfe bei einer Adressverwaltung
 
Moin,

Zitat:

Zitat von Newbi
... Ich Speichere einen Datensatz ..., diesen ändere ich nun und speichere ihn wieder ..., hierbei setzt er aber den Datensatz ans Ende der Datei und überschreibt nicht den anderen, was er eigentlich soll. ...

mit viel Einfühlungsvermögen unterstelle ich jetzt: Das Ändern eines Datensatzes versuchst du, indem du im Eingabefeld ID die Nummer des zuvor gespeicherten Datensatzes eingibst. Das ist zwar keine schöne Benutzerschnittstelle, aber sie könnte unter gewissen Randbedingungen funktionieren, wäre da nicht die Tatsache, dass du den eingebebenen ID-Wert garnicht berücksichtigst:

Delphi-Quellcode:
procedure TFrm_Adress_Edit.Btn_Action_SaveClick(Sender: TObject);
begin
  // Eingaben abrufen
  ID := Unit_Variablen.SpeichernDatei_Number;
// ...
An anderen Stellen im Web hast du geschrieben, dass dies eine besondere Lernleistung von dir werden soll, mit der du deine Note aufbessern möchtest. Du steckst da viel Zeit rein, aber ich fürchte, dass da ein Konzept fehlt. Mag sein, dass dein Lehrer auch keines hat, aber unterstellen solltest du das nicht. Bevor du weiter Unmengen an redundantem Quellcode erzeugst: Frage deinen Lehrer nach Bewertungsrichtlinien, Merkblättern, Anleitungen. Wäre doch schade, wenn du am Ende mit leeren Händen da stehst.

Du wirst dein Projekt wahrscheinlich in einer Präsentation vorstellen müssen. Dabei stellst du zuerst dein Konzept vor und dann zeigst du deine Umsetzung. Beim Konzeptteil musst du nur die Erwartungshaltung der Gutachter etwas übertreffen um Erfolg zu haben. Bei der Umsetzung kommt es auf die Qualifikation und das Urteilsvermögen der Gutachter (Lehrer) an. Du erkennst jetzt vielleicht, dass du den Erfolg nicht unbedingt über Komplexität herbeizwingen kannst. Du musst zielgruppenorientiert vorgehen.

Vielleicht hast du ja all diese Dinge bereits bedacht - dann ignoriere meine Worte einfach.

Grüße vom marabu

Newbi 24. Mai 2008 14:02

Re: Brauche Hilfe bei einer Adressverwaltung
 
Hallo Marabu.

Ja das ist richtig. Es handelt sich um ein Schulprojekt.

Naja Note aufbessern ist etwas übertrieben um im Zeugnis 15 Punkte zu bekommen, muss ich 4 Sachen erfüllen. 1) Teilnahme am Unterricht und Hausaufgaben machen. 2) In beiden Klausuren 15 Punkte schreiben. 3) Wenn ich fertig meinen Klassenkameraden helfen. 4) Ein Projekt abgeben, was er sich anschaut.

Das Projekt vorstellen soll ich nicht. Der Code wird von ihm nur 2 Rangig beachtet, es geht darumm dass es funktioniert.

Du außerdem mit deiner Unterstellung recht.

Im record hat zwar jede eingabe auch eine ID, diese ist wird aber erst später eine Bedeutung haben. Das abrufen des Datensatzes, um diesen zu ändern erfolgt aus einer Typisierten Datei.

Die ID stellt hierbei die Zeile da, welche abgerufen und an die Felder übergeben wird da. (Vorm abruff wird von der ID 1 abgezogen.)

Ich konnte anhand des Haltepunktes feststellen, das der richtige Wert zum speichern vorhanden ist, die Zeile wird aber weder Überschrieben noch sonst etwas gemacht, er (das Programm) nimt einfach den geänderten Datensatz und speichert diesen ans Ende.


Weitere Fehlermeldungen:
Wenn ich einen Datensatz speicher und diesen ohne neustart des Programmes ändern will kommt: "Komponente mit der Bezeichnung ... existiert bereits."

grenzgaenger 24. Mai 2008 14:29

Re: Brauche Hilfe bei einer Adressverwaltung
 
musst du denn mit 'ner typisierten datei arbeiten? ansonsten würd ich dir raten, eine datenbank zu verwenden, wird übersichtlicher und die DB kümmert sich drum, dass deine daten konsistent sind.

btw: bei 'ner typisierten datei, wenn du 'n record überschreiben möchtest musst du erst mit seek positionieren.

PS: ausserdem würd ich dir raten den code mal ordentlich zu formatieren. zum einen erleichtert es die übersicht und zweiten findest du deine fehler schneller :-)

Newbi 24. Mai 2008 21:27

Re: Brauche Hilfe bei einer Adressverwaltung
 
Ja es muss eine Typisierte Datei sein, einzige vorgabe des Lehrers.

Inwiefern soll ich meinen Code anpassen.

Entschuldigt, aber bisher haben sich die meisten nur über die art meines Codes aufgeregt, ich persöhnlich finde ihn so am besten.

Es ging darum den Fehler zu finden, net den CodeStil zu erläutern.

Ich will euch nicht kritisieren oder so, ich finde es toll das ihr helfen wollt, aber naja, bisher haben sich nur wenige mit dem Eigentich Thema des Threades befasst.

Newbi 25. Mai 2008 11:32

Re: Brauche Hilfe bei einer Adressverwaltung
 
So habe das Problem anscheind doch selber gelöst bekommen.

Ich habe alle Integer Werte entfernt und nun scheint es einwandfrei zu funktionieren.


Das Komponente schon vorhanden Problem ist aber immernoch da.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz