Forum: Object-Pascal / Delphi-Language
by himitsu,
14. Aug 2011
CustomSort kann man eine Sortierfunktion übergeben, jeweils eine Andere, da braucht man keinen weiteren parameter.
if SortByProvider then
TStringList(nil).CustomSort(function(List: TStringList; Index1, Index2: Integer): Integer
begin
Result := AnsiCompareText(GetDomainPart(Item1), GetDomainPart(Item2))
if Result = 0 then
Result :=...
Forum: Object-Pascal / Delphi-Language
by himitsu,
13. Aug 2011
Doch, es ist gegeben.
Beide Teile haen eine Wertigkeit,
also erstmal den Provider vergleichen und wenn gleich, dann den Rest vergleichen.
-1 : <
0 : =
+1 : >
if ProviderA < ProviderB then x := -1
Forum: Object-Pascal / Delphi-Language
by himitsu,
13. Aug 2011
Was meinst du denn mit "Abhängigkeit"?
<= ist auch eine Abhängigkeit und wie/was man vergleicht, ist dem Quicksort doch egal?
Im TStringList ist aktuell (seit D2006/2009) ein QuickSort implementiert und diesen kann man sortieren lassen, wie man will (man muß ja nur die Vergleichroutine austauschen)
Forum: Object-Pascal / Delphi-Language
by himitsu,
12. Aug 2011
Nee, die Bremse ist die Speicherverwaltung des Memos.
BeginUpdate kann schon viel erreichen, aber ein externes Sortieren kann schneller sein.
Zumindestens ein Sortierverfahren mit möglichst wenigen lesenden und vorallem schreibenden zu Griffen kann da schon so einiges rausholen.
Bei einer TStringList liegen die einzelnen Strings (Zeilen) schon einzeln im Speicher vor und man kann da...
Forum: Object-Pascal / Delphi-Language
by himitsu,
12. Aug 2011
Der Index des Arrays, bzw. der StringListe geht von 0 bis Length - 1, bzw. 0 bis Count - 1.
Da du jeweils den aktuellen mit dem nachfolgenden Wert vergleichst, mußt du für den ersten Wert also von KleinsterIndex bis HöchsterIndex - 1 durchlaufen, also 0 bis Count - 1 - 1.
Forum: Object-Pascal / Delphi-Language
by himitsu,
12. Aug 2011
Tipp:
Erstmal verabschiede dich von globalen Variablen.
i : Integer; //Position
Done: Boolean; //Fertig oder Nicht
hilfe: String; //E-Mail Adressen
Adresse: array of String;
Das gehört alles als lokale Variablen in das Button-Klick-Ereignis.