webForumDet fria alternativet

Sortering

2 svar · 361 visningar · startad av Erik25

Erik25Medlem sedan maj 20011 inlägg
#1

hej!
finns det någon som kan hjälpa mig. Jag håller på göra ett tävlingsprogram. Jag vill skriva ut resultat i alla deltagarna i en listruta tex den som har mest poäng kommer först osv. men jag ett litet problem som jag kunde lösa det.
när jag kör programmet får jag ett fel meddelande t.ex. if jaktArr^Skjut_res > jaktArr[j]^Skjut_res then begin

type pTjakt=^Tjakt;

procedure TForm1.Button2Click(Sender: TObject);
var f:file of Tjakt;
p:Tjakt;
Jaktarr:array[1..50] of PTjakt;
Ptemp:PTjakt;
j,i:integer;
begin

lboxpernr.clear;

AssignFile(f,'jaktfil.dat');
reset(f);
while not eof(f) do begin
read(f,p);
if (p.Tavlings_klass=Anvandare)then
for i:= 1 to 50 do begin
jaktarr:=Allocmem(sizeof(Tjakt));
read(f,jaktarr^);
end
else
jaktarr:=nil;
end;
//kolla här: if (jaktArr^Skut_res > jaktArr[j]^Skjut_res)then begin
Ptemp:=jaktarr;
jaktarr:=jaktarr[j];
jaktarr[j]:=Ptemp;
end;
for i:= 1 to 50 do begin
if jaktarr<> nil then
freemem(jaktarr,sizeof (Tjakt));
end;

for i:= 1 to 50 do begin
//kolla här: lboxpernr.items.add(p.namn+' '+inttostr(jaktarr*));
CloseFile(f);*

BGMMedlem sedan maj 200113 inlägg
#2

Hej

Måste du göra det med kod, går det inte lättare att göra en Query där Du säger till om att sortera i omvänd ordning!

------------------
BGM

jtMedlem sedan juni 2000350 inlägg
#3

Tycker det verkar som din kod inhåller flera kontigheter/fel. Tycker det vore bättre att använda en lista(tex Tlist) istället för en array och använda object istället för records.

Men detta borde väl fixa de rader du har problem med:
//kolla här:
if (jaktArr.Skut_res^ > jaktArr[j].Skjut_res^)then begin

//kolla här:
lboxpernr.items.add(p.namn+' '+inttostr(jaktarr.Skut_res^));

OBS har ej testat din/min kod ;)

132 ms totalt · 3 externa anrop · v20260731065814-full.16f3d68c
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)