Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Ошибка при чтении файла в string


Автор: Тутанхамец 26.2.2006, 17:09
Господа, вот есть такой код. Этот код глючит так: как и полагается выдаёт мессэйджбокс с текстом из файла (s2), а на выходе из процедуры делает ошибку access violation по какому-то там адресу.

Код

procedure TfrmChangeTest.FormShow(Sender: TObject);
var
f:file;
f2:file;
s,s2:string;
fl:integer;
begin

....

assignfile(f2,progpath+'qwerty.'+ftext);
reset(f2,1);
fl:=filesize(f2);
SetLength(s2,fl);
blockread(f2,s2,fl);
closefile(f2);
showmessage(s2);

end;


Если читать в динамический массив, то всё идет отлично, но мне надо в строку. Кто подскажет? Заранее благодарен.

Автор: Snowy 26.2.2006, 17:11
Код

blockread(f2, s2[1], fl);

Автор: Тутанхамец 26.2.2006, 17:16
Ага. smile Спасибо! Всё путём.

P.S. Я думал s2 и есть указатель на первый байт строки. Мог бы и сам догадаться. Дурака свалял.

Автор: Snowy 26.2.2006, 17:25
Цитата(Тутанхамец @ 26.2.2006, 17:16 Найти цитируемый пост)
Я думал s2 и есть указатель на первый байт строки
Так и есть. Это указатель.
А BlockRead требует сам байт, а не указатель на него.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)