Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Delphi динамический массив из классов

Автор: SPlyer
Дата сообщения: 21.05.2005 20:23
В общем есть такая конструкция, при выполнении программы она ругается и вылетает(EAccessViolatation) на процедуре добавления, в чем проблема ?

TsomeClass=class
public
a:array of string;
procedure Add(s:string);
end;

procedure TsomeClass.Add(s:string);
begin
Setlength(a,length(a)+1);
a[high(a)]:=s;
end;

.....

var
somearray:array of TsomeClass;
begin
Setlength(somearray,1);
somearray[0].Add('str');
end;
Автор: pand
Дата сообщения: 21.05.2005 20:31
SPlyer
Если не ошибаюсь, проблема в том что ты пытаешся взять length(a) от неинициализированого массива. Либо откажись от такой конструкции и введи доп. поле - кол-во элементов. Либо сразу в конструкторе сделай его едиинчной длинны и игнорируй элемент с индексом 0.
Автор: KADABRA
Дата сообщения: 21.05.2005 20:33
Удалено.
Ошибся.
Автор: SPlyer
Дата сообщения: 21.05.2005 20:45

Цитата:
Если не ошибаюсь, проблема в том что ты пытаешся взять length(a) от неинициализированого массива. Либо откажись от такой конструкции и введи доп. поле - кол-во элементов. Либо сразу в конструкторе сделай его едиинчной длинны и игнорируй элемент с индексом 0.

Нет, все равно та же ошибка выдается, видимо проблема в другом.
Автор: mr_eoi
Дата сообщения: 21.05.2005 20:55
SPlyer
Перед
Код: somearray[0].Add('str');
Автор: SPlyer
Дата сообщения: 21.05.2005 22:20

Цитата:
поскольку в Delphi в отличие от C++ классы - всегда указатели.

да уж.. после месяца программирования на C++, элементарные вещи на delphi начинаешь забывать )

Страницы: 1

Предыдущая тема: SFX CAB Архив-инсталлятор


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.