Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi textdatei mit mehren zeilen pro datensatz speichern?? (https://www.delphipraxis.net/168716-textdatei-mit-mehren-zeilen-pro-datensatz-speichern.html)

CVi 6. Jun 2012 12:59

textdatei mit mehren zeilen pro datensatz speichern??
 
wie kann ich eine textdatei mit folgendem inhalt in ein dbgrid speichern?
wobei zwischen anfang und ende immer ein datensatz mit 3 feldern besteht.
es sollen natürlich nur die daten zwischen den " " übernommen werden.


-inhalt textdatei-

anfang
Vorname "Thorsten"
Nachname "Meyer"
Strasse "Hauptstrasse"
ende
anfang
Vorname "Sven"
Nachname "Schmidt"
Strasse "Schulstrasse"
ende
anfang
Vorname "Heinrich"
Nachname "Schröder"
Strasse "Rosenweg"
ende
... usw

Jumpy 6. Jun 2012 13:15

AW: textdatei mit mehren zeilen pro datensatz speichern??
 
Du könntest die Datei in eine Stringlist laden und diese Zeile für Zeile durchgehen und die Daten speichern. Anfang und Ende eines Datensatzes sollten ja leicht zu indetifizieren sein :-)

Aber willst du sie in wirklich ein DBGrid speichern oder meinst du in die dahinter stehende Datenquelle? Oder willst du sie nur in einem Grid anzeigen, dann wäre evtl. ein StringGrid oder sowas besser geeignet.

Bummi 6. Jun 2012 13:19

AW: textdatei mit mehren zeilen pro datensatz speichern??
 
Delphi-Quellcode:
Procedure TRimList(sl:TStringList);
begin
  sl.Delete(0);
  sl.Delete(sl.Count-1);
  sl.text := StringReplace(sl.text,'ende'#13#10'anfang','',[rfReplaceAll]);
  sl.text := StringReplace(sl.text,' "','=',[rfReplaceAll]);
  sl.text := StringReplace(sl.text,'"'#13#10,';',[rfreplaceAll]);

end;

procedure TForm5.Button1Click(Sender: TObject);
var
 sl,sl2:TStringList;
 i:Integer;
begin
  sl :=TStringList.create;
  sl2:=TStringList.Create;
  sl2.Delimiter :=';';
  sl2.StrictDelimiter := true;
  try
  sl.assign(memo1.Lines);
  TRimList(sl);
  for I := 0 to sl.Count -1  do
      begin
        sl2.DelimitedText := sl[i];
        // hier dann Dein eigentlicher Edit/InserCode
        Showmessage(sl2.Values['Vorname'] +'-' + sl2.Values['Nachname'] + '-'+ sl2.Values['Strasse'])
      end;
  finally
    sl.Free;
    sl2.free;
  end;
end;

CVi 6. Jun 2012 13:58

AW: textdatei mit mehren zeilen pro datensatz speichern??
 
mit dem dbgrid war nur ein beispiel. soll in einer datenquelle gespeichert werden.

mein altes delphi7 kennt "StrictDelimiter" leider nicht :(

Bummi 6. Jun 2012 14:05

AW: textdatei mit mehren zeilen pro datensatz speichern??
 
Zitat:

mein altes delphi7 kennt "StrictDelimiter" leider nicht
geht auch ohne...

DeddyH 6. Jun 2012 14:11

AW: textdatei mit mehren zeilen pro datensatz speichern??
 
Aber nur, solange die Daten keine Leerzeichen enthalten.

Bummi 6. Jun 2012 14:23

AW: textdatei mit mehren zeilen pro datensatz speichern??
 
im Zweifelsfalle so ...
Delphi-Quellcode:
begin
  sl :=TStringList.create;
  sl2:=TStringList.Create;
  try
  sl.assign(memo1.Lines);
  TRimList(sl);
  for I := 0 to sl.Count -1 do
      begin
        sl2.Text := StringReplace(sl[i],';',#13#10,[rfReplaceAll]);
        // hier dann Dein eigentlicher Edit/InserCode
        Showmessage(sl2.Values['Vorname'] +'-' + sl2.Values['Nachname'] + '-'+ sl2.Values['Strasse'])
      end;
  finally
    sl.Free;
    sl2.free;
  end;
end;

CVi 6. Jun 2012 15:02

AW: textdatei mit mehren zeilen pro datensatz speichern??
 
ansich funktioniert das so schon ganz gut. nur leider hat DeddyH recht mit den leerzeichen.
die quelle hat leider welche und so klappts dann leider nicht.


hab anfangs leider die datei hier nicht richtig dargestellt
-inhalt textdatei-

anfang
Vorname "Thorsten "
Nachname "Meyer "
Strasse "Hauptstrasse "
ende
anfang
Vorname "Sven "
Nachname "Schmidt "
Strasse "Schulstrasse "
ende
anfang
Vorname "Heinrich "
Nachname "Schröder "
Strasse "Rosenweg "
ende

Bummi 6. Jun 2012 15:19

AW: textdatei mit mehren zeilen pro datensatz speichern??
 
nimm Posting #7 mit einem Trim()

p80286 6. Jun 2012 15:23

AW: textdatei mit mehren zeilen pro datensatz speichern??
 
Man könnte die Blanks, falls sie erhalten bleiben sollen, ja auch auch durch ein anderes Zeichen ersetzen, z.B. das Pipe-Zeichen.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 Uhr.
Seite 1 von 2  1 2      

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