Einzelnen Beitrag anzeigen

rtky_trunks

Registriert seit: 5. Mai 2005
Ort: Breisach am Rhein
16 Beiträge
 
Delphi 7 Enterprise
 
#1

Split Function, funktioniert net richtig???

  Alt 8. Okt 2005, 18:47
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:
     i := 0;
     while not (split(Clients_online, ':', i) = '') do
      begin
       lbClients.Items.Add(split(Clients_online, ':', i));
       i := i+1;
      end;
Die Split function sieht so aus:

Delphi-Quellcode:
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;
Die hab ich uebrigens von dem DelphiSwissCenter.

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 ^^
Matrix is a Puffer like a Net-Port
  Mit Zitat antworten Zitat