So, ich habe für meine Datnebank einen Bubbelsort implementiert. Nur irgendwie macht er nicht so ganz, dass was er soll. Er sortiert nur bis zu Hälfte (Wenn er es tut. Die ersten datensätze sind noch sortiert.), und ab der Hälfte sind dann alle Datensätze identisch. Also so sieht das dann aus:
Zitat:
Ich benutze die Implementation von Daniel aus der Tutorialsparte.
Delphi-Quellcode:
procedure SwapIt(Record1, Record2: Trecord);
var
TempRecord: Trecord;
begin
TempRecord := Record1;
Record1 := Record2;
Record2 := TempRecord;
end;
procedure Sort;
var
MyTypedFile : TTypedFile;
Record1, Record2 : TRecord;
s, s1, s2: String;
i, j: Integer;
begin
MyTypedFile := TTypedFile.Create(CutFilename(ParamStr(0))+'\'+DATAFILENAME);
try
for i := MyTypedFile.GetRecordsCount-1 downto 1 do
begin
for j := 2 to i do
begin
Record1 := MyTypedFile.GetRecord(j-1);
Record2 := MyTypedFile.GetRecord(j);
s1 := CreateLVCaption(j-1);
s2 := CreateLVCaption(j);
if s1 > s2 then
begin
SwapIt(Record1, Record2);
MyTypedFile.ModifyRecord(Record1, j-1);
MyTypedFile.ModifyRecord(Record2, j);
end;
s := Format('Datensätze werden sortiert: %d ...', [i]);
SendDlgItemMessage(hApp, IDC_STATBAR, SB_SETTEXT, 1, Integer(@s[1]));
ProcessMessages(hApp);
end;
end;
finally
MyTypedFile.Free;
s := '';
SendDlgItemMessage(hApp, IDC_STATBAR, SB_SETTEXT, 1, Integer(@s[1]));
end;
end;
Ich sitze schon den ganzen Tag davor und finde den Fehler nicht.