AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Zeilenumbruch von TStrings finden

Ein Thema von messie · begonnen am 25. Mär 2010 · letzter Beitrag vom 25. Mär 2010
Antwort Antwort
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#1

Zeilenumbruch von TStrings finden

  Alt 25. Mär 2010, 11:16
Moin,

ich suche gerade im BCB nach einem Zeilenumbruch von TStrings um einen Text aus einem Memo zeilenweise auszudrucken.
Nur findet die Funktion Pos() nicht das, was ich suche.

Was mache ich da falsch?

Code:
i = Pos(Char(13),Comment->Text)
Auch der Zugriff auf den Substring
Code:
i = Pos(String(Char(13)),Comment->Text.w_str());
liefert keinen sinnvollen Wert;

Comment ist eine TStringList, die den Text aus einem TMemo übergeben bekommt.

Das interessante ist, das
Code:
s = Comment->Text.SubString(1,Pos(Char(13),Comment->Text)-1);
mir den korrekten SubString rauskopiert.

Grüße, Messie
  Mit Zitat antworten Zitat
Tryer

Registriert seit: 16. Aug 2003
200 Beiträge
 
#2

Re: Zeilenumbruch von TStrings finden

  Alt 25. Mär 2010, 11:27
Hast Du den Delimiter verstellt oder warum such Du in einer Komponente die Strings zeilenweise auflistet nach Zeilenumbrüchen im String?

Grüsse, Dirk
  Mit Zitat antworten Zitat
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Zeilenumbruch von TStrings finden

  Alt 25. Mär 2010, 11:28
Also wenn ich mich recht erinnere, dann werden Zeilenumbrüche unter Windows als Carriage Return + Line Feed oder
Char(13) + Char(10) abgebildet.

Man kann aber auch einfach #13#10 verwenden
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#4

Re: Zeilenumbruch von TStrings finden

  Alt 25. Mär 2010, 11:33
Zeilenumbrüche:

#13 - MAC (das neue RichEdit in Windows nutzt aber auch dieses )
#10 - Linux
#13#10 - Windows
#$0085
#13#$0085
#$2028

Sicher daß wirklich eine #13 vorkommt?

@HeikoAdams:
Dann müßte aber dennoch die #13 / Char(13) gefunden werden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Zeilenumbruch von TStrings finden

  Alt 25. Mär 2010, 11:54
Zitat von himitsu:
Zeilenumbrüche:
Sicher daß wirklich eine #13 vorkommt?
Ja, ziemlich.
Erstens funktioniert das Rauskopieren des Substring.
Dann kann ich mir im Debugger den String ansehen, der hat je nach Anzeige "\r" oder 0x000D wenn man den Debugger-Hint aufklappt.
Ich denke, es gibt irgendein Problem mit dem internen Cast des Substring.

Das mit dem DelimitedText werde ich auch mal probieren, das andere finde ich trotzdem wichtig, denn die Funktion Pos() benutze ich schon häufiger mal.

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von Sybok Factor
Sybok Factor

Registriert seit: 15. Jan 2003
Ort: Billerbeck
39 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Zeilenumbruch von TStrings finden

  Alt 25. Mär 2010, 12:20
also unter Delphi hat der Zugriff mit  i := Pos(#10, AStringlist.Text); bzw.  i := Pos(#13, AStringlist.Text); funktioniert. Allerdings musste ich für das Schreiben in ein XML Dokument nach beiden suchen und elimieren.
Hoffe es hilft dir.

Viele Grüße
Sybok
Jetzte michse verstehen dein Problem!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#7

Re: Zeilenumbruch von TStrings finden

  Alt 25. Mär 2010, 12:58
Nur um das nochmals aufzugreifen...

- Eine StringListe enthält die Strings schon in getrennter Form.
- Der Zugriff auf .Text setzt alles jedesmal zu einem neuen String zusammen.
- Wozu also selber nach dem Zeilenumbruch suchen, wenn man es doch schon fertig zerlegt vorliegen hat?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Zeilenumbruch von TStrings finden

  Alt 25. Mär 2010, 12:58
Zitat von Sybok Factor:
Jetzte michse verstehen dein Problem!
Ja, mich jetzt auch

AStringList.Text ist unter Delphi zwar auch ein Pointer, der verweist aber auf einen vorhandenen Variablenspeicher.

AStringList->Text ist nur ein Pointer, hinter dem offenbar kein Variablenspeicher steht. Deshalb funktionier Pos() auf einen solchen Ausdruck im BCB nicht. Innerhalb der Funktion AStringList->Text.SubStr() funktioniert Pos(), weil offensichtlich zuerst für ->Text Speicher reserviert wird, dann kopiert wird und anschließend darin gesucht wird.

Ich habe nun einen Variablenspeicher geschaffen und ->Text da reinkopiert

Code:
String s1;
s1 = AStringList->Text;
s1.Delete(1,Pos(Char(13),s1)+1); //das geht jetzt richtig
Mannomann, da soll man mal drauf kommen...

Danke für die Unterstützung, Messie
  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 20:01 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