Also ich probiere immernoch meine Sortierte Liste zu erstellen...
Nach dem ich mit den interfaces auf die Schnauze gefallen bin, versuche ich es jetzt mal anders:
Delphi-Quellcode:
unit USortedList;
interface
uses SysUtils, Contnrs, Dialogs;
type
TSortedList =class(TObjectList)
public
Compare:
function(o1,o2: TObject):integer;
procedure Sort;
end;
TIntTest =class
public
v: integer;
class function Compare(o1,o2: TObject):integer;
end;
implementation
class function TIntTest.Compare(o1,o2: TObject):integer;
begin
result :=TIntTest(o1).v-TIntTest(o2).v;
//Stelle 3
end;
procedure TSortedList.Sort;
procedure QuickSort(iLo, iHi: Integer);
var
Lo, Hi: Integer;
Mid: TObject;
begin
Lo := iLo;
Hi := iHi;
Mid :=Items[(Lo + Hi)
div 2];
//Stelle 1
repeat
while Compare(Mid,Items[Lo]) < 0
do Inc(Lo);
//Stelle 2
while Compare(Mid,Items[Hi]) > 0
do Dec(Hi);
if Lo <= Hi
then
begin
Exchange(Lo,Hi);
Inc(Lo);
Dec(Hi);
end;
until Lo > Hi;
if Hi > iLo
then QuickSort(iLo, Hi);
if Lo < iHi
then QuickSort(Lo, iHi);
end;
begin
if Assigned(Compare)
then QuickSort(0,Count-1);
end;
end.
Weil ich immer eine
AV bekommen habe, habe ich da mal durchgesteppt. Stoppunkt an Stelle 1.
Dann drücke ich F7 und erwarte, dass das Programm an Stelle 2 geht. Dies ist jedoch nicht der Fall, sondern es geht an Stelle 3 und ich kann mir keinen Reim darauf machen. Es gibt doch wirklich 0 Grund dazu.
Das kann eigentlich nur an einem Fehlverständnis von class functions meinerseits liegen, oder?
Die Delphiohilöfe macht sich zumindets bei mir nicht die Mühe diese zu dokumentieren... Könnt ihr mich aufklären (Ich ging bisher davon aus, dass dies eine ganz normale Funktion ist, die zwar von Name her zur Klasse gehört, aber sonst eigentlich eine ganz normale Funktion ist (das was in Java static ist)
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.
Have a lot of fun!