Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.05;
Скачать: CL | DM;

Вниз

TStack   Найти похожие ветки 

 
UserL   (2002-11-25 11:30) [0]


type
TMes = Record
MType: String;
Host: String;
Date: TDate;
Time: TTime;
Mes: String;
End;
...

MessageStack: TStack;
...


procedure TForm1.FormCreate(Sender: TObject);
begin
MessageStack := TStack.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
MessageStack.Free;
end;


procedure TForm1.BitBtn1Click(Sender: TObject);
Var Mes: TMes;
begin
With Mes Do
Begin
MType := "Kernell";
Host := "192.168.122.133";
Date := Now;
Time := Now;
Mes := "Hi";
End;
MessageStack.Push(@Mes);
end;


Теперь вопрос...
Как из созданного стека вытащить записи занесенного Mes?


 
han_malign ©   (2002-11-25 11:52) [1]

type
PMes = ^TMes;
TMes = Record
MType: String;
Host: String;
Date: TDate;
Time: TTime;
Mes: String;
End;
...
MessageStack: TStack;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
MessageStack := TStack.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
MessageStack.Free;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
Var Mes: PMes;
begin
New(Mes);
With Mes Do
Begin
MType := "Kernell";
Host := "192.168.122.133";
Date := Now;
Time := Now;
Mes := "Hi";
End;
MessageStack.Push(Mes);
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
Var Mes: PMes;
begin
Mes:=PMes(MessageStack.Pop);
With Mes Do ........
Dispose(Mes);
end;

P.S. var Mes: TMes - - локальный блок памяти в стеке, при выходе из метода указатель @Mes - не будет валидным(будет указывать на участок стека который уже мог быть ипользован другим методом, violation - может и небыть, но работать не будет).


 
UserL   (2002-11-25 12:23) [2]

А чтоб не удалять записи из стека, а просто их прочитать... все.
А удалить только тогда последнюю запись, когда добавиться новая (например нужно хранить всего 10 записей, а пришла 11 запись, удалить первую, добавить 11 и перечитать, чтоб, скажем, отобразить пользователю)...


 
han_malign ©   (2002-11-25 12:50) [3]

то что нужно тебе - это не стек, а кольцевой буфер, вполне можно реализовать массивом или связным списком, если хочется красиво можно класс наваять



Страницы: 1 вся ветка

Текущий архив: 2002.12.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
3-14405
Netman_pc_chat
2002-11-15 17:22
2002.12.05
Microsoft SQL-Help


1-14652
Novichek
2002-11-23 15:03
2002.12.05
выделение строки в StringGrid заданным цветом.


1-14632
Baky
2002-11-24 16:03
2002.12.05
Zooming в TImage


4-14887
Semenyak
2002-10-23 13:21
2002.12.05
Комбинация клавиш в компоненте WebBrowser


6-14712
Sergey V. Shadrin
2002-10-02 15:56
2002.12.05
как проверить установлен ли TCP/IP протокол?