Форум: "Начинающим";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];
ВнизТо ли классы не работают, то ли я... Найти похожие ветки
← →
Agent[007] © (2007-01-17 17:03) [0]Народ... Я уже ниче не пойму... Посмотрите... Я тут создал класс и подклассы:
TMenuItem = class
public
Caption : string;
Hint : string;
end;
TMenuSub = class(TMenuItem)
public
Items: array of TMenuItem;
procedure AddItem(...);
end;
TMenuButton = class(TMenuItem)
public
Action : string;
end;
И описал процедуру:procedure TMenuSub.AddItem(...);
var
...
begin
...
SetLength(Items, Length(Items) + 1);
...
end;
И у меня возникает EAccessViolation на строке, где я меняю размер массива... Что же делать?! ПОМОГИТЕ, ПОЖАЛУЙСТА !!!
← →
Сергей М. © (2007-01-17 17:06) [1]
> TMenuItem
Какого хрена ты использовал имя класса, уже использованное Борландом ?
← →
гостъ (2007-01-17 18:19) [2]У меня не возникает AV ни в той, ни в других строках, я просто скопировал твой класс и откомпилировал в тем виде, что ты показал.
Вопрос - а как ты создаешь экземпляр(ы) своих классов?
Кстати, советую смотреть, при таких вариантах классов как у тебя, в сторону наследников от TCollection, TCollectionItem, примеры работы есть в тех же исходниках Дельфи.
Будет выглядеть поаккуратнее и соответствуя "концепции" :), примерно так:
type
TMenuCollection = class ( TCollection )
end;
TMenuCollectionItem = class ( TCollectionItem )
end;
TMenuCollectionItemClass = class of TMenuCollectionItem;
----------------
Борланд может использовать все что хочет, что не ограничивает меня в использовании того, что хочу использовать я...
Конечно, не желательно давать своим классам имена уже объявленных классов, но хмм.. "какого хрена" - это не ошибка компилятора.
← →
Ega23 © (2007-01-17 18:47) [3]
> SetLength(Items, Length(Items) + 1);
Почему массив? Почему не List?
← →
Agent[007] © (2007-01-24 09:28) [4]А как пользоваться этими TCollection ?..
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.045 c