![]() |
String-Problem
Hallo,
Ich möchte aus einer TextDatei folgende Zeichen in einen String einlesen: ð*º `0wÜ “Õ4?q4$ Nach dem Einlesen steht in dem String folgendes: ð*º'#0#0#0#0#0#0#0#$17#0#0#0#$ Wie kann ich den String wieder so umwandeln das darin auch der Text steht der wirklich in der Datei steht? |
Re: String-Problem
Ich bin mir ziemlich sicher das in dem String immer noch das steht was auch in der Datei steht. #0 heißt einfach nur Ascii-zeichen 0 - und weil das ein nicht darstellbares zeichen ist wird es dir beim hint etc. in delphi als #0 dargestelt. Word etc. stellen diese zeichen als viereck dar... aber du wirst sehen wenn du es in die datei zurück schreibst das immer noch das gleiche drin steht
|
Re: String-Problem
Moin Seddto,
wenn ich mir den Inhalt des Strings so anschaue habe ich ernste Zweifel, dass es sich um eine Textdatei handelt. Ausser bei einer Unicodedatei (oder Multibyte) dürften die nämlich keine binären Nullen enthalten. Bei Unicode wäre es höchstens jedes zweite. |
Re: String-Problem
Doch ist eine von mir erstellte Textdatei...
Jetzt habe ich aber noch folgendes Problem: Ich möchte den String, in den ich die Daten aus der textdatei geladen haben nach Wörtern durchsuchen. Jedes Wort beginnt mit dem Zeichen ':' Dann folgen die Wörter in diesem Format: D E L P H I P R A X I S. Wenn ich jetzt den String durchsuche hat es aber dieses Format: D#0E#0L#0P#0H#0 usw.. am Ende des Strings kommen immer 2 Leerzeichen also #0#0 Wenn ich mir jetzt das zeichen im String für (Pos('D', Stringname) + 1 ausgeben lasse erhalte ich '#0' (in der Watch liste). Wenn ich jetzt aber eine Schleife nach dem Motto Schreibe While(Pos('D', Stringname) + 1 = '#0') ist die Bedingung falsch und die Schleife wird übersprungen :( Was mache ich falsch? |
Re: String-Problem
Also entweder du entscheidest dich die Datei im Ansi-Format abzuspeichern, oder du muß die Datei in einen WideSting laden (der ist Unicode).
PS: der String von dort oben ist auf jeden Fall nicht aus einer Textdatei (kein ANSI, UTF-8, oder Unicode) |
Re: String-Problem
Moin Seddto,
Zitat:
Das sieht nämlich so aus, als würdest Du nicht den String speichern, sondern Pointer. Beispiel:
Delphi-Quellcode:
var
fsWork : TFileStream; sWork : string; begin sWork := 'Teststring'; // Der Pointer auf den Inhalt von sWork und das // was im Speicher dahintersteht werden gespeichert fsWork := TFileStream.Create('c:\temp\test1.txt',fmCreate); try fsWork.Write(sWork,length(sWork)); finally FreeAndNil(fsWork); end; // Der String wird gespeichert fsWork := TFileStream.Create('c:\temp\test2.txt',fmCreate); try fsWork.Write(sWork[1],length(sWork)); finally FreeAndNil(fsWork); end; end; |
Re: String-Problem
hi Christian
Nein...die Datei ist richtig erstellt und das ist nicht das Problem. Es geht mir darum die in den String eingelesenen Daten so umzuwandeln das ich die Namen wieder rauskriege. By the way...wenn ich die Datei mit dem windows-editor aufmache werden die #0 als Leerzeichen dargestellt. Wenn das geht würde ich das so auch gerne in meinem Delphi-String haben...Weiss jemand wie ich das mache? |
Re: String-Problem
mit stingreplace sollte es gehen
beim alten zeichen gibst du #0 an und ersetzt das durch ' ' |
Re: String-Problem
Moin Seddto,
dann hast Du wohl einen WideString geschrieben, und müsstest ihn auch wieder so einlesen. Allerdings passt das nach wie vor nicht mit Deinem Beispiel aus dem ersten Posting zusammen. Wie speicherst/liest Du denn, und wie sehen die Deklarationen aus? |
Re: String-Problem
Stringreplace liefert leider dasselbe Ergebnis wie im ersten String (also #0) obwohl ich angegeben habe #0 mit ' ' ersetzen...Weiss echt langsam nicht mehr weiter
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz