Autor Beitrag
Bäääm
Hält's aus hier
Beiträge: 13

WIN XP
Delphi 7 Enterprises, Delphi 2005 Prof.
BeitragVerfasst: 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
ausblenden 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 user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt, Code-Tags hinzugefügt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 18.06.09 20:31 
user profile iconBäääm hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
Hält's aus hier
Beiträge: 13

WIN XP
Delphi 7 Enterprises, Delphi 2005 Prof.
BeitragVerfasst: 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 user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
turboPASCAL
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 193
Erhaltene Danke: 1

Win XP / Vischda
D6 PE / D2005 PE
BeitragVerfasst: Do 18.06.09 20:55 
Sorry, da versteh ich das Problem aber nicht.

Wenn schon mit StringList, dann ist doch einfach.

ausblenden 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... :P
Bäääm Threadstarter
Hält's aus hier
Beiträge: 13

WIN XP
Delphi 7 Enterprises, Delphi 2005 Prof.
BeitragVerfasst: 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 user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13

WIN XP
Delphi 7 Enterprises, Delphi 2005 Prof.
BeitragVerfasst: 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 user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 18.06.09 21:22 
Mit PosEx() ginge das. Oder auch in neueren Delphi-Versionen mit TStringList, Delimiter und StrictDelimiter.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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. :idea: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.