Entwickler-Ecke
Dateizugriff - Größe von TStringList!
Silvia - Di 05.07.05 13:43
Titel: Größe von TStringList!
Hallo,
ich habe folgendes Problem mit TStringList:
Ich habe ein Programm welches den Quelltext einer Webseite auswertet! Die webseite wird in ein TStringList eingelesen und ausgewertet! Aber beim einlesen wird nicht der gesammte Quelltext eingelesen sondern nur so ca. die Hälfte! Wenn ich am Anfang des Quelltextes 4 Zeichen lösche, dann werden am ende 4 Zeichen mehr eingelesen!
Mir scheint das die TStringList nicht ausreichend platz reserviert für den gesamten Quelltext! Kann das sein!
Ich arbeite mit D7 und Win2k!
BenBE - Di 05.07.05 13:57
Ein klein wenig Quelltext zum Befüllen der TStringList wäre interessant, da mir ATM keine Begrenzung der TStringList bekannt wäre, die ein solches Verhalten liefern würde. Daher vermute ich, dass das ein Problem beim Einlesen der Seite in die StringList ist.
jasocul - Di 05.07.05 14:21
Wenn der Quelltext nicht 2GB Zeilen überschreitet, liegt das Problem am Programm.
Also den Source her, sonst nix Hilfe :wink:
Silvia - Di 05.07.05 14:21
Delphi-Quelltext
1: 2: 3: 4: 5:
| sl.Free; sl:=TStringList.Create; sl.LoadFromFile('C:\test.txt'); x:=System.Pos('Name', sl.Text); |
wenn ich mir den Inhalt von sl.text anschaue entspricht er nicht dem von der Datei test.txt!
Mache ich da was falsch?
Moderiert von
Christian S.: Code- durch Delphi-Tags ersetzt.
jaenicke - Di 05.07.05 14:25
Ähh, WO schaust du dir den an, meinst du per Maus drüberhalten beim Debuggen? Da wird einfach nur ein Teil nicht angezeigt!!!
Markier mal sl.Text und drück Strg+F7, wenn du beim Debuggen bist. DANN wird der gesamte Inhalt angezeigt.
jasocul - Di 05.07.05 14:26
Wie groß ist die Datei in Byte?
So, wie du auf die StringList zugreifst, beschränkst du dich auf 2GB Zeichen (sl.Text). Aber ich halte es für unwahrscheinlich, dass die Datei 2GB groß ist.
Laut Delphi-Hilfe kann ein String bis zu 2GB Zeichen aufnehmen.
Silvia - Di 05.07.05 14:41
Ah ja,
Okay, ja ich bin mit der Maus drübergefahren und dachte deshalb das nicht alles eingelesen wird! Mein Gedankenfehler!
Jetzt weis ich auch warum mein Name nicht gefunden wurde weil ein Umlaut nicht korrekt dargestellt wird! Wie kann ich ein Ä1/4 in ü wandel?
jaenicke - Di 05.07.05 14:52
:dance:
Dacht ichs mir doch...
Und zum Ersetzen:
Unit StrUtils einbinden und AnsiReplaceStr benutzen, das ersetzt alle Vorkommen eines Strings im angegebenen Text durch einen anderen.
Silvia - Di 05.07.05 14:57
Wie würde das aussehen in meinem Beispiel:
Wenn aus Name Tüte wird!
Delphi-Quelltext
1: 2: 3: 4: 5:
| sl.Free; sl:=TStringList.Create; sl.LoadFromFile('C:\test.txt'); x:=System.Pos('Tüte', sl.Text); |
Moderiert von
UGrohne: Code- durch Delphi-Tags ersetzt.
jaenicke - Di 05.07.05 15:00
Wo ist denn das Problem, was AnsiReplaceStr macht, steht doch in der Hilfe sehr schön drin...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| uses StrUtils;
sl:=TStringList.Create; sl.LoadFromFile('C:\test.txt'); sl.Text := AnsiReplaceStr(sl.Text, 'ä', 'ü'); x := System.Pos('Tüte', sl.Text); |
Silvia - Di 05.07.05 15:09
Ja, das habe ich verstanden aber
ich kann nicht ä in ü wandel weil aus ü im Quelltext ein Ä1/4 geworden ist!
Hat das was mit dem Ansi Zeichensatz zu tun?
jaenicke - Di 05.07.05 15:13
Silvia hat folgendes geschrieben: |
Ja, das habe ich verstanden aber
ich kann nicht ä in ü wandel weil aus ü im Quelltext ein Ä1/4 geworden ist!
Hat das was mit dem Ansi Zeichensatz zu tun? |
Also warum das so ist, weiß ich nicht, ich weiß ja nicht, wie die Datei erzeugt wurde. Allerdings vermute ich, dass es etwas mit Unicode und Ansi zu tun hat bzw. der Konvertierung derselben. Scheint das gleiche Problem zu sein, das ich in Delphi 2005 Personal selbst entdeckt habe (Projektversionen verstehen keine Sonderzeichen korrekt)...
Aber als Lösung:
Wenn du das mit AnsiReplaceStr verstanden hast, dann sollte es doch wohl kein problem sein, dann das Ä1/4 wieder richtigzustellen :roll:
Delphi-Quelltext
1:
| sl.Text := AnsiReplaceStr(sl.Text, 'Ä1/4', 'ü'); |
Silvia - Di 05.07.05 15:21
Ja, alles Klar!
ich hatte zur Vereinfachung Ä1/4 geschrieben, weil ich nicht wusste wie ein ü mit der Tastatur geschrieben wird!
Jetzt habe ich sl.text makiert und Strg+F7 gedrückt und aus der Anzeige die Zeichen in die Zwischenablage kopiert!
Jetzt klappt es! Danke!!
jaenicke - Di 05.07.05 15:32
Silvia hat folgendes geschrieben: |
ich hatte zur Vereinfachung Ä1/4 geschrieben, weil ich nicht wusste wie ein ü mit der Tastatur geschrieben wird! |
:lol: Woher sollte ich das denn wissen? :mrgreen:
Silvia hat folgendes geschrieben: |
Jetzt klappt es! Danke!! |
Dann ist ja gut! :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!