AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi String zerlegen ab einer bestimten länge aber auf...

String zerlegen ab einer bestimten länge aber auf...

Ein Thema von Bauer007 · begonnen am 19. Mär 2008 · letzter Beitrag vom 19. Mär 2008
Antwort Antwort
Seite 2 von 2     12
Bauer007

Registriert seit: 17. Sep 2007
Ort: Husum
56 Beiträge
 
Delphi XE2 Professional
 
#11

Re: String zerlegen ab einer bestimten länge aber auf...

  Alt 19. Mär 2008, 16:46
habe rausgefunden woran es liegt!
Da es der einzige Text it der probleme macht am C'T
Das ' reicht um die Funktion auszuhebeln...
Hmpf danke Euch
Sebastian
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#12

Re: String zerlegen ab einer bestimten länge aber auf...

  Alt 19. Mär 2008, 20:28
Hallo Sebastian,

mit dem single quote bist du das Opfer einer Schlamperei der VCL Macher geworden. Die Jungs haben eine Sonderbehandlung der beiden ASCII QuoteChars in der Funktion fest verdrahtet. Sorry, aber das wusste ich auch nicht.

Ich greife mal den Ansatz von alzaimar auf und lege eine Funktion WrapText() mit kompatibler Signatur vor:

Delphi-Quellcode:
function WrapText(const Line, BreakStr: string; const BreakChars: TSysCharSet;
  MaxCol: Integer): string;
var
  s: TStrings;
  iFirst, iLast: Integer;
begin
  s := TStringList.Create;
  try
    iFirst := 1;
    while iFirst < Length(Line) do
    begin
      iLast := Min(Pred(iFirst + MaxCol), Length(Line));
      while (iLast > iFirst)
      and (iLast < Length(Line))
      and not (Line[iLast] in BreakChars) do
        Dec(iLast);
      s.Add(BreakStr + Copy(Line, iFirst, Succ(iLast - iFirst)));
      iFirst := Succ(iLast);
    end;
    Result := s.Text;
  finally
    s.Free;
  end;
end;
Wenn ich deinen Beispieltext in ein Memo lade, dann erhalte ich ein akzeptables Ergebnis so:

Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
  s: TStrings;
  i: Integer;
begin
  s := TStringList.Create;
  with Memo do
  begin
    for i := 0 to Pred(Lines.Count) do
      s.Text := s.Text + WrapText(Trim(Lines[i]), '> ', [' ', #9], 50);
    Lines.Text := s.Text;
  end;
  s.Free;
end;
Freundliche Grüße
  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 16:18 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