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

Вниз

компонент TQueue его метод Pop.   Найти похожие ветки 

 
andrey__   (2004-08-12 11:27) [0]

Посмотрите пожалуста простой пример и подскажите почему метод Pop выдает одно и то же значение.

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs,Contnrs, StdCtrls;

type
 Tarr=array [1..5] of byte;
 Parr=^Tarr;

 TForm1 = class(TForm)
   Button1: TButton;
   Edit1: TEdit;       //установите макс. длину 5 символов
   Label1: TLabel;
   Button2: TButton;
   Memo1: TMemo;
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure Button2Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   Queue:TQueue;
   mas:Tarr;
   pnt:Parr;
   tmpptr:Parr;
 end;

var
 Form1: TForm1;
 i:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
//добавл элемент в очередь.
begin
  tmpptr:=nil;
  for i:=1 to 5 do
    mas[i]:=ord(Edit1.text[i]);
  pnt:=@mas;
  Queue.Push(pnt);
  Label1.Caption:=IntToStr(Queue.Count);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   Queue:=TQueue.Create;
end;

procedure TForm1.Button2Click(Sender: TObject);
//извлекаем из очереди
var
  st:string[5];
begin
  st:="";
  tmpptr:=nil;
  tmpptr :=Parr( Queue.Pop);
  mas:=tmpptr^;
  for i:=1 to 5 do
     st:=st+chr(mas[i]);
  Memo1.Lines.Append(st);
  Label1.Caption:=IntToStr(Queue.Count);
end;

end.


 
AlexSV   (2004-08-12 12:35) [1]

Сравни и найди отличия:
procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
begin
 new(tmpptr);
 for i:=1 to 5 do
   tmpptr^[i]:=ord(Edit1.text[i]);
 Queue.Push(tmpptr);
 Label1.Caption:=IntToStr(Queue.Count);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
 i: integer;
 st:string[5];
begin
 tmpptr :=Parr(Queue.Pop);
 for i:=1 to 5 do
    st:=st+chr(tmpptr^[i]);
 Memo1.Lines.Append(st);
 Dispose(tmpptr);
 Label1.Caption:=IntToStr(Queue.Count);
end;


и не забудь своему Queue сделать Free



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

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

Наверх




Память: 0.47 MB
Время: 0.038 c
6-1088184010
Снифер
2004-06-25 21:20
2004.08.29
NLO


1-1092238973
Случайно забежавший
2004-08-11 19:42
2004.08.29
Кнопки, созданные во время выполнения приложения


14-1092150432
ИМХО
2004-08-10 19:07
2004.08.29
BrainBench: кому жаловаться?


14-1092288811
Kerk
2004-08-12 09:33
2004.08.29
Microsoft запатентовала "двойной щелчок" мышкой


1-1092298514
Vss
2004-08-12 12:15
2004.08.29
Найти курсор не кликая