Thema: Delphi Problem mit Zeiger

Einzelnen Beitrag anzeigen

fwsp
(Gast)

n/a Beiträge
 
#8

Re: Problem mit Zeiger

  Alt 8. Jan 2007, 18:36
Zitat von sirius:
Wo tust du denn Queue.last setzen, bevor du Queue.last^ "aufrufst"?
bei der Initialisierung des Queues:
Delphi-Quellcode:
procedure RQEmpty(var Queue: TQueue);
begin
  Queue.First := Nil;
  Queue.Last := Queue.First;
end;
Zitat von sirius:
Auch hier kann ich nur sagen, dass es auch TList gibt
was ich nicht verwenden darf.

//Edit
wenn ich deinen code verwende, bricht er zumindest nicht mehr ab. allerdings gibt er mir falsche werte aus, wenn ich mir das Front-Element anzeigen lassen möchte.
Wenn ich zum Beispiel den Queue damit fütter:
Delphi-Quellcode:
RQEmpty(MyQueue);
  RQInsert(MyQueue, 5, 3);
  RQInsert(MyQueue, 456, 99);
  RQInsert(MyQueue, 9, 1);
  RQInsert(MyQueue, 7, 5);
  Writeln(RQFront(MyQueue));
sollte 456 rauskommen, allerdings kommt 5 raus.

Delphi-Quellcode:
function RQFront(Queue: TQueue): TValue;
var
  HighestPrior: Integer;
begin
  if RQIsEmpty(Queue) then
  begin
    Writeln('Error: Queue is empty');
    Result := ErrorElem;
  end
  else if (Queue.First = Queue.Last) then
  begin
    Result := Queue.First.Value;
  end
  else
  begin
    HighestPrior := Queue.First.Priority;
    Result := Queue.First.Value;
    while (Queue.First <> Queue.Last) do
    begin
      Queue.First := Queue.First.Next;
      if (HighestPrior < Queue.First.Priority) then
      begin
        HighestPrior := Queue.First.Priority;
        Result := Queue.First.Value;
      end;
    end;
  end;
end;
//Edit 2
Funktioniert jetzt alles wunderbar, war ein kleiner Fehler in der Front-Prozedur.
  Mit Zitat antworten Zitat