Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2010, 19:05   #1
thexqn
 
Регистрация: 15.11.2009
Сообщений: 6
По умолчанию TList. Ошибка Access Violation при создании.

Имеется такая структура данных:

Код:
type
TMyList = class
private
FMyList: TList;
public
property MyList: TList
read FMyList write FMyList;
function LoadListFromFile(var f: TRecFile): boolean;
function LoadListFromTextFile(var f: Text): boolean;
procedure SaveListToFile(var f: TRecFile);
procedure SaveListToTextFile(var f: TextFile);
procedure PopListToStringGrid(var Grid: TStringGrid);
end;
И вот такой метод

Код:
function TMyList.LoadListFromFile(var f: TRecFile): boolean;
var
I: TItem;
begin
MyList.Create;
Result := true;
while (not eof(f)) and Result do
try
I.Create;
Result := I.LoadFromFile(f);
MyList.Add(I)
except
Result := false
end;
end;
Ошибка AccessViolation возникает обычно, когда программа лезет в область памяти, которая, например, еще не выделена.

В моем случае выделяется строка 5 метода

Как исправить? Буду очень благодарна за помощь. Если нужно, могу предоставить код всей программы целиком.
thexqn вне форума Ответить с цитированием
Старый 28.11.2010, 20:12   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Кто ж вас учил так объекты создавать?

MyList := TMyList.Create;
I := TItem.Create;
пыщь

Последний раз редактировалось JTG; 28.11.2010 в 20:15.
JTG вне форума Ответить с цитированием
Старый 28.11.2010, 20:37   #3
thexqn
 
Регистрация: 15.11.2009
Сообщений: 6
По умолчанию

Сделала вот так.

Код:
constructor TMyList.Create;
begin
  inherited Create;
  MyList := TList.Create
end;

//------------------------------------------------------------------------------

destructor TMyList.Destroy;
begin
  MyList.Free; // уничтожаем объект
  inherited Destroy;
end;
Создание объекта I тоже переделала, без толку
Всё равно ощибка в строке MyList := TList.Create
thexqn вне форума Ответить с цитированием
Старый 28.11.2010, 21:01   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Незнание азов вынудило меня перенести тему к новичкам...
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему может возникать ошибка access violation...: write of address при создании динамического массива sleevman Помощь студентам 16 03.11.2009 20:49
Ошибка Access Violation AHTuKiLLeR Общие вопросы Delphi 8 02.06.2009 10:48
access violation при создании обьекта goog Общие вопросы Delphi 12 11.01.2009 20:33