Entwickler-Ecke
Dateizugriff - String lesen/verarbeiten/speichern
Max Payne - Do 14.07.05 16:50
Titel: String lesen/verarbeiten/speichern
Hi
Mein erstes Topic :wave:
Also ich hab Ferien und langeweile also hab ich mir vorgenommen eine Art Editor (z.B. Szenarioeditor) für ein Spiel zu schreiben. Dazu muss ich aus einer Datei lesen. Das Format ist:
Gebietsnummer;Name;bla;...;bla;X
Gebietsnummer;Name;bla;...;bla;X usw
Wie man sieht immer mit ";" als Trennzeichen und "X" als zeilenende. Ich will nun den Namen und die Nummer laden und da irgendetwas mit machen z.B. in ein Memofeld schreiben (ich bin mir noch nicht sicher was und wie überhaupt das ganze aussehen soll).
Das hab ich mir bisher gedacht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.FormCreate(Sender: TObject); var F1: Textfile; V1: Char; Test: String; begin Test := ''; AssignFile(F1, 'D:\Test.txt'); ReSet(F1); while not Eof(F1) do begin Read(F1, V1); if V1 = ';' then begin if Test <> '' then Memo1.Lines.Add(Test); Test := ''; end else Test := Test + V1; end; Form1.Caption := Test; end; |
Funktioniert auch soweit, nur lese ich halt alle Felderund wie gesagt will ich nur die ersten beiden haben. Weiß jemand Rat?
Vielen Dank.
ScorpionKing - Do 14.07.05 16:54
Mach doch folgendes:
neu ist der neue String, s der alte Inhalt, 0 der Index, und 5 die Anzahl der Zeichen, die du kopieren willst!
Max Payne - Do 14.07.05 17:05
Copy kenn ich aber mir ist nicht ganz klar wie ich das einsetzen soll...
Ich gehe mal davon aus du hast das Problem nicht richtig verstanden (sorry falls dem nicht so ist und ich nur zu blöd bin).
Also auszug aus der Datei:
PROV18;Calais;Calais;Calais;Calais;Calais;Calais;;;;;X
PROV19;London;London;London;London;London;London;;;;;X
PROV20;Dover;Dover;Dover;Dover;Dover;Dover;;;;;X
Ich will jetzt die Datei so lesen das im Memofeld steht:
PROV18
Calais
PROV19
London
PROV20
Dover
Also nur die ersten beiden Daten.
retnyg - Do 14.07.05 17:07
dafür gibts die schöne prozedur explode, die dir den string in ein array aufspaltet (; als trenner)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| function Explode(text: string; seperator: Char): tarray; var s: string; m: Integer; c: Char; begin Result := nil; s := ''; for m := 1 to Length(text) do begin c := text[m]; if c = seperator then begin SetLength(Result, Length(Result) + 1); Result[Length(Result) - 1] := s; s := ''; end else s := s + c; end; if s <> '' then begin SetLength(Result, Length(Result) + 1); Result[Length(Result) - 1] := s; end; end; |
anwendung:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| type tarray = array of string; var t: tarray; begin t:=explode('bla;blubb',';'); showmessage(t[0]); end; |
Max Payne - Do 14.07.05 18:11
Danke retnyg
Auch wenn ich nicht im Stande war die funktion und den Typ so einzubinden habe ich mir das Prinzip abgeschaut und so hingebastelt das es für mich passt. :wink:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!