Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#24

AW: Text aus Datei laden, Single Quote Problem

  Alt 19. Jun 2019, 13:28
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.
Na ja, WrapText kommt mit dem ' schon klar.
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;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat