AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListView und Textdatei

Ein Thema von MaM · begonnen am 6. Sep 2005 · letzter Beitrag vom 12. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
MaM

Registriert seit: 21. Jul 2005
19 Beiträge
 
#1

ListView und Textdatei

  Alt 6. Sep 2005, 10:04
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:
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 klappt soweit ganz gut. Nur was muss ich einfügen, damit bei neuen Einträgen der alte Datensatz nicht überschrieben wird?


Das 2. Problem ist das Auslesen der Daten im ListView. Das bekomme ich garnicht hin.




MaM
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: ListView und Textdatei

  Alt 6. Sep 2005, 11:51
Hallo MaM,

Zitat von MaM:
Die eingetragenen Werte sollen in eine Textdatei geschrieben werden. Die einzelnen Einträge sind durch Simikolons getrennt.
Einfaches Trennen durch Semikolon führt zu Problemen, sobald in einem Feld das Trennzeichen selbst im Inhalt vorkommt. Das Problem kannst du so lösen:

Delphi-Quellcode:
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;
Damit deine gerade erzeugte Datenzeile nicht die zuvor gespeicherte überschreibt, musst du alle Daten im Hauptspeicher halten:

Delphi-Quellcode:
// 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;
Alternativ kannst du die Textdatei einfach fortschreiben:

Delphi-Quellcode:
procedure TForm_Kundenhinzufuegen.AppendButtonClick(Sender: TObject);
begin
  AssignFile(f, KundenFileName);
  Append(f)
  WriteLn(f, NeueZeile);
  CloseFile(f);
end;
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.

Grüße vom marabu
  Mit Zitat antworten Zitat
MaM

Registriert seit: 21. Jul 2005
19 Beiträge
 
#3

Re: ListView und Textdatei

  Alt 6. Sep 2005, 13:07
Ich bekomme als Fehlermeldung: Undefinierter Bezeichner: Delimiter.

Liegt das an der Sofware-Version?




MaM
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: ListView und Textdatei

  Alt 6. Sep 2005, 13:48
Allerdings - tut mir leid.

Musst du denn das Semikolon verwenden? Wenn du auf Komma umsteigst, dann kannst du so arbeiten:

Delphi-Quellcode:
function TForm_Kundenhinzufuegen.NeueZeile: string;
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  sl.Add(E_Firma.Text);
  ...
  Result := sl.CommaText;
  sl.Free;
end;
Ich würde dir das empfehlen, da es eigentlich ein Standard ist, den auch andere Programme sehr gut verarbeiten können.

Andernfalls kannst du dir vielleicht erstmal so helfen:

Delphi-Quellcode:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
MaM

Registriert seit: 21. Jul 2005
19 Beiträge
 
#5

Re: ListView und Textdatei

  Alt 6. Sep 2005, 14:39
Als undefinierter Bezeichner wird ebenfalls "NeueZeile" definiert.



MaM
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: ListView und Textdatei

  Alt 6. Sep 2005, 15:00
Zitat von MaM:
Als undefinierter Bezeichner wird ebenfalls "NeueZeile" definiert.
Hai MaM,

Du must die Funktion NeueZeile natürlich als Methode deiner TForm_Kundenhinzufuegen deklarieren.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
MaM

Registriert seit: 21. Jul 2005
19 Beiträge
 
#7

Re: ListView und Textdatei

  Alt 6. Sep 2005, 16:25
Dann kommt die Meldung, Funktion benötigt Ergebnistyp.




MaM
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: ListView und Textdatei

  Alt 6. Sep 2005, 16:30
Hast du denn die Funktion im private Abschnitt deiner Form richtig eingetragen?

Delphi-Quellcode:
interface

type
  TForm_Kundenhinzufuegen = class(TForm)
  ...
  private
    function NeueZeile: string;
  ...
  end;
marabu
  Mit Zitat antworten Zitat
MaM

Registriert seit: 21. Jul 2005
19 Beiträge
 
#9

Re: ListView und Textdatei

  Alt 7. Sep 2005, 10:18
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: ListView und Textdatei

  Alt 7. Sep 2005, 11:12
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:35 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