|
| Dispose i en dobbelthægtet liste Fra : //Overby |
Dato : 23-01-02 17:37 |
|
Hejsa...
Jeg har et lille problem med min dobbelthægtet liste. Der bruges i en
køstruktur, og når jeg skal fjerne et element fra køen og dispose, får jeg
en access violation bla.bla.
Derfor har jeg kortet min metode ned til flg.:
procedure TForm1.Button2Click(Sender: TObject);
begin
if EndOf^.Prev = nil then
StartOf:=nil;
EndOf:=EndOf^.Prev;
end;
Men jeg ville gerne have brugt dispose også for at frigøre lagerplads...
Hjælp mig! Daniel
| |
Thomas Rose (23-01-2002)
| Kommentar Fra : Thomas Rose |
Dato : 23-01-02 18:19 |
|
Hej Overby,
"//Overby" <overby@sportNOT.dk> wrote in message
news:3c4ee6c4$0$13961$edfadb0f@dspool01.news.tele.dk...
> Hejsa...
>
> Jeg har et lille problem med min dobbelthægtet liste. Der bruges i en
> køstruktur, og når jeg skal fjerne et element fra køen og dispose, får jeg
> en access violation bla.bla.
Kunne du ikke poste noget mere kode... det fremgår ikke klart hvordan din
liste er defineret eller opbygget... eller hvilken kode der fremprovokerer
en AV.
Cheers,
Thomas
| |
Finn Bindeballe (23-01-2002)
| Kommentar Fra : Finn Bindeballe |
Dato : 23-01-02 18:32 |
|
hejsa der...........
hvorfor bruger du ikke bare en Tqueue???
den kan alt det 'frække' der.....*s*
/finn
| |
//Overby (23-01-2002)
| Kommentar Fra : //Overby |
Dato : 23-01-02 18:50 |
|
> hvorfor bruger du ikke bare en Tqueue???
> den kan alt det 'frække' der.....*s*
Fordi jeg skal til eksamen i morgen og skal bruge nogle eksempler - derfor
har jeg både en liste, pointere og en kø i en opgave smart, ikk'....
Daniel
| |
//Overby (23-01-2002)
| Kommentar Fra : //Overby |
Dato : 23-01-02 19:01 |
|
Jeg løste det selv.... Her er koden, hvis det skulle interessere nogen...
procedure TForm1.Button2Click(Sender: TObject);
var
Pointer: TPointer;
begin
if EndOf=nil then //Køen tom
ListBox1.Items.Add('Køen er tom!')
else if EndOf=StartOf then //Kun et element i køen
begin
Dispose(EndOf);
StartOf:=nil;
EndOf:=nil;
end
else //mere end et element i køen
begin
Pointer:=EndOf;
EndOf:=EndOf^.Prev;
Dispose(Pointer);
EndOf^.Next:=nil;
end;
end;
Daniel - over and out
| |
|
|