Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Array mit Textdatei "füllen"
DaKrissX84 - Do 13.03.03 23:48
Titel: Array mit Textdatei "füllen"
Hallo!
Mein Programm soll ein array (of string) mit einzelnen Wörtern füllen.
Die Wörter befinden sich in einer Textdatei (C:\Beispiel.txt) getrennt durch ein ';'. Damit das Programm erkennt, dass es keine weiteren Wörter mehr ins Array schreiben soll, ist ein ']' am Ende der "Wörerkette".
Es sollen also einzelne Wörter erkannt und Stück für Stück in das Array geschrieben werden.
Hat jemand ne bessere Idee als das?:
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:
| str1 := TStringlist.Create; str1.Loadfromfile('C:\Beispiel.txt'); inhalt := str1.text; str1.free;
repeat i := 0; repeat begin wort := wort+inhalt[p]; p:= p+1; i:= i+1; end until wort[i] = ';';
delete(wort,length(wort),1); a := a+1; Array[a] := wort;
until inhalt[p] = ']'; |
Hoffe, man versteht was ich meine....
Noch ein Problem:
Wenn ich den obigen Code benutze, dann wird das Array an manchen stellen mit ' ' (also quazi nix) gefüllt. Das liegt irgendwie am Zeielenumbruch in der Textdatei... Kann man das auch noch irgendwie verhindern?
Dank im Voraus!
mars - Fr 14.03.03 00:20
Ich würde allgemein mit einer TStringList weiterarbeiten (statt dem Array). Sonst weiss ich auch nicht viel zu verbessern, ist ein dummes Format (Ich hoffe nicht, dass du diese Datei selber erstellt hast!! :wink: )
DaKrissX84 - Fr 14.03.03 11:52
Hi!
Ich habe die Datei schon selbst erstellt...
1.Frage:
Wie kann man das denn sonst machen, als die Wörter durch irgendein bestimmtes Zeichen, z.B. ';' zu trennen??
2. Frage:
Wie arbeitet man mit Stringlists?
Delete - Fr 14.03.03 12:45
Wie so ist das ein dummes Format? Das ist eine ganz normale CSV-Datei mit Semikola als Trennzeichen.
Mit der Methode CommaText von TStringlist bekommst du es relativ einfach in eine Stringliste.
Willst du es in ein Array schreiben versuch mal das:
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: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| type TStringDynArray = array of string;
function Explode(const Separator, S: string; Limit: Integer = 0): TStringDynArray; var SepLen: Integer; F, P: PChar; ALen, Index: Integer; begin SetLength(Result, 0); if (S = '') or (Limit < 0) then Exit; if Separator = '' then begin SetLength(Result, 1); Result[0] := S; Exit; end; SepLen := Length(Separator); ALen := Limit; SetLength(Result, ALen);
Index := 0; P := PChar(S); while P^ <> #0 do begin F := P; P := StrPos(P, PChar(Separator)); if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F); if Index >= ALen then begin Inc(ALen, 5); SetLength(Result, ALen); end; SetString(Result[Index], F, P - F); Inc(Index); if P^ <> #0 then Inc(P, SepLen); end; if Index < ALen then SetLength(Result, Index); end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!