Einzelnen Beitrag anzeigen

GoTo0815

Registriert seit: 18. Mai 2004
148 Beiträge
 
Delphi XE2 Professional
 
#1

Zeilenumbruch im Text als Quadrate angezeigt

  Alt 28. Aug 2013, 12:47
Guten Tag,

sollte das bereits besprochen worden sein, so bitte ich um Verzeihung, ich habe das nicht gefunden.
Bin grundsätzlich eher der ersteinmal Suchtyp

Ziel ist es einen Text aus einem Memo in einen String umzuwandeln, den ich dann in eine Zelle eines StringGrids kopieren kann.
In meiner eigentlichen Function mach ich noch etwas mehr mit s bevor ich das an Result übergebe. Ich ersetzte dort je Zeile bestimmte Platzhalten in geschweiften Klammern. Daher muss ich diese MemoToString umwandlung hier so manuell machen (denke ich jedenfalls).

Nun das Problem. Die Function lief sehr lange einwandfrei. Habe ausschließlich bei diesem Projekt D2007 eingesetzt.
In den einzelnen Zellen des Stringgrids waren die Zeichen CHR(13) + Chr(10) als versteckte Zeichen nicht angezeigt. Habe ich aber das StringGrid als CSV exportiert und dann in Excel geladen, war alles wunderbar.

Nun musste ich meinen Rechner neu aufsetzen und somit auch D2007 neu installieren. Nach einer Änderung am Code an einer ganz anderen Stelle und dem nachfolgenden Compiling liefert die unten dargestellte Function nun sichtbare Quadrate (quadratische Zeichen) direkt im Text. Die sind also nicht mehr versteckt. Das führte dazu, dass der empfänder meiner exportieren CSV die Zeilenumbrüche (import unter Linux in eine Datenbank) nicht mehr als solche erkannte.

Wir haben das Problem zwar auf der Linux-Seite jetzt beheben können, also den Zeilenumbruch nun anders interpretiert, aber das Verhalten beunruhigt mich dennoch. Warum liefert D2007 (ggf. war da irgendwo ein neueres Update zwischen) nun eine andere Stringdarstellung.

+ Chr(13) + Chr(10) ist doch der Windows - Standard Zeilenumbruch, oder?


Delphi-Quellcode:
function MemoToString(aMemo: TMemo): String;
var i: Integer;
begin
  Result := '';
  for i := 0 to aMemo.Lines.Count - 1 do
  begin
    Result:= Result + aMemo.Lines[i];;
    if i < aMemo.Lines.Count - 1 then Result := Result + Chr(13) + Chr(10);
  end;
end;
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!
  Mit Zitat antworten Zitat