![]() |
ListView und Textdatei
Hallo,
nachdem ich das Forum durchsucht hatte und Beiträge fand, bei denen auf andere Treads verweist wurde und ich die Lösung für mein Problem nicht rausfiltern konnte frage ich einfach mal. Ich habe eine Form bei Editfeldern und Memos. Die eingetragenen Werte sollen in eine Textdatei geschrieben werden. Die einzelnen Einträge sind durch Simikolons getrennt.
Delphi-Quellcode:
Das klappt soweit ganz gut. Nur was muss ich einfügen, damit bei neuen Einträgen der alte Datensatz nicht überschrieben wird?
procedure TForm_Kundenhinzufuegen.Button1Click(Sender: TObject);
var sl: TStringList; begin sl:=TStringList.Create; //Objekt erzeugen // Objekt wird freigegeben falls Fehler auftreten try // Einträge der Textdatei hinzufügen sl.Add(E_Firma.Text + ';' + E_Nachname.Text + ';' + E_Vorname.Text + ';' + E_Strasse.Text + ';' + E_Plz.Text + ';' + E_Ort.Text + ';' + CB_Land.Text + ';' + E_Telefon.Text + ';' + E_Fax.Text + ';' + E_Mobiltelefon.Text + ';' + E_eMail.Text + ';' + E_Zustaendigkeit.Text + ';' + E_Auslieferungsdatum.Text + ';' + E_Planungsende.Text + ';' + M_Ansprechpartner.Text); //Text hinzufügen sl.SaveToFile(ExtractFilePath(Application.ExeName)+'data\kunden.txt'); //Datei speichern finally sl.free; //Objekt wieder freigeben end; end; Das 2. Problem ist das Auslesen der Daten im ListView. Das bekomme ich garnicht hin. MaM |
Re: ListView und Textdatei
Hallo MaM,
Zitat:
Delphi-Quellcode:
Damit deine gerade erzeugte Datenzeile nicht die zuvor gespeicherte überschreibt, musst du alle Daten im Hauptspeicher halten:
function TForm_Kundenhinzufuegen.NeueZeile: string;
var sl: TStringList; begin sl := TStringList.Create; sl.Delimiter := ';'; sl.Add(E_Firma.Text); ... Result := sl.DelimitedText; sl.Free; end;
Delphi-Quellcode:
Alternativ kannst du die Textdatei einfach fortschreiben:
// Im Hauptspeicher halten
procedure TForm_Kundenhinzufuegen.FormCreate(...); begin slDaten := TStringList.Create; slDaten.LoadFromFile(KundenFileName); end; procedure TForm_Kundenhinzufuegen.FormDestroy(...); begin slDaten.SaveToFile(KundenFileName); slDaten.Free; end; procedure TForm_Kundenhinzufuegen.AppendButtonClick(Sender: TObject); begin slDaten.Add(NeueZeile); end;
Delphi-Quellcode:
Für die Übernahme der Daten in eine ListView stehen dir zwei Techniken zur Verfügung - ich lege dir die virtuelle ListView nahe. Schau mal in der Online-Hilfe unter TListView.OwnerData nach. Wenn du dann noch Fragen hast, hilft dir hier bestimmt jemand.
procedure TForm_Kundenhinzufuegen.AppendButtonClick(Sender: TObject);
begin AssignFile(f, KundenFileName); Append(f) WriteLn(f, NeueZeile); CloseFile(f); end; Grüße vom marabu |
Re: ListView und Textdatei
Ich bekomme als Fehlermeldung: Undefinierter Bezeichner: Delimiter.
Liegt das an der Sofware-Version? MaM |
Re: ListView und Textdatei
Allerdings - tut mir leid.
Musst du denn das Semikolon verwenden? Wenn du auf Komma umsteigst, dann kannst du so arbeiten:
Delphi-Quellcode:
Ich würde dir das empfehlen, da es eigentlich ein Standard ist, den auch andere Programme sehr gut verarbeiten können.
function TForm_Kundenhinzufuegen.NeueZeile: string;
var sl: TStringList; begin sl := TStringList.Create; sl.Add(E_Firma.Text); ... Result := sl.CommaText; sl.Free; end; Andernfalls kannst du dir vielleicht erstmal so helfen:
Delphi-Quellcode:
Grüße vom marabu
function TForm_Kundenhinzufuegen.NeueZeile: string;
var sl: TStringList; begin sl := TStringList.Create; sl.Add(E_Firma.Text); ... Result := StringReplace(sl.CommaText, ',', ';', [rfReplaceAll]); sl.Free; end; |
Re: ListView und Textdatei
Als undefinierter Bezeichner wird ebenfalls "NeueZeile" definiert.
MaM |
Re: ListView und Textdatei
Zitat:
Du must die Funktion NeueZeile natürlich als Methode deiner TForm_Kundenhinzufuegen deklarieren. |
Re: ListView und Textdatei
Dann kommt die Meldung, Funktion benötigt Ergebnistyp.
MaM |
Re: ListView und Textdatei
Hast du denn die Funktion im private Abschnitt deiner Form richtig eingetragen?
Delphi-Quellcode:
marabu
interface
type TForm_Kundenhinzufuegen = class(TForm) ... private function NeueZeile: string; ... end; |
Re: ListView und Textdatei
Bei der Hinzufügenprozedur mit Button, kommt die Fehlermeldung, dass die Variable slDaten wahrscheinlich nicht initialisiert wurde. Das ist ebenfalls bei der FormDestoy-Prozedur so.
slDaten ist als variable definiert (var slDaten: TStringList;). MaM |
Re: ListView und Textdatei
Na, das ist doch mal eine aussagekräftige Fehlermeldung. Was sagt denn der Compiler zu der Zeile in FormCreate(), in der du die Objekt-Variable slDaten initialisierst? (siehe mein erstes posting)
Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 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