Главная страница
    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.039 c
15-1171557359
Ученик чародея
2007-02-15 19:35
2007.03.11
Бывало ли у вас такое?


1-1169191653
mess
2007-01-19 10:27
2007.03.11
WMQueryEndSession


2-1171716285
@gent
2007-02-17 15:44
2007.03.11
Дирректория запуска программы.


2-1172056346
Sapos
2007-02-21 14:12
2007.03.11
DBNavigator


2-1171739873
DimitrySDA
2007-02-17 22:17
2007.03.11
Статистика подключения к Internet





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский