![]() |
Strings zusammenfügen
Hi,
ich habe ein Programm, welches mir alle Leerzeichen in eine neue Zeile verwandelt, außer es kommt mehrfach ein Leerzeichen hintereinander vor. Wie kann man aus einen aufgespaltenem String (" oder ') eine ganze Zeile machen ? Also aus "Hello world" wieder "Hello world" Ich habe bisher diesen Code, funktioniert natürlich noch nicht :(
Delphi-Quellcode:
ad := Pos('"', result[i]);
ae := Pos('"', result[> ad]); // > ad gibt es halt nicht if (result[ad] = '"') and (ae) then ReplaceString(result[],#13#10,#20,rfReplaceAll); |
Re: Strings zusammenfügen
Hallo Nils :hi:
2 Möglichkeiten: - PosEx - selber machen --> eine einzige Forschleife letztes ist natürlich schneller, macht aber mehr Arbeit... Und, wenn es auf die Geschwindigkeit ankommt würd ich das in der selben Schleife machen, wie das Aufspalten, d.h., wenns in Anführungszeichen steht, gar nicht erst trennen... und noch n Link: ![]() mfg Christian |
Re: Strings zusammenfügen
Alternativ mit StringReplace alle #13#10 in ' ' umwandeln ;)
€dit: hab grad gelesen: Dein Problem ist, dass die Funktion einen String zurückgibt, du musst also den Rückgabewert nehmen. |
Re: Strings zusammenfügen
Habe jetzt fast alles gelöst:
Delphi-Quellcode:
Der Code funktioniert, danke!
function TfrmMain.get(Text : String): String;
var i : integer; Flag : Boolean; begin result := Text; i := 0; Flag := False; while i < Length(result) do begin if result[i] = '"' then Flag := not Flag; if (result[i] = #13) and (result[i+1] = #10) and (Flag) then begin delete(result,i,2); result := copy(result, 0, i-1)+' '+ Copy(result, i, Length(result)); dec(i); end; inc(i); end; end; procedure TfrmMain.Button1Click(Sender: TObject); var i : Integer; sl : TStrings; space : TStrings; result : TStrings; begin sl := TStringList.Create; space := TStringList.Create; result := TStringList.Create; sl.LoadFromFile('...'); for i := 0 to sl.Count - 1 do begin space.Add(StringReplace(sl[i], ' ', #13#10, [rfReplaceAll])); result.Add(StringReplace(space[i], ',', #13#10, [rfReplaceAll])); end; for i := 0 to sl.Count - 1 do begin Memo1.Lines.Add(Get(result[i])); end; sl.Free; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz