Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - String aus Textdatei länger als 255 Zeichen


Bronstein - Do 01.10.09 08:20
Titel: String aus Textdatei länger als 255 Zeichen
Hallo,
ich habe folgenden String in einer Textdatei stehen:

Quelltext
1:
3|3|24.09.2009 22:31:04|Linie_3|1|1|1|2|33|971.395$10223507100430$10.000$RUTRONIK$RC0805JR-101ML970.458$10220912100060$5.000$RUTRONIK$RC1206FR-073R92L99990000000000100000000000000000|C_980_108_109_1|Los_75_465_442_02|FAIL|82|905352|75_465_442_02|FALSE|980109|FALSE                    


Hier von habe ich mehrere Zeilen in der Datei, jetzt möchte ich mit diesem String gerne arbeiten und zwar wie folgt:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
          sl := TStringList.Create;
          zellen := TStringList.Create;
          zellen.Delimiter:='|';
          sl.LoadFromFile(Datei);
          gesperrt := false;
          for i:=zeile to sl.Count-1 do
          begin
             tmpStr := StringReplace(sl[i], ' ''', [rfReplaceAll]);

             zellen.DelimitedText := tmpStr;
             if zellen.Count >= 17 then
               if zellen[18] = 'TRUE' then  
                  check := true;

             ShowMessage(tmpStr);
             [...]
          end;

Nach dem StringReplace ist der String jedoch nur noch 255 Zeichen lang,


hjm - Do 01.10.09 08:29

Hallo,

als was hast Du tmpstr den deklariert.
Bei Shortstring sind es dann tatsächlich nur 255 Bytes.

Daher tmpstr als AnsiString definieren, bzw. in den Projekt-Einstellungen -> Compiler -> Huge-Strings aktivieren.

Dann ist die Deklaration


Delphi-Quelltext
1:
2:
var
tmpstr : String;


automatisch AnsiString.

Grüße


Tastaro - Do 01.10.09 09:13

user profile iconBronstein hat folgendes geschrieben Zum zitierten Posting springen:

Nach dem StringReplace ist der String jedoch nur noch 255 Zeichen lang,


Hm - eigentlich müsste er 265 Zeichen lang sein.
Zugegeben, doofe Frage, aber bist du sicher, dass es 255 und nicht 265 sind.

Beste Grüße


thepaine91 - Do 01.10.09 10:06

Wie kommst du auf 265?


Tastaro - Do 01.10.09 10:23

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
Wie kommst du auf 265?


Ich hab die Zeichenkette oben in meinen Editor kopiert und ein Zeichen wegen dem Leerzeichen abgezogen.

Beste Grüße


DonManfred - Do 01.10.09 12:09

Und diese 265 ist der String VOR dem besagten StringReplace (wonach er DANN nur noch 255 Zeichen lang ist). Und das war ja genau die Problemstellung...


Tastaro - Do 01.10.09 12:55

user profile iconDonManfred hat folgendes geschrieben Zum zitierten Posting springen:
Und diese 265 ist der String VOR dem besagten StringReplace (wonach er DANN nur noch 255 Zeichen lang ist). Und das war ja genau die Problemstellung...


Erst mal sichersetllen, dass das Problem korrekt beschrieben ist. Von der 265 steht oben nix und verguckt hat man sich auch schnell mal. Ansonsten finde ich es sehr nett von dir mir das Problem des TE so genau zu erklären. Danke.

@TE: Verschwinden die Daten am Ende des Strings oder sonst irgendwo?

Beste Grüße


Bronstein - Do 01.10.09 18:34

Hallo,
das Problem lag wirklich daran, dass ich die tmpStr Variable als ShortString deklariert hatte.

Vielen Dank!