Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Text aus Datei laden, Single Quote Problem (https://www.delphipraxis.net/201035-text-aus-datei-laden-single-quote-problem.html)

DieDolly 17. Jun 2019 21:00

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:

Bli b'la blub
Zitat:

Don't
Ich kann das ins Programm laden und es gibt keinen Fehler. Aber ein so in eine Variable geschriebener Satz in einem MessageDlg erzeugt keinen Umbruch nach den Windows typischen 60 bis 70 Zeichen.

Gibt es irgendeine Delphi- oder Windowsfunktion, sodass der Quote in er Textdatei nicht escaped werden muss und in Delphi trotzdem korrekt interpretiert wird?

Uwe Raabe 17. Jun 2019 23:40

AW: Text aus Datei laden, Single Quote Problem
 
Zitat:

Zitat von DieDolly (Beitrag 1434881)
Ich lese Text aus einer Datei, der dann in meinem Programm angezeigt wird.

Wie denn genau?

DieDolly 18. Jun 2019 10:17

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.

Uwe Raabe 18. Jun 2019 10:20

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.

DieDolly 18. Jun 2019 10:25

AW: Text aus Datei laden, Single Quote Problem
 
Hier ein Beispiel
Delphi-Quellcode:
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;
Ich jage alles durch ReadValue, um doppelten Code zu vermeiden. UTF8ToWideString steht da, da sonst Umlaute nicht richtig angezeigt werden.

Moombas 18. Jun 2019 10:26

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)?

DieDolly 18. Jun 2019 10:32

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.

Neutral General 18. Jun 2019 10:38

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

DieDolly 18. Jun 2019 10:39

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.

Neutral General 18. Jun 2019 10:42

AW: Text aus Datei laden, Single Quote Problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Bei mir das gleich Ergebnis:
Delphi-Quellcode:
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;
https://www.delphipraxis.net/attachm...1&d=1560850977


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:28 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz