Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Внизпомогите разобраться со стеком Найти похожие ветки
← →
nova5 (2004-05-03 14:13) [0]Программисты помогите! Написал свой класс стека:
...
TStrArray = array[1..65535] of string;
PStrArray = ^TStrArray;
...
TStack = class
Capacity: Integer; // макс. длина стека
Size: Integer; // текущая длина стека
Items: PStrArray; // указатель на массив элементов
// при создании стека указываем его макс. длину
constructor Create(aCapacity: Integer);
destructor Destroy; override;
procedure Push(Value: string);
function Pop: string;
function IsEmpty: Boolean;
end;
...
constructor TStack.Create(aCapacity: Integer);
begin
Inherited Create;
Capacity := aCapacity;
GetMem(Items, aCapacity*SizeOf(string));
ZeroMemory(Items, aCapacity*SizeOf(string));
end;
destructor TStack.Destroy;
begin
FreeMem(Items);
Inherited Destroy;
end;
procedure TStack.Push(Value: string);
begin
if Size < Capacity
then begin
Inc(Size);
Items[Size] := Value;
end;
end;
function TStack.Pop: string;
begin
if Size > 0
then begin
Result := Items[Size];
Dec(Size);
end;
end;
function TStack.IsEmpty: Boolean;
begin
Result := (Size = 0);
end;
...
А затем вызываю всё это:
...
stack.Create(5);
stack.Push("A");
stack.Push("B");
stack.Push("C");
REField.Lines.Add(stack.Pop);
stack.Free;
...
И ОШИБКА!!! Почему? Кто-нибудь может знает!?
Кстати, ошибка такая: Access violation at address 0045421B
in module "PMain.exe". Write of address 0000004.
← →
Anatoly Podgoretsky © (2004-05-03 14:18) [1]Ты бы создал объект перед использованием
← →
begin...end © (2004-05-03 14:20) [2]
Stack := TStack.Create(5)
← →
nova5 (2004-05-03 15:04) [3]Большое спасибо to begin...end, всё заработало! Как я мог такое пропустить :-)
← →
Anatoly Podgoretsky © (2004-05-03 15:09) [4]nova5 (03.05.04 15:04) [3]
Не удивляйся, частая ошибка, вместо создания, переинициализация, в принципе тут нет ошибки, если компонент был ранее создан.
← →
KSergey © (2004-05-03 15:17) [5]Не совсем по теме: а зачем такой изврат? Чем динамические массивы в борландовском исполнении не угодили? Или я что-то проглядел?
← →
MBo © (2004-05-03 15:18) [6]Да и класс стека в Delphi есть...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c