Newsgroups : Borland : borland.public.delphi.rtl.win32 : 2006 Aug : TQueue problem

www.cryer.info
Managed Newsgroup Archive

TQueue problem

Subject:TQueue problem
Posted by:"Johan Anderlund" (joh..@anderlund.net)
Date:Fri, 1 Sep 2006 00:46:31

I'm pushing items into a TQueue like this:

type
   PRefreshItem = ^TRefreshItem;
   TRefreshItem = record
     refr_table: String[35];
     refr_type: Integer; // 1-insert, 2-update, 3-delete
     refr_record: Integer;
   end;

procedure TfrmMain.tmrRefreshTimer(Sender: TObject);
var
   refreshItem: PRefreshItem;
begin
...
    while not DM.qryRefresh.EOF do
    begin
         New(refreshItem);
         refreshItem^.refr_table :=
DM.qryRefresh.FieldByName('TABLE_NAME').AsString;
         refreshItem^.refr_type :=
DM.qryRefresh.FieldByName('REFR_TYPE').AsInteger;
         refreshItem^.refr_record :=
DM.qryRefresh.FieldByName('ID_RECORD').AsInteger;
         qRefresh.Push(refreshItem);
         DM.qryRefresh.Next;
    end;
...
end;

When I close the program, I must dispose my items pushed and I do it
like below. The problem is that Count returns nothing and no items will
be disposed. What am I doing wrong?

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
var
   i: Integer;
   refreshItem: PRefreshItem;
begin
...
   while not qRefresh.Count = 0 do
   begin
       refreshItem := qRefresh.Pop;
       Dispose(refreshItem);
   end;
   qRefresh.Free;
...
end;

// Johan

Replies:

www.cryer.info
Managed Newsgroup Archive