Форум: "Начинающим";
Текущий архив: 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)
А в чем проблема? Все должно быть Ок, если существует файл и первая строка в нем "число" например - 157constructor 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