Registriert seit: 20. Feb 2007
90 Beiträge
Delphi XE6 Professional
|
AW: nummer + Name sortieren
22. Mai 2013, 14:51
Mein Sortieralgorithmus sieht wie folgt aus:
hier sortiere ioch nach ma.landnu und ma.mand (jeweils integer);
aus verschiedenen Gründen möchte ich aber beu gleicher ma.landnr nach ma.landnu und ma.land (=Name eines Landes- string)sortieren.
Das läuft noch nicht
PROCEDURE tform25.SortierenvonNamenMandatszahlen1Click(Sende r: TObject);
VAR ind : ARRAY[0..100] OF INTEGER; {Indexdatei}
key : ARRAY[0..100] OF REAL; {komp.1+komp.2}
hilfsdatei : FILE OF landmandattyp;
j,y,i : INTEGER;
x : REAL;
BEGIN
FOR i:=0 TO nn-1 DO {Initialisieren}
BEGIN
ind[i]:=i;
seek(mandate,i);
read(mandate,ma);
key[i]:=10000*ma.landnu+ma.mand;
END;
FOR i:=1 TO nn-1 DO
BEGIN
x:=key[i];j:=i-1;y:=ind[i];
WHILE (x<key[j]) AND (j>=0) DO
BEGIN ind[j+1] :=ind[j];key[j+1]:=key[j];j:=j-1;END;
key[j+1]:=x; ind[j+1]:=y;
END; {Indexe sind nun sortiert}
ASSIGNfile(hilfsdatei,'hilfemandate.dat');
REWRITE(hilfsdatei);
FOR i:=0 TO nn-1 DO
BEGIN
SEEK(mandate,ind[i]);
READ(mandate,ma);
WRITE(hilfsdatei,ma);
END;
CloseFile(hilfsdatei);
closefile(mandate);
Erase(mandate);
try
RENAME(hilfsdatei,'mandatsanzahl.dat');
except
on EInOutError do messageDlg('Fehler: auf Explorer-Ebene hilfemandate.dat in mandatsanzahl.dat umbenennen',mtError,[mbOk],0);
END;
form2.mandateeroeffnen(sender);
END;{lokal_sortieren}
|