Forum: Object-Pascal / Delphi-Language
by Bjoerk,
13. Aug 2011
BTW: Gestern hast Du behauptet, ein Memo wäre so schnell wie eine StringList zu sortieren. Stimmt nicht. Heute sagst du, man könne hier eine Methode von StringList verwenden. Stimmt so auch nicht. Soweit die Fakten..
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
13. Aug 2011
Weil das TStringListSortCompare so nicht hergibt, zumindest nicht in D 2007, oder kann man die überladen? Dann ginge es..
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
13. Aug 2011
Japp, Funzt, Danke Kumpel, hätte ich nicht gedacht, mich hat das <= *** verunsichert.
type
TQCompare = function (Item1, Item2: string; const SortByProvider: boolean): integer;
function QCompare(Item1, Item2: string; const SortByProvider: boolean): integer;
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
13. Aug 2011
Siehe #34, wenn wie dort die Adressen je Provider sortiert werden sollen. Dann hast du einmal < (bzw. >) und einmal =. Da Qicuksort aber immer bei <= tauscht, kann diese unterscheidung nicht getroffen werden (instabiles verfahren).
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
13. Aug 2011
Sehe jetzt nicht, daß hier jemand albern ist. BTW: Wenn in Abhängigkeit sortiert werden soll, geht der Quciksort nicht, da dieser auf <= prüft.
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
12. Aug 2011
daran hatte ich nicht gedacht, da hast du natürlich recht. aber wie kriegt man dann den lowercase (bei stringlist) in den algo rein?
Edit: DeddyH, hab's entsprehend überarbeitet.
Ist aber immer noch ein erheblicher Geschwindigkeitsunterschied!?
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
12. Aug 2011
Probier's halt aus.
function GetNamePart(const s: string): string;
var
I: integer;
begin
Result:= '';
for I:= 1 to Length(S) do
if S = '@' then
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
12. Aug 2011
Die Bremse dürfte hier dennoch (trotz BeginUpdate/EndUpdate) das Memo sein. Vielleicht temporär in einer SL speichern.
var
SL: TStringList;
begin
SL:= TStringList.Create;
SL.Assign(Memo1.Lines);
EmailAddressesSort(SL);
Memo1.Lines.Assign(SL);