![]() |
AW: Text aus Datei laden, Single Quote Problem
Zitat:
|
AW: Text aus Datei laden, Single Quote Problem
Nicht die Datei macht ärger sondern einzelne Werte da drin. Beispiele stehen schon im ersten Beitrag.
Das Problem wurde aber schon gehoben. WrapText kam mit dem ' nicht klar. Schade, dass ich jetzt alle ' erst verdoppel muss, nur um sie danach wieder zu normalisieren. |
AW: Text aus Datei laden, Single Quote Problem
Zitat:
Mein Hinweis aus #19 wenn ein Zeichen z.b. ' angezeigt/gedruckt wird, dann kann es sich um ein "falsches" Zeichen handeln. Siehe hierzu ![]() ![]() So wurdenz.B. die {} in TP Sourcen auf CP/M Rechnern als Ü Ö angezeigt. Diesen Effekt kann man sich zu Nutze machen indem man ein Zeichen nutzt, das zwar aussiht wie ein Hochkomma aber einen anderen Wert bestzt. Gruß K-H |
AW: Text aus Datei laden, Single Quote Problem
Zitat:
Wie schon von Uwe weiter oben deutlich gemacht, setzt WrapText keinen Break innerhalb von Quotes ( ' oder " ). Jetzt stößt WrapText in "Deinem" Text auf ein Quote. Da er innerhalb von Quotes kein Break setzen darf, sucht er das nächste Quote, in der Absicht den in ' stehenden Teil zu überspringen. Das wird dann aber bei "Deinen" Texten i.d.R. nicht gefunden. Also nicht "WrapText kommt nicht klar" sondern "Du benutzt eine Funktion für etwas, für das sie nicht gemacht ist". Vielleicht wäre es besser, ein eigenes WrapText zu verwenden, das Quotes nicht als Ein-/Ausleitung eines Textteils betrachtet sondern so behandelt, wie alle anderen Zeichen. Zum Beispiel so: (Auf die Schnelle getippt und nicht ausgiebig getestet).
Delphi-Quellcode:
FUNCTION WrapText(const Line,BreakStr:String; const BreakChars:TSysCharSet;
MaxCol:Integer):String; var I,J,K,Len:Integer; begin Len:=Length(Line); if Len<=MaxCol then Exit(Line); Result:=''; I:=1; J:=MaxCol; repeat K:=J; while (J>I) and not CharInSet(Line[J],BreakChars) do Dec(J); if J=I then begin J:=K; while (J<Len) and not CharInSet(Line[J],BreakChars) do Inc(J); end; // J zeigt auf Break oder auf letztes Zeichen in Line if Result<>'' then Result:=Result+BreakStr; Result:=Result+Copy(Line,I,J-I+1); I:=J+1; Inc(J,MaxCol); until J>=Len; if I>Len then Exit; if Result<>'' then Result:=Result+BreakStr; Result:=Result+Copy(Line,I,MaxInt); end; |
AW: Text aus Datei laden, Single Quote Problem
Um es noch mal an einem Beispiel zu verdeutlichen:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:19 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