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

Вниз

Access Violation   Найти похожие ветки 

 
Strate ©   (2007-02-21 17:15) [0]

Здравствуйте. Не подскажете почему вот в таком коде:

constructor TMatrix.Create(FileName : String);
 var
   FSize : byte;
   fleInput : TextFile;
 begin
   AssignFile(fleInput, FileName);
   Reset(fleInput);
   ReadLn(fleInput, FSize);
   ASize := FSize;
 end;


Возникает Acces Violation на строке

ASize := FSize;

Примечение:

ASize - private-поле класса TMatrix. Класс TMatrix - наследник TObject"a

Причём такой код:

constructor TMatrix.Create (Size : byte);
 begin
   ASize := Size;
 end;


работает.

Спасибо за помощь заранее.


 
Strate ©   (2007-02-21 17:16) [1]

ASize Объявлена так:

private
   ASize : byte;


 
Kolan ©   (2007-02-21 17:25) [2]

> ASize := FSize;

Поле назывют с буквы "F" от слова Field а у тя все наоборот.

Код вроде нормальный... Попробуй проверить утечки:
Возьми MemProof
или если у тебя BDS то напиши ReportMemoryLeaksOnShutDown := True;

ЗЫ
 И все жет так загружать из файла плохо. Есть же TFileStream...


 
MBo ©   (2007-02-21 17:26) [3]

> И все жет так загружать из файла плохо
Чем плохо?


 
Kolan ©   (2007-02-21 17:28) [4]

> Чем плохо?

Паскалевский метод остался для совместимости.


 
RASkov   (2007-02-21 18:12) [5]

Ошибка возникает скорее всего на строке - ReadLn(fleInput, FSize);
Что у тебя в файле FileName ?


 
RASkov   (2007-02-21 18:13) [6]

> [5] RASkov   (21.02.07 18:12)

Т.е. не именно эта строка вызывает ошибку, но... Что в файле?


 
Правильный Вася   (2007-02-21 18:31) [7]

чтение в Byte из текстового файла?!


 
MBo ©   (2007-02-21 18:43) [8]

>Паскалевский метод остался для совместимости.
А разве есть встроенная в язык альтернатива для форматного чтения из текстового файла?


 
RASkov   (2007-02-21 18:47) [9]

> [7] Правильный Вася   (21.02.07 18:31)

А в чем проблема? Все должно быть Ок, если существует файл  и первая строка в нем "число" например - 157

constructor TMatrix.Create(FileName : String);
var
  FSize : byte;
  fleInput : TextFile;
begin
  AssignFile(fleInput, FileName);
  try try Reset(fleInput);
   ReadLn(fleInput, FSize);
  finally CloseFile(fleInput); end;
   ASize := FSize;
  except
// Здесь обработать ошибку.
  end;
end;


 
Strate ©   (2007-02-21 20:21) [10]

Простите невнимательного :(

В общем ларчик просто открывался, я создава объект так:

Matrix := Matrix.Create("input.txt");

, а класс объявлялся как TMatrix = class


 
RASkov   (2007-02-21 21:24) [11]

> Matrix := Matrix.Create("input.txt");

Тогда да, именно в момент обращения к полю и возникала ошибка ASize := FSize;
под ASize память была нераспределена.
Невнимательность.....


 
Anatoly Podgoretsky ©   (2007-02-21 21:59) [12]

> Kolan  (21.02.2007 17:28:04)  [4]

Это ты сам решил или тебе кто то сказал?



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

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

Наверх




Память: 0.49 MB
Время: 0.03 c
2-1171632549
Dreamse
2007-02-16 16:29
2007.03.11
Как при создании нового окна показывать кнопку на пенеле задач ?


4-1162283659
Суслик
2006-10-31 11:34
2007.03.11
TInplaceEdit.Invalidate - помогите понять, что делает метод.


2-1171952749
Ezorcist
2007-02-20 09:25
2007.03.11
Список портов, которые нельзя открывать?


15-1171436167
homm
2007-02-14 09:56
2007.03.11
java script


2-1171873747
ssss
2007-02-19 11:29
2007.03.11
Компонент TreeView