Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.038 c
2-1171722811
Andrey-406
2007-02-17 17:33
2007.03.11
Сохранение-загрузка свойств формы


3-1165908749
vigo_
2006-12-12 10:32
2007.03.11
Экспорт таблицы Oracle


2-1171787064
Lamer666
2007-02-18 11:24
2007.03.11
DbGridEh ImageList


2-1171859755
XDISABLED
2007-02-19 07:35
2007.03.11
Edit


15-1171275632
Layner
2007-02-12 13:20
2007.03.11
Кто знает, какие на mail.ru ограничения по отправке писем в день?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский