![]() |
Text aus Datei laden, Single Quote Problem
Ich lese Text aus einer Datei, der dann in meinem Programm angezeigt wird.
Das klappt gut bis zu dem, Zeitpunkt, wenn ein zu ladener String einen Quote enthält wie er in England oder Frankreich benutzt wird Zitat:
Zitat:
Gibt es irgendeine Delphi- oder Windowsfunktion, sodass der Quote in er Textdatei nicht escaped werden muss und in Delphi trotzdem korrekt interpretiert wird? |
AW: Text aus Datei laden, Single Quote Problem
Zitat:
|
AW: Text aus Datei laden, Single Quote Problem
Genau genommen ist es eine INI-Datei. Dort stehen Worte und Sätze so drin, wie sie in der jeweiligen Sprache geschrieben werden. Also kein Escapen oder so.
\' und '''' in der INI-Datei, wie man es bei PHP zum Beispiel macht, habe ich schon versucht. |
AW: Text aus Datei laden, Single Quote Problem
Die Frage ist: Wie liest du den Text aus der Datei? Es gibt einen ganzen Haufen von Möglichkeiten und jede hat ihre Eigenarten.
|
AW: Text aus Datei laden, Single Quote Problem
Hier ein Beispiel
Delphi-Quellcode:
Ich jage alles durch ReadValue, um doppelten Code zu vermeiden. UTF8ToWideString steht da, da sonst Umlaute nicht richtig angezeigt werden.
function ReadValue(const AIniFile: TMemIniFile; const Section, Ident: string): string;
begin Result := UTF8ToWideString(AIniFile.ReadString(Section, Ident, '')); end; LIni := TMemIniFile.Create(LanguageFile); try String123456 := ReadValue(LIni, 'section', 'ident'); finally LIni.Free; end; |
AW: Text aus Datei laden, Single Quote Problem
@Dolly: Wenn ich dich richtig verstehe ist nicht das einlesen das Problem (der eingelesene Text entspricht 1:1 dem was du aus der Datei erwartest), sondern die spätere Verarbeitung wenn ein
Code:
im Text auftaucht. Richtig?
'
Wäre es dann nicht eine Option die
Code:
durch Leerzeichen zu ersetzen (z.B. mittels Stringreplace)?
'
|
AW: Text aus Datei laden, Single Quote Problem
Das Ergebnis stimmt. Aber intern passiert irgendwas bzw passiert irgendwas nicht denn in einem Message Dialog wird die Zeile nicht mehr automatisch umgebrochen, wenn ein ' im String ist. Wenn ich den String hardcoded selbst reinschreibe und '' statt ' verwende klappt alles. Aber ein '' in der Ini-Datei bringt nicht das Resultat wie der hardcoded string.
Durch Leerzeichen ersetzen ist nicht machbar. Es handelt sich um Übersetzungen. |
AW: Text aus Datei laden, Single Quote Problem
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
MessageDlg('Test und don''t und son ein mustn''t und bla und Test aber auch ein Test ist mit einem ''Test'' sehr don''t', mtInformation, [mbOK], 0);
https://www.delphipraxis.net/attachm...1&d=1560850673 Hab damit keine Probleme |
AW: Text aus Datei laden, Single Quote Problem
Du hast den Text ja auch hardcoded im Programm drin.
Ließ genau diesen aus einer Ini-Datei aus. Das Ergebnis sollte ein anderes sein. |
AW: Text aus Datei laden, Single Quote Problem
Liste der Anhänge anzeigen (Anzahl: 1)
Bei mir das gleich Ergebnis:
Delphi-Quellcode:
https://www.delphipraxis.net/attachm...1&d=1560850977
procedure TForm3.FormCreate(Sender: TObject);
var ini: TIniFile; str: String; begin ini := TIniFile.Create('D:\Test123.ini'); try // ini.WriteString('TEST', 'Str', 'Test und don''t und son ein mustn''t und bla und Test aber auch ein Test ist mit einem ''Test'' sehr don''t'); str := ini.ReadString('TEST', 'Str', ''); // str := UTF8ToWideString(ini.ReadString('TEST', 'Str', '')); <--- geht auch MessageDLg(Str, mtInformation, [mbOK], 0); finally ini.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:53 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 by Thomas Breitkreuz