AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Aufteilen eines Strings in mehrere Zeilen (Leerzeichen)
Thema durchsuchen
Ansicht
Themen-Optionen

Aufteilen eines Strings in mehrere Zeilen (Leerzeichen)

Ein Thema von Nils_13 · begonnen am 5. Dez 2006 · letzter Beitrag vom 5. Dez 2006
Antwort Antwort
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#1

Aufteilen eines Strings in mehrere Zeilen (Leerzeichen)

  Alt 5. Dez 2006, 19:37
Hi,

wie kann man aus
asd bla

das machen:
asd
bla

?

Ich habe bereits zu dieser Aufspaltung diesen Code:
Delphi-Quellcode:
procedure TLexer.ScanLine(s : String);
var i : Integer;
begin
  i := Pos(s, ' ');
  if s[i + 1] = ' then
    WriteLn('Mehrere Leerzeichen')
  else
    WriteLn('Ein Leerzeichen');
end;
Der Code durchsucht nach Leerzichen und überprüft, ob mehrere Leerzeichen vorhanden sind, da nicht jedes Leerzeichen gleich eine neue Zeile sein soll, sondern z.B. zwei Leerzeichen (direkt hintereinander) nur eine neue Zeile ergeben sollen. Mein Problem ist jetzt, das Ausgeben von "asd" und "bla" (soll wie oben aussehen). Wie könnte man dies lösen ?
  Mit Zitat antworten Zitat
EDatabaseError

Registriert seit: 11. Mai 2005
Ort: Göppingen
1.238 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Aufteilen eines Strings in mehrere Zeilen (Leerzeichen)

  Alt 5. Dez 2006, 19:47
Öhm warum ersetzt du nicht alle zwei leerzeichen durch ein #13+#10 ???

Dazu gibts aber auch schon einiges im Forum
Tobias
It's not a bug, it's a feature.
  Mit Zitat antworten Zitat
Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#3

Re: Aufteilen eines Strings in mehrere Zeilen (Leerzeichen)

  Alt 5. Dez 2006, 20:01
Ja können maximal 2 Leerzeichen hintereinander stehen oder ist die mögliche Anzahl der Leerzeichen nach oben offen? Wenn nein, dann mach doch einfach:

Delphi-Quellcode:
  s := StringReplace(s, ' ', #13 + #10, [rfReplaceAll]);
s := StringReplace(s, ' ', #13 + #10, [rfReplaceAll]);
writeln(s);
Gruß St.Pauli
  Mit Zitat antworten Zitat
Maja Jessica

Registriert seit: 16. Apr 2005
Ort: Dortmund
95 Beiträge
 
Delphi 4 Standard
 
#4

Re: Aufteilen eines Strings in mehrere Zeilen (Leerzeichen)

  Alt 5. Dez 2006, 20:05
Hi,

oder von Hand (jedenfalls so in etwa):

Delphi-Quellcode:
procedure TForm1.ScanLine(zeile : String);
var i : integer;
    neu : string;
begin
  Memo1.Clear;
  neu := '';
  for i := 1 to length(zeile) do
  begin
    if zeile[i] <> ' then neu := neu + zeile[i];
    if (i > 1) AND (zeile[i] = ' ') AND (zeile[i-1] <> ' ') OR (i = length(zeile)) then
      begin
      Memo1.Lines.Add(neu);
      neu := '';
    end;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Scanline(edit1.Text);
end;
Alle Angaben ohne Gewehr

MJ
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Aufteilen eines Strings in mehrere Zeilen (Leerzeichen)

  Alt 5. Dez 2006, 20:08
der Ansatz von Maja Jessica ist nicht schlecht. Allerdings würde ich nicht ständig ein Zeischen an den String anhängen sondern den Buffer gleich auf die maximal mögliche größe setzen und am Ende einmal die größe korrigieren. Ist bedeutend schneller da nicht jedesmal neu speicher angefordert werden muss und der String umkopiert werden muss (was so intern zwangsläufig passiert)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:57 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