![]() |
Re: String zerlegen; Trenner
Delphi-Quellcode:
Das dürfte doch deinem gewünschten sehr nahe kommen ;)
function cuttext(AString: string; delimiter: Char):array of string
var i: integer; begin setlength(result, 0); i := 0; while (pos(delimiter, astring) <> 0)then begin setlength(result, i+1); result[i] := copy(astring, 0, pos(delimiter, astring)-1); delete(astring, 1, pos(delimiter, astring)); inc(i); end; end; Code ungetestet, habe den nur schnell hier geschrieben! EDIT: Habe die Boolean rausgenommen, ich glaub die Abfrage nach dem Trennzeichen düfte genügen |
Re: String zerlegen; Trenner
Hi,
Hab mal was gebaut. Hab mich bisschen an der VCL Orientiert aber passt schon ;)
Delphi-Quellcode:
Gruß
interface
uses ...; type TStringlist = class(Classes.TStringlist) private FDelText: String; procedure SetDelimitedText(const Value: String); public property DelimitedText: String read FDelText write SetDelimitedText; end; implementation procedure TStringlist.SetDelimitedText(const Value: String); var P,tmp: PChar; S: String; begin FDelText := Value; BeginUpdate; Clear; P := PChar(Value); while P^ <> #0 do begin tmp := P; while (P^ >= ' ') and (P^ <> Delimiter) do // >= ist wichtig.. Im Original ists nur > inc(p); SetString(S,tmp,P-tmp); Add(S); inc(p); end; EndUpdate; end; // Anwendung procedure TForm1.Button1Click(Sender: TObject); var S: TStringlist; begin S := TStringlist.Create; try S.Delimiter := ';'; S.DelimitedText := 'Ich;schreibe was;hier hin;!!!'; Memo1.Text := S.Text; finally S.Free; end; end; Neutral General |
Re: String zerlegen; Trenner
Vielen Dank an die Helfer,
Ähnliches habe ich in einem anderen Programm, als ich von 'delimitedText' noch nichts wußte, auch schon als Lösung geschrieben. Ich hoffte, daß eine eingebaute Funktion eine einfache Möglichkeit wäre. Klaus-Peter |
Re: String zerlegen; Trenner
Den Vorschlag des neutralen Generals werde ich mir auch noch einmal unter dem Aspekt "praktisches Beispiel für Modifikation einer Funktion" anschauen.
|
Re: String zerlegen; Trenner
|
Re: String zerlegen; Trenner
Wenn man eine wasserdichte Lösung braucht, um CSV-Dateien zu lesen:
![]() Damit darf dann auch das Trennzeichen in den Nutzdaten enthalten sein. |
Re: String zerlegen; Trenner
Hallo, Manuel,
die Frage war ja gerade nicht, wie oft schon jemand solche Funktionen selbst geschrieben hat. Das habe ich bei der Suche gesehen. Die Frage war nach einer Delphi-eigenen Funktion (die aber auch funktionieren sollte). Klaus-Peter |
Re: String zerlegen; Trenner
Ich frage mich ja, warum immer alles so umständlich sein muß :gruebel:
Es geht doch nur darum, einen Text der an allen Vorkommen von ; aufzutrennen. Da die Stringliste hier ja tatsächlich nicht so recht mit "DelimitedText" funktioniert machen wir es doch einfach(!) selbst:
Delphi-Quellcode:
procedure SplitString(iTextToSplit: string; iDelimiter: Char; ioSL: TStrings);
begin ioSL.Clear; ioSL.Text := StringReplace(iTextToSplit, iDelimiter, sLineBreak, [rfReplaceAll]); end; |
Re: String zerlegen; Trenner
Hallo Klaus-Peter,
lies dir mal die Online-Hilfe zur Eigenschaft StrictDelimiter durch - das könnte deinen Vorstellungen entsprechen. Grüße vom marabu |
Re: String zerlegen; Trenner
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 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 by Thomas Breitkreuz