Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeilenumbrüche entfernen (https://www.delphipraxis.net/10206-zeilenumbrueche-entfernen.html)

Jan 13. Okt 2003 18:02


Zeilenumbrüche entfernen
 
Hallo DP,
ich muss einen Text aus einem Memofeld zu zurechtformatieren, dass er ohne Zeilenumbrüche gespeichert wird, ich aber die Zeilenumbrüche später wiederherstellen kann, weil sonst das Einlesen des Textes nach dem speichern nichtmehr funktioniert. Kann ich das mit Stringreplace() machen? Und wenn ja, welches muss dann der oldstring sein, den ich ersetzen muss?
Wenn das nicht geht, wie dann?
Gruß
Jan

Wormid 13. Okt 2003 18:15

Re: Zeilenumbrüche entfernen
 
Z.B. so:

Delphi-Quellcode:
Memo1.Text := StringReplace(Memo1.Text, #13#10, '\\N', [rfReplaceAll]);
Für '\\N' kannst Du natürlich auch was anderes nehmen...


Gruß

Wormid

Jan 13. Okt 2003 18:21

Re: Zeilenumbrüche entfernen
 
Danke, klappt, wobei ich mich natürlich wieder schlagen könnt, hab #10#13 versucht gehabt, und hat natürlich net gefunzt. :wall:
Gruß
Jan

Tom 13. Okt 2003 18:26

Re: Zeilenumbrüche entfernen
 
Ab D6 sollte man gleich auf sLineBreak zurückgreifen. Dann kann man sich nicht so leicht vertun.

Christian Seehase 13. Okt 2003 18:47

Re: Zeilenumbrüche entfernen
 
Moin Jan,

nur mal eine Verständnisfrage:
Wozu musst Du die Zeilenumbrüche entfernen, wenn Du sie zum Einlesen wieder hinzufügen musst?

Duffy 13. Okt 2003 18:50

Re: Zeilenumbrüche entfernen
 
Hallo Jan,
das was Christian gern wissen würde, würde mich auch interessieren ...
bye

Jan 15. Okt 2003 18:39

Re: Zeilenumbrüche entfernen
 
Ich muss die Zeilenumbrüche entfernen, weil meine Anwendung auf einem einfachen Prinzip der Datenspeicherung basiert, nämlich einer CSV-Datei. Daher würde ein abgespeicherter Text, in dem sich ein Zeilenumbruch befindet eine neue Zeile beim Auslesen erstellen und die Struktur wäre dahin.
Gruß
Jan

himitsu 15. Okt 2003 18:45

Re: Zeilenumbrüche entfernen
 
lösche besser gleich alle Steuerzeichen im String (#0 bis #31)

Duffy 16. Okt 2003 06:15

Re: Zeilenumbrüche entfernen
 
Hallo Jan,
da ein Memo auf ein TStrings Object basiert, solltest Du Dir mal die Properties (Eigenschaften) von TStrings ansehen. Da gibt es zum Beispiel die Eigenschaft

Delimiter:
Zitat:

Zitat von Delphi Hilfe
Die Eigenschaft Delimiter legt das Trennzeichen für die Eigenschaft DelimitedText fest.

Delphi-Syntax:

property Delimiter: Char;

C++ Syntax:

__property char Delimiter = {read=GetDelimiter, write=SetDelimiter};

Beschreibung

Mit Delimiter können Sie das Trennzeichen ermitteln oder festlegen, das von der Eigenschaft DelimitedTextverwendet wird. DelimitedText führt alle Strings im TStrings-Objekt zu einem String zusammen, in dem die einzelnen Strings durch das in Delimiter festgelegte Zeichen voneinander getrennt sind.

DelimitedText:
Zitat:

Zitat von Delphi Hilfe
TStrings ist die Basisklasse für Objekte, die eine Liste mit Strings darstellen.

Unit

Classes

Beschreibung

Von TStrings abgeleitete Objekte ermöglichen die Speicherung und Bearbeitung von String-Listen. TStrings enthalten abstrakte bzw. rein virtuelle (C++ Terminologie) Methoden und sollten nicht direkt instantiiert werden.

Nachkommen von TStrings können entweder unterschiedliche Zeichenketten (wie z.B. die einzelnen Zeilen eines Listenfeldes) oder eine einzige lange Texteinheit repräsentieren, deren Elemente dann separat bearbeitet werden können. Die Eigenschaften und Methoden von TStrings bieten zahlreiche Werkzeuge zur String-Listenbearbeitung an.

Folgende Möglichkeiten stehen zur Verfügung:

Strings können mittels Index in die Liste eingefügt bzw. gelöscht werden.
Die Reihenfolge der String-Einträge lässt sich verändern.
Strings können über ihre Listenposition angesprochen werden.
Strings können aus bzw. in eine Datei oder einen Stream gelesen bzw. geschrieben werden.
String-Einträge können mit Objekten verbunden werden.
Strings können als Namens/Wertepaare gespeichert und abgerufen werden.

Bei der Eigenschaft NameValueSeparator finden Sie eine Erläuterung zu Namens/Wertepaaren.

und noch CommaText:
Zitat:

Zitat von Delphi Hilfe
Die Eigenschaft CommaText führt die Strings eines TStrings-Objekts auf. Sie wird im SDF-Format (System Data Format) dargestellt.

Delphi-Syntax:

property CommaText: string;

C++ Syntax:

__property AnsiString CommaText = {read=GetCommaText, write=SetCommaText};

Beschreibung

Die Eigenschaft CommaText bietet beim Schreiben oder Lesen die Möglichkeit, sämtliche Listeneinträge eines Objekts von TStrings wie einen einzigen, durch Kommas getrennten String zu behandeln.

Wenn die Eigenschaft CommaText gelesen wird, gelten folgende Konventionen: Jeder Eintrag der String-Liste, der Leerzeichen, Kommas oder Anführungszeichen enthält, wird in Anführungszeichen (") gesetzt. Ist ein Anführungszeichen (") selbst Teil eines Strings, wird es verdoppelt. Ein Beispiel: Die String-Liste

Stri,ng 1
Stri"ng 2
String 3
String4

wird von der Eigenschaft CommaText in der folgenden Form zurückgegeben:

"Stri,ng 1","Stri""ng 2","String 3",String4

Wenn eine Wertzuweisung an CommaText erfolgt, wird der Wert entsprechend dem SDF-Format zerlegt. Dies setzt voraus, dass Zeichenketten durch Kommas oder Leerzeichen getrennt und optional in Anführungszeichen eingeschlossen sind. Anführungszeichen, die Teil des Strings sind, müssen zweimal hintereinander stehen (""), sonst werden sie als Begrenzungszeichen interpretiert. Leerzeichen und Kommas, die nicht von Anführungszeichen eingeschlossen sind, werden als Trennzeichen behandelt. Zwei aufeinander folgende Kommas gelten als Leer-String. Leerzeichen, die unmittelbar vor oder nach einem Trennzeichen stehen, werden dagegen ignoriert. Angenommen, CommaText wird folgendermaßen gesetzt:

"Stri,ng 1", "Stri""ng 2" , String 3,String4

Die String-Liste enthält danach folgende Einträge:

Stri,ng 1
Stri"ng 2
String
3
String4

Hinweis: Die Eigenschaft CommaText entspricht der Eigenschaft DelimitedText, wenn diese mit einem Komma als Trennzeichen und dem Zeichen " als Anführungszeichen verwendet wird.

Wird an den Ausgangsstring ein Komma angefügt, erscheint in der Stringliste ein leerer Eintrag. Ein Beispiel für CommaText:

"String1, String 2, String 3,"

Die Stringliste hat dann folgenden Inhalt:

String1
String2
String3
<Blank>

bye

Christian Seehase 16. Okt 2003 11:37

Re: Zeilenumbrüche entfernen
 
Moin Jan,

Zitat:

Zitat von Jan
Daher würde ein abgespeicherter Text, in dem sich ein Zeilenumbruch befindet eine neue Zeile beim Auslesen erstellen und die Struktur wäre dahin.

Bislang kannte ich CSV Dateien nur als Dateien mit Sätzen, die eine feste Anzahl von Feldern je Datensatz enthalten, wobei jeder Satz eine Zeile darstellte.

@Himitsu:
#09 (TAB) sollte wohl besser bleiben.
Der wird ja u.U. als Trennzeichen gebraucht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:39 Uhr.
Seite 1 von 2  1 2      

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