Einzelnen Beitrag anzeigen

Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Diese funktion schneller machen?

  Alt 29. Okt 2004, 11:42
moin,

ich habe vor langer zeit mal folgende funktion geschrieben, die ich SEHR oft benutze (meistens zum parsen):

Delphi-Quellcode:
function GetTok(str: string; Tok: integer; sep: char): string;
var
  index: integer;
begin
  result := '';
  if (str = '') or (str = sep) or (Tok < 1) or (sep = '') then
    exit;
  if (pos(sep, str) = 0) and (Tok = 1) then
  begin
    result := str;
    exit;
  end;
  str := str + sep;
  while pos(sep+sep, str) > 0 do
    delete(str, pos(sep+sep, str), 1);
  if pos(sep, str) = 1 then
    delete(str, 1, 1);
  index := 1;
  while pos(sep, str) > 0 do
  begin
    if Tok = index then
    begin
      result := copy(str, 1, pos(sep, str)-1);
      exit;
    end
    else
    begin
      delete(str, 1, pos(sep, str));
      inc(index);
    end;
  end;
end;
ich rufe sie z.b so auf:

Delphi-Quellcode:
MeinString := 'Dies ist ein string';
s := GetTok(MeinString, 2, ' ');
das ergebnis wäre dann:

Zitat:
ist
nur sieht mir die funktion ziemlich lang aus und frage mich daher ob sie mein programm vielleicht langsam macht und es evtl eine schnellere variante gibt? (natürlich one stringlist...)
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat