Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Speichern einer Gästeliste! (https://www.delphipraxis.net/62355-speichern-einer-gaesteliste.html)

TbErKeR 3. Feb 2006 12:02


Speichern einer Gästeliste!
 
Hi,ich bin noch ein Delphi Anfänger und hab vorher auch noch nichts mit Programierren am Hut gehabt. Ich hab jetzt folgendes Problem, wir haben in der Schule eine Gästeliste programiert mit einem Array. Jetzt hab ich die Gästeliste zuhause soweit fertig gemacht,nur ein Problem bleibt bestehen, das Abspeichern. Denn im Moment ist es so, man kann alles eintragen und auch die einzelnen Gäste an einer bestimmten Stelle aus der liste wieder löschen nur wenn ich jetzt einen Gästeliste fertig hab und das programm wieder zu mach sind ja auch meine Gäste weg. Also hier meine Frage: Wie kann ich meine Gäste speichern??? :gruebel:

Mfg TbErKeR

Matze 3. Feb 2006 12:13

Re: Allgemeines Problem
 
Hallo,
herzlich willkommen.

Gleich vorweg: Ändere bitte den Beitragstitel in einen aussagekräftigen (Beitrag editieren).

Von welchem Datentyp sind denn die Elemente des Arrays? Sind es normale Strings kannst du das Array in einer for Schleife von Low(ArrayName) bis High(ArrayName) durchgehen und die Einträge entweder direkt in eine Textdatei schreiben oder, was für Anfänger evtl. einfacher ist, über eine Stringlist:

Delphi-Quellcode:
var
  MyArray: array ...
  Guests: TStringList;
  i: integer;

  ...

  Guests := TStringList.Create;
  try
    // Elemente hinzufügen ...
    for i := Low(MyArray) to High(MyArray) do
      Guests.Items.Add(MyArray[i];

    // ... und abspeichern
    Guests.SaveToFile('C:\guests.txt');
  finally
    // Speicher der StringList wieder freigeben
    FreeAndNil(Guests);
  end;
Das Laden geht fast genauso. Routinen zum Hinzufügen hast du ja bereits, die musst du dann eben noch in der Schleife aufrufen.

Ist der Datentyp allerdings komplexer (Record), dann müsstest du uns schon ein wenig Code zeigen.

TbErKeR 3. Feb 2006 12:30

Re: Speichern einer Gästeliste!
 
hi,danke für die schnelle antwort!
es ist ein record!
hier ist der code!
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
   

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
type
     Personendatenbank= Record
     Vorname : string;
     Nachname : string;
     Strasse: string;
     Hn: string;
     PLZ: string;
     Ort: string;
     Tel1: string;
     Tel2: string;
     end;
var
  Form1: TForm1; Name: String; gast: Array [1..50] of Personendatenbank;
  Personendatei: Personendatenbank;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject); var n, index, index2: Integer;
begin
 n:=StrToInt(Edit2.Text);
 ListBox1.Clear;
 gast[StrToInt(Edit2.Text)] .Vorname := (Edit1.Text);
 gast[StrToInt(Edit2.Text)] .Nachname := (Edit7.Text);
 gast[StrToInt(Edit2.Text)] .Strasse := (Edit3.Text);
 gast[StrToInt(Edit2.Text)] .Hn:= (Edit4.Text);
 gast[StrToInt(Edit2.Text)] .PLZ := (Edit5.Text);
 gast[StrToInt(Edit2.Text)] .Ort := (Edit6.Text);
 gast[StrToInt(Edit2.Text)] .Tel1 := (Edit8.Text);
 gast[StrToInt(Edit2.Text)] .Tel2 := (Edit9.Text);
 for index:= 1 TO 50 Do
  begin

   ListBox1.Items.Add(IntToStr(index)+'. '+gast[index] .Vorname + ' --- ' + gast[index] .Nachname + ' --- ' + gast[index] .Strasse + ' ' + gast[index] .Hn + ' --- ' + gast[index] .PLZ + ' --- ' + gast[index] .Ort + ' --- '+ gast[index] .Tel1 + ' / ' + gast[index] .Tel2 + ' ');


end;
  n:=n+1;
  Edit2.Text:=IntToStr(n);

end;

procedure TForm1.Button2Click(Sender: TObject);
var index: Integer;
begin

 ListBox1.Clear;
 gast[StrToInt(Edit2.Text)] .Vorname := '';
 gast[StrToInt(Edit2.Text)] .Nachname := '';
 gast[StrToInt(Edit2.Text)] .Strasse := '';
 gast[StrToInt(Edit2.Text)] .Hn:= '';
 gast[StrToInt(Edit2.Text)] .PLZ := '';
 gast[StrToInt(Edit2.Text)] .Ort := '';
 gast[StrToInt(Edit2.Text)] .Tel1 := '';
 gast[StrToInt(Edit2.Text)] .Tel2 := '';
 for index:= 1 TO 50 Do
  begin

   ListBox1.Items.Add (IntToStr(index)+'. '+gast[index] .Vorname + ' --- ' + gast[index] .Nachname + ' --- ' + gast[index] .Strasse + ' --- ' + gast[index] .Hn + ' --- ' + gast[index] .PLZ + ' --- ' + gast[index] .Ort + ' --- ' + gast[index] .Tel1 + '/' + gast[index] .Tel2 + ' ' );

end;

end;

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

end.
Danke! Mfg TbErKeR

TbErKeR 3. Feb 2006 18:42

Re: Speichern einer Gästeliste!
 
oder gibt es eine funktion bei einem button der speichern kann??

Khabarakh 3. Feb 2006 18:54

Re: Speichern einer Gästeliste!
 
Das wäre dann die ultimative "Klickie-Bunti"-Komponente :lol: .
Das Speichern von AnsiStrings ist nicht ganz trivial, am Besten benutzt du einen Filestream (für Näheres ist die Suche zuständig :wink: ). Wenn du allerdings wenigsten ein bisschen Erfahrung in OOP hast, würde ich an deiner Stelle den Record zu einer Klasse umformen. Dann benötigt Speichern und Laden jeweils eine Codezeile.

TbErKeR 3. Feb 2006 19:05

Re: Speichern einer Gästeliste!
 
hört sich nicht schlecht an mit der einen zeile,jedoch kenn ich mit mit oop nicht aus! hehe!

aber trotzdem danke!

mkinzler 3. Feb 2006 19:16

Re: Speichern einer Gästeliste!
 
Die Eigenschaft Items einer listbox ist vom Typ TStrngs ude besitzt die Methode SaveToFile.
Versuchs mal mit
Delphi-Quellcode:
ListBox1.Items.SaveToFile( 'guesst.txt');
und
Delphi-Quellcode:
ListBox.Items.LoadFromFile('guests.txt');
Dann wird zwar nur der Inhalt der Listbox gesichert, dies ist aber besser als nichts. Besser ist es natürlich, den Inhalt der einzelnen Record zu sichern. Wie lang werden die einzelnen Felder ? Wenn ShortStrings reichen ( <=255 Zeichen) könnte man eine typisierte Datei verwenden.

TbErKeR 3. Feb 2006 20:29

Re: Speichern einer Gästeliste!
 
oooooohhhheeeerrrr,vielen dank es klappt!!!
ist zwar nur die listbox jedoch ist wie du schon sagtest besser wie nichts!

Vielen Dank!
Mfg TbErKeR

Wer noch Lust hat mir zu erklären wie ich dass ganze Programm speicher,soll dies ruhig machen!!! :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:02 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