Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Adressbuch speichern und laden (https://www.delphipraxis.net/155292-adressbuch-speichern-und-laden.html)

Rob.BloodWorks 16. Okt 2010 20:41


Adressbuch speichern und laden
 
Hallo,
ich fang gerade mit delphi an und bastel mir erst mal ein adressbuch.funktioniert auch alles soweit außer das speichern und laden.Ich hab schon in delphi büchern und im internet geguckt aber finde nix:cry:
und wollt mal fragen ob mir einer von euch helfen kann.
hier der code:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, ToolWin, FileCtrl, jpeg, ExtDlgs;

type PersonID = Record
                Nachname, Vorname: string [50];
                Strasse:          string [70];
                PLZ:              String [6 ];
                Ort:              string [30];
                Geburtstag:       string [10];
                Telefonnummer:    string [30];
                Handynummer:      string [40];
                EMail:            string [60];
                Geschlecht:       string [8 ];
end;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button3: TButton;
    Button5: TButton;
    Button7: TButton;
    Button9: TButton;
    Button11: TButton;
    Button16: TButton;
    Panel1: TPanel;
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Button17: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Label11: TLabel;
    Label12: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Button2: TButton;
    Edit11: TEdit;
    Label13: TLabel;
    Button4: TButton;
    Button6: TButton;
    Button8: TButton;
    Button10: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    Panel2: TPanel;
    Label14: TLabel;
    Button18: TButton;
    Button19: TButton;
    OpenPictureDialog1: TOpenPictureDialog;
    Button20: TButton;
    SaveDialog1: TSaveDialog;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Label3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button20Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure Button19Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var Person: PersonID;
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
color:=clred;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
color:=clgreen;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
color:=clblue;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
color:=clblack;
end;

procedure TForm1.Button16Click(Sender: TObject);
begin
color:=clyellow;
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
color:=clgray;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
color:=clwhite;
end;

procedure TForm1.Button17Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Label3Click(Sender: TObject);
begin
color:=clwhite;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
color:=clsilver;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
color:=clmaroon;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
color:=clnavy;
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
color:=clpurple;
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
color:=clmoneygreen;
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
color:=clolive;
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
color:=clfuchsia;
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
color:=claqua;
end;

procedure TForm1.Button15Click(Sender: TObject);
begin
color:=clteal;
end;

procedure TForm1.Button20Click(Sender: TObject);
var open :TOpenPictureDialog;
begin
   try
     open := TOpenPictureDialog.Create(self);
     open.InitialDir := ExtractFilePath(Application.ExeName);
    IF open.Execute THEN
       image1.picture.loadfromfile(open.filename);
   finally
    open.Free;
   end;
end;

procedure TForm1.Button18Click(Sender: TObject);
begin
        if SaveDialog1.Execute then
begin
 if FileExists(SaveDialog1.FileName)Then
  if MessageDlg('The File'+ SaveDialog1.FileName
     +'already exists. Overwrite?',
     mtConfirmation,[mbYes, mbNo],0)<> mrYes Then
    Exit;


end;

end;

procedure TForm1.Button19Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
     TRY
       OpenDialog1.Filename;
     EXCEPT
       ShowMessage ('Fehler beim Laden der Datei!');

     END;
    end;

end.
Danke schon mal an alle die mir helfen:wink:

Klaus01 16. Okt 2010 20:53

AW: Adressbuch speichern und laden
 
Guten Abend,

worin hälst Du denn Deine Daten?
Ich sehe nirgends, dass Du den Recordtyp PersonID irgendwo verwendest.

Ausserdem wäre es für den Leser hilfreich, wenn Du Deinen Code
in Delphi Tags einschließen würdest.
Delphi Tags bekommst Du, wenn Du das Icon mit dem Römerhelm im Beitrageditor klickst.

Grüße
Klaus

Luckie 16. Okt 2010 21:01

AW: Adressbuch speichern und laden
 
Und bitte poste nur den relevaten Code. Die Schaltflächen 1 bis 9999 haben wohl nicht viel mit dem Sopeichern und Laden zu tun. Desweiteren solltest du den Komponnten einen aussagakräftigen Namen geben.

Rob.BloodWorks 17. Okt 2010 10:07

AW: Adressbuch speichern und laden
 
hi,

danke schon mal für die tipps.

und dann das mit dem record personID is das alles was noch zum speichern fehlt?
und wenn ja könnte einer mit bitte ein beispiel geben wie ich sowas einfüge?

Delphi-Quellcode:
procedure TForm1.Speicher18Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
begin
 if FileExists(SaveDialog1.FileName)Then
  if MessageDlg('The File'+ SaveDialog1.FileName
     +'already exists. Overwrite?',
     mtConfirmation,[mbYes, mbNo],0)<> mrYes Then
    Exit;
end;

end;

procedure TForm1.Laden19Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
     TRY
       OpenDialog1.Filename;
     EXCEPT
       ShowMessage ('Fehler beim Laden der Datei!');

     END;
    end;
danke für weitere hilfe:-D

Klaus01 17. Okt 2010 10:26

AW: Adressbuch speichern und laden
 
Liste der Anhänge anzeigen (Anzahl: 1)
.. nun, so einfach ist es nicht.

Du solltest Dir erst einmal im Klaren sein wie
Du das Adressbuch organisieren willst.
Ein Buch hat mehr als eine Seite - in Deinem Fall also
mehr als eine PersonID (Datensatz).

Wenn Du nur den angezeigten Datensatz speicher willst,
musst Du die entsprechenden Inhalte der Editfelder
in eine Variable vom Typ PersonID schreiben.

Delphi-Quellcode:
type
  TPersonID = packed Record
    Nachname, Vorname: string [50];
    Strasse: string [70];
    PLZ: String [6 ];
    Ort: string [30];
    Geburtstag: string [10];
    Telefonnummer: string [30];
    Handynummer: string [40];
    EMail: string [60];
    Geschlecht: string [8 ];
  end;

var
  PersonIdFile : TFileStream;
  personID : TPersonID;
...
begin
  personID.Vorname := edit1.text;
  personID.Nachname := edit2.text;
  ...
  PersonIdFile := TFileStream.create({Dateiname});
  try
    PersonIdFile.writeBuffer(personID,sizeOf(TPersonID));
  finaly
    PersonIdFile.free;
  end;
end;
(code nicht getestet)

Wenn Du aber wirklich ein Adressbuch erstellen willst,
solltest Du dich ein wenig mit Listen beschäftigen.
- einfach verkettete Listen
- doppelt verkettete Listen
- TList

Was die Pflege des Programms noch erleichtert ist:
- den Klassen, Methoden und Variablen sprechende Namen geben
- Darstellung und Datenhaltung voneinander trennen

Grüße
Klaus

Sir Rufo 17. Okt 2010 10:45

AW: Adressbuch speichern und laden
 
Ich denke mir mal, dass der TE gerade etwas überfordert wird - er ist gerade mit Delphi/Programmieren angefangen.

Der erste Fehler den wohl jeder am Anfang mit einem RAD-System begeht ist das wilde Zusammenklicken von irgendwelchen Controls (Edit, Label, Button, etc.). Das geht schön einfach und sieht schnell ganz toll aus.
Das böse Erwachen kommt, wenn man meint, dass sich auch die weiteren Funktionen so einfach zusammenflicken lassen.
Jetzt sollte hier die Erkenntnis reifen, dass man ja nur die grafische Oberfläche zusammengeklickt hat, mehr nicht. Und das ist ein denkbar schlechter Ansatzpunkt.

Vor jeder Programmierung steht die graue Theorie und die ist völlig unabhängig von der Programmiersprache.

Also sei hier dringen ein Verweis auf die Grundlagen-Tutorials empfohlen.

Rob.BloodWorks 17. Okt 2010 11:45

AW: Adressbuch speichern und laden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi
noch jemand dazu gekommen:-D
frage was ist ein TE?

adressbuch findet er net.
Delphi-Quellcode:
PersonIdFile := TFileStream.create (Adressbuch.dat);
ich häng die daten mal an könnt ihr euch mal angucken:)

Sir Rufo 17. Okt 2010 11:48

AW: Adressbuch speichern und laden
 
TE ist der ThreadErsteller und das bist in diesem Falle du.

Deine aktuelle Frage würdest du nicht stellen, wenn du dir ein Grundlagen-Tutorial antun würdest.
Der Dateiname muss als String übergeben werden


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:27 Uhr.

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