Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Diese funktion schneller machen? (https://www.delphipraxis.net/32897-diese-funktion-schneller-machen.html)

phXql 30. Okt 2004 16:07

Re: Diese funktion schneller machen?
 
Delphi-Quellcode:
var t_list: TStringList;
begin
  result := '';
  t_list := TStringList.Create;
  try
    t_list.Delimiter = sep;
    t_list.Text := Text;
    result := t_list[index];
  finally
    FreeAndNil(t_list);
  end;
end;
ungetestet. schau mal wie schnell die is...

// Edit: VERDAMMT! wer lesen kann is klar im vorteil... :/
Ignoriert diesen Post einfach...

Stevie 2. Nov 2004 08:07

Re: Diese funktion schneller machen?
 
Moin,

ich hab bei Tests festgestellt, dass eure Funktionen etwas von der ursprünglichen abweichen, was das Erkennen des richtigen Teilstrings angeht. Die ursprüngliche liefert bei einem Sep = ' ' den ersten String bis zu einem Leerzeichen zurück, wenn man Index = 1 angibt, aber eure erst den String nach dem ersten Leerzeichen!

negaH 2. Nov 2004 11:59

Re: Diese funktion schneller machen?
 
Jo, das ist richtig, und ich finde es auch logischer. Viele Indizes, sei es Arrays[], TList, TStrings usw. gehen von 0 bis Count -1, man arbeitet also viel öfters 0-basiert als 1-basiert. Das erste Element sollte den Index 0 haben. Du kannst das aber sehr einfach ändern, indem du als erstes in der Funktion Dec(Index); aufrufst.

Gruß Hagen

Stevie 2. Nov 2004 12:04

Re: Diese funktion schneller machen?
 
Zitat:

Zitat von negaH
Jo, das ist richtig, und ich finde es auch logischer.

Jo, das find ich allerdings auch... Was macht deine Funktion eigentlich bei zwei Separatoren hintereinander?? Leerer String (logischer) oder als einen betrachten (imho von der Ursprungsfunktion so gemacht)?

negaH 2. Nov 2004 13:50

Re: Diese funktion schneller machen?
 
Im Source der Funktion habe ich ein Stückchen auskommentiert. Lies dazu mal den Kommentar, der beantwortet exakt diese Frage. Die normale Funktion betrachtet jeden einzelnen Separator als Separator für einen Teilsting. Zb. bei einem String wie "rot,grün,gelb,,blau" wäre es logisch das der String zwischen ",," eben auch gezählt wird und einen eigenen Index besitzt. Nun, die Standardvorgehensweise meiner Funktion ist jeden Sepeartor zu zählen.
Anderst du meine Funktion aber so ab das das asukommentierte aktiv ist so arbeitet die Funktion so wie die es dir wünscht. D.h. die beiden ",," würde als 1 Separator gezählt.

Gruß Hagen

Stevie 2. Nov 2004 13:56

Re: Diese funktion schneller machen?
 
Zitat:

Zitat von negaH
Im Source der Funktion habe ich ein Stückchen auskommentiert. Lies dazu mal den Kommentar, der beantwortet exakt diese Frage.

Wer lesen kann, ist klar im Vorteil! :wall: :roll: Sorry... :angel2:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz