Autor Beitrag
Nafetz
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 03.02.11 19:34 
Hallo,

ich hatte nur ein kleines Projekt realisieren wollen, bei dem ich eigentlich trotz meinem bescheidenen Niveau nicht mit Schwierigkeiten gerechnet hatte, weil ich alles schon einmal realisiert habe - dachte ich zumindest.
Jetzt habe ich bemerkt, dass ich mit der verwendeten Funktion FileToString nicht klar komme, weil ich eine Datei auslesen möchte, die nicht im ANSI-Format vorliegt. Ich hatte die Datei im Vorfeld mit Notepad++ angesehen und nicht beachtet, dass der Inhalt mit der Kodierung UCS-2 Big Endian vorliegt. Jetzt scheint alle bislang gemachte Arbeit umsonst...
Ich habe einige interessante Ansätze er"google"n können, jedoch führt das bei mir nicht zum Erfolg.

Meine Variable ist von Typ String. Mit der Funktion FileToString landen in der Variablen immer '#0' Zeichen zwischen meinen Buchstaben. Das wäre grundsätzlich kein Problem, wenn ich wüsste, wie ich trotzdem eine Zeichenfolge suchen könnte.
Z.B. mit if Pos(StringSuchtext, StringVariable) > 0 then
Wenn ich als StringSuchtext jetzt nehmen könnte
ausblenden Delphi-Quelltext
1:
StringSuchtext := 'H' + #0 + 'a'					

dann würde ich weiterkommen. Das hat bei mir jedoch nicht geklappt. Somit muss ich wohl umkonvertieren. Dazu habe ich swissdelphicenter.ch...showcode.php?id=1692 gefunden. Allerdings kenne ich mich da mit der CodePage nicht aus. Die probierten CodePages 1250 führten auch hier nicht zum Erfolg.

Hat mir jemand noch einen Tipp?

Vorab vielen Dank.

Gruß, Stefan
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 04.02.11 06:46 
Hallo und :welcome:

Die wichtigste Frage, da du das im Profil nicht ausgefüllt hast:
Welche Delphiversion benutzt du?

Denn ab Delphi 2009 unterstützt Delphi direkt Unicode, in den älteren Versionen nur wenig (mit Hilfe von eben z.B. WideString).

user profile iconNafetz hat folgendes geschrieben Zum zitierten Posting springen:
Mit der Funktion FileToString landen in der Variablen immer '#0' Zeichen zwischen meinen Buchstaben.
Was ist das denn für eine Funktion?
Wenn darin z.B. AnsiStrings verwendet werden, kann das nicht gut gehen. Auch nicht in Delphi 2009 oder höher!

Es gibt dafür eine Klasse. Die habe ich zwar nie verwendet, soll aber auch unter älteren Versionen von Delphi funktionieren:
gp.17slon.com/gp/gptextfile.htm

Und solltest du Delphi 2009 oder höher haben, kannst du dir das alles sparen und die Datei einfach direkt einlesen, z.B. mit TStringList, ...
Nafetz Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 04.02.11 10:40 
Hallo,

ich benutze Delphi 2005. Die FileToString habe ich von www.delphi-treff.de/...-einen-string-laden/ übernommen.

Wie ich inzwischen herausgefunden habe, war meine Aussage von gestern Abend nicht ganz korrekt. Es ist doch möglich, den Suchstring so anzupassen, dass Werte gefunden werden:
ausblenden Delphi-Quelltext
1:
Stelle1 := Pos('H' + #0 + 'a',StringVariable);					


Auch das entfernen der Sonderzeichen aus der Stringvariablen klappt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
function DeleteSpecialCharacters(UTFString: String): String;
begin
  while Pos(#0, UTFString) > 0 do
    Delete(UTFString,Pos(#0, UTFString),1);
  Result := UTFString;
end;


Damit blieben am Anfang noch zwei Sonderzeichen übrib, bei denen ich nicht weiß, wie ich die erwischen kann: þ und ÿ. Zur Not kann ich die aber vermutlich einfach vorne weglöschen, da diese immer am Anfang stehen.

Das wäre zumindest eine unprofessionelle Lösung, mit der ich wenigstens weiterkomme - auch wenn sie den Wissenshorizont nicht erweitert :)

Falls noch jemand hilfreiche Tipps zur Weiterbildung hat, freue ich mich natürlich. In jedem Fall herzlichen Dank für die Mühe.

Gruß, Stefan