AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Zeilenumbruch im Text als Quadrate angezeigt

Zeilenumbruch im Text als Quadrate angezeigt

Ein Thema von GoTo0815 · begonnen am 28. Aug 2013 · letzter Beitrag vom 28. Aug 2013
Antwort Antwort
GoTo0815

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

Zeilenumbruch im Text als Quadrate angezeigt

  Alt 28. Aug 2013, 13: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
MeierZwoo

Registriert seit: 3. Dez 2012
106 Beiträge
 
#2

AW: Zeilenumbruch im Text als Quadrate angezeigt

  Alt 28. Aug 2013, 14:12
Chr(13) + Chr(10) ist doch der Windows - Standard Zeilenumbruch, oder?
13dec und 10dec haben nichts mit Windows zu tun, sondern sind im ANSI-ASCII die Steuerzeichen für CR LF - also OS unabhängig - und gab es schon zig Jahre vor Windows.

Du solltest mal eine Zeile als Ordinalwerte protokolieren lassen, evtl. liegen vorm von dir hinzugefügten CR LF schon Steuerzeichen aus der Memozeile, weshalb ein sog. "nichtdruckbares" Zeichen oder nicht belegtes Zeichen am Ende der Zeile hängt und deshalb als nicht darstellbar = leeres Quadrat angezeigt wird.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

AW: Zeilenumbruch im Text als Quadrate angezeigt

  Alt 28. Aug 2013, 14:19
Würde trim(Memo.Lines.Text) nicht ausreichen? Und für den Zeilenumbruch gibt es die Konstante sLinebreak, da muss man sich keine Gedanken machen, welche Zeichen da nun dahinterstehen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 Uhr.
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