Главная страница
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.031 c
15-1171485355
malyar
2007-02-14 23:35
2007.03.11
ищу хост( php+apache+mysql)


3-1166176488
_Guest_
2006-12-15 12:54
2007.03.11
Ошибка при отсутствии BDE


2-1171908960
Ezorcist
2007-02-19 21:16
2007.03.11
C:Array of Char S:string


15-1171441422
Pazitron_Brain
2007-02-14 11:23
2007.03.11
Что Вам мешает


2-1171897635
FIL-23
2007-02-19 18:07
2007.03.11
отслеживание нажатия ентера