| Autor |
Beitrag |
Bäääm
Hält's aus hier
Beiträge: 13
WIN XP
Delphi 7 Enterprises, Delphi 2005 Prof.
|
Verfasst: Do 18.06.09 20:23
Hallo Delphianer,
mein Kollege und ich sitzen hier an einem Schulprojekt und stehen jetzt vor einem Problem.
Unsere Anforderung: Wir schreiben in unsere Textdatei Datensätze
Quelltext 1: 2: 3: 4:
| 10001#$Hans$Peter§Hauptstrasse$ 10002#$Hans$Peter§Hauptstrasse$ 10003#$Hans$Peter§Hauptstrasse$ 10004#$Hans$Peter§Hauptstrasse$ |
Jetzt haben wir die ganze Chose in eine Stringlist gepackt. Im Datensatz mit der Kundennummer 10003 möchten wir den Namen ändern. Er soll aber in der gleichen Position den geänderten Datensatz wieder reinschreiben.
Wir arbeiten nicht mit Arrays!!!
Könnt ihr uns hier helfen??? Wir brauchen eine Funktion oder dergleichen.
Vielen Dank schonmal.
Ilias und Bartosz
Moderiert von Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt, Code-Tags hinzugefügt.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 18.06.09 20:31
Bäääm hat folgendes geschrieben : | | Wir arbeiten nicht mit Arrays!!! |
Also wollt ihr keine TStringlist verwenden? Damit wäre es natürlich sehr einfach.
Sonst bleibt nur alles mittels AssignFile + Reset + ReadLn auszulesen und in eine zweite Datei wieder zu schreiben. Dabei muss dann die entsprechende Zeile eben ausgetauscht werden.
|
|
Bäääm 
Hält's aus hier
Beiträge: 13
WIN XP
Delphi 7 Enterprises, Delphi 2005 Prof.
|
Verfasst: Do 18.06.09 20:36
Doch doch, mit einer TStringlist arbeiten wir. Nur nicht mit mehrdimensionalen Arrays. Sorry, falsch beschrieben.
Wir haben eine TStringlist und wollen innerhalb der Stringlist den Datensatz ändern. Danach wieder mit SAVETOFILE in das Textdokument reinschreiben.
Moderiert von Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
|
|
turboPASCAL
      
Beiträge: 193
Erhaltene Danke: 1
Win XP / Vischda
D6 PE / D2005 PE
|
Verfasst: Do 18.06.09 20:55
Sorry, da versteh ich das Problem aber nicht.
Wenn schon mit StringList, dann ist doch einfach.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| function BearbeiteKdnNr(txt: string; NewKdNr: integer): string; begin end;
procedure TForm1.FormCreate(Sender: TObject); var s: tstringlist; begin s := tstringlist.Create; try s.LoadFromFile(...); s.Strings[2] := BearbeiteKdnNr(s.Strings[2], 0815); finally s.free; end; end; |
_________________ Nein, ich bin nicht der turboPASCAL aus der DP, ich seh nur so aus...
|
|
Bäääm 
Hält's aus hier
Beiträge: 13
WIN XP
Delphi 7 Enterprises, Delphi 2005 Prof.
|
Verfasst: Do 18.06.09 21:04
Vielen Dank für die Antwort.
Okay, dass verstehe ich. Ist auch realisierbar. Ich habe dann noch eine Frage...
Wenn ich einen Datensatz neu anlege, muss ich die einzelnen Felder mit Sonderzeichen trennen oder gibt es dann eine andere
Methode wie man die einzelenen Felder im Datensatz sauber mit der Stringlist auslesen kann (Vielleicht mit Spaces)
Wenn ja, wie muss ich dann die Textdatei befüllen und wie muss ich die Variablen befüllen.
Moderiert von Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 18.06.09 21:09
Du könntest Tabs (#9) benutzen zum Beispiel.
Viele andere Möglichkeiten bleiben dir bei eurer Methode nicht, irgendein Trennzeichen brauchst du ja.
|
|
Bäääm 
Hält's aus hier
Beiträge: 13
WIN XP
Delphi 7 Enterprises, Delphi 2005 Prof.
|
Verfasst: Do 18.06.09 21:15
okay, wie bekomme ich aber dann die einzelnen Felder in Variablen gespeichert. Halt das er quasi den String durchsucht und dann nach jedem $ den String bis zum nächsten $ ausschneidet und in eine variable speichert.
Moderiert von Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 18.06.09 21:22
Mit PosEx() ginge das. Oder auch in neueren Delphi-Versionen mit TStringList, Delimiter und StrictDelimiter.
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 18.06.09 22:20
Moin!
Mit zwei TStringList-Objekten arbeiten: eins für die Zeilen in der Datei und eins, um die Zeilen mit .CommaText zerlegen/zusammenbauen. Dann hast du praktisch das CSV-Format.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|