![]() |
Split Function, funktioniert net richtig???
Hallo,
ich hab nen kleines Problem mit ner Split function(wenn es wirklich daran liegt). Ich hoffe ihr koennt mir weiterhelfen. Also. Es ist so - ich bekomm vom Server ein String geschickt in der die clients die online sind gespeichert sind. zbs.: Clients_online := 'Chris:Bobi:Marc:Oli'; Nun mein code sieht so aus: lbClients ist in dem Fall ein ListBox.
Delphi-Quellcode:
Die Split function sieht so aus:
i := 0;
while not (split(Clients_online, ':', i) = '') do begin lbClients.Items.Add(split(Clients_online, ':', i)); i := i+1; end;
Delphi-Quellcode:
Die hab ich uebrigens von dem DelphiSwissCenter.
function split(input: string; schar: Char; s: Integer): string;
var c: array of Integer; b, t: Integer; begin Dec(s, 2); // for compatibility with very old & slow split function t := 0; // variable T needs to be initialized... setlength(c, Length(input)); for b := 0 to pred(High(c)) do begin c[b + 1] := posex(schar, input, succ(c[b])); // BREAK LOOP if posex looped (position before previous) // or wanted position reached.. if (c[b + 1] < c[b]) or (s < t) then break else Inc(t); end; Result := Copy(input, succ(c[s]), pred(c[s + 1] - c[s])); end; Es Funktioniert wunderbar wenn der String so heisst 'Chris:'. Aber sobald so ein String 'Chris:Bobi:Oli' kommt. Ensteht ein Totales durcheinander. Das wird nicht so aufgelistet: Chris Bobi Oli sondern Chris chris Oli Wenn nur 2 String kommen ('Chris:Bobi') entstehen ploetzlich 3 clients. Dass hier: Chriss,Oli, Oli Das ist mir ein Megaraetzel. Ich hoffe ihr koennt mir Helfen. Gruss Marc Ps.: Sry wegen der Englischen Tast. Aber ich hab nen Englisches Notebook :zwinker: ^^ |
Re: Split Function, funktioniert net richtig???
Hallo Marc,
du könntest auf die Funktion Split gut verzichten:
Delphi-Quellcode:
Grüße vom marabu
procedure TDemoForm.ShowClients(sClients: string);
var sl: TStringList; // Hilfsobjekt für String-Zerlegung begin // Instanz erzeugen sl := TStringList.Create; // Parser auf Trennzeichen colon umpolen sl.Delimiter := ':'; // Parser füttern, die einzelnen Namen werden dadurch als // einzelne Items in der Liste geführt sl.DelimitedText := sClients; // Übernehmen der Items von sl nach lbClients.Items lbClients.Items.Assign(sl); // lbClients: ListBox // Hilfsobjekt zerstören sl.Free; end; procedure TDemoForm.ShowButtonClick(Sender: TObject); begin ShowClients('chris:oli:marc:seppl'); end; Jetzt mit Kommentaren... |
Re: Split Function, funktioniert net richtig???
Hi,
Danke fuer die antwort. Aber kannst du das bitte fuer mich ein bisschen verstaendlicher Beschreiben? Also 'n bisschen Kommentieren^^ :oops: Hab da jetzt nicht genau verstanden was du da machst. Gruss Marc |
Re: Split Function, funktioniert net richtig???
Marc, ich habe meinen Code etwas angereichert. Wenn du einzelne Methoden oder Komponenten noch nicht kennst, dann kannst du mit dem Cursor auf dem Text die F1-Taste drücken und erhältst die passende Erklärung aus der Delphi Online-Hilfe.
marabu |
Re: Split Function, funktioniert net richtig???
Ja, cool.
Grosses Danke an dich. Habs gleich eingebaut und Funktionukt einwandfrei... Danke nochmal Gruss Marc |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:06 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