Hey,
ich arbeite zur Zeit an einem Schulprojekt und komme bei einem Fehler einfach nicht weiter.
Ich habe eine FirstIn-FirstOut-Liste, bei der Elemente hinzugefügt und gelöscht werden. Für Hilfe bin ich wirklich dankbar.
Listendefinition:
Delphi-Quellcode:
type
Zeiger = ^elementtyp;
elementtyp = record
Zeit_Kunde_an: integer;
Zeit_Kunde_noetig: integer;
ref: Zeiger;
end;
Hinzufügen von Elementen
Delphi-Quellcode:
procedure FiFo(Anker: Zeiger);
var p, q: Zeiger;
stop: integer;
begin
stop := GetTickCount;
while ((GetTickCount) < (stop + 1600)) and (Form1.Aufhoeren.checked=false) do
begin
new(q);
q^.ref := nil;
q^.Zeit_Kunde_an := GetTickCount;
q^.Zeit_Kunde_noetig := 1000;
if Anker = nil then
Anker := q
else
p^.ref := q; //Hier war früher eine EAccessViolation - auf wundersame Weise verschwunden
p := q;
Form1.K1_Z.caption := IntToStr(StrToInt(Form1.K1_Z.caption) + 1);
Pausieren(400);
end;
end;
Löschen von Elementen
Delphi-Quellcode:
procedure Bearbeitung();
var K_Z_noetig: integer;
p: Zeiger;
begin
while Form1.Aufhoeren.checked = false do
begin
if (StrToINt(Form1.K1_Z.Caption) > 0) and (Form1.Aufhoeren.checked = false) then
begin
K_Z_noetig := K1_A^.Zeit_Kunde_noetig;
Pausieren(K_Z_noetig);
p := K1_A;
K1_A := K1_A^.ref; //HIER tritt sie jetzt auf
dispose(p);
Form1.K1_Z.caption := IntToStr(StrToInt(Form1.K1_Z.caption) - 1);
end
else Pausieren(400);
end;
end;
Viele Grüße und danke schonmal
Riclem