Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с чтением из типизированного файла [D4, D5, Win95/98]


WLAD ©   (2002-08-08 03:21:00) 

Мастера подскажите! После записи в типизированный файл при последующем чтении из него из другой программой выдается сообщение об ошибке: "Access violation at address....".
При чтении из файла программой в которой он создавался происходит считывание пустых переменных. В чем проблема?


Wlad   (2002-08-08 23:00:00) [1]

Пошел смотреть.


Юрий Зотов   (2002-08-08 22:55:00) [2]

А правильно писать все в поток, а потом сохранять этот поток на диск. См. класс TStream, а также TStrings.SaveToStream и TPicture.Bitmap.SaveToStream.


Wlad   (2002-08-08 22:47:00) [3]

Спасибо!
А как правильно?


Jeer   (2002-08-08 22:39:00) [4]

Начнем с того, что вот это - ссылки.
v,o:TStrings;
r:TPicture;

Ну запишешь ты указатели на некоторую область памяти (где храняться собственно стринги и image) - ну и что дальше ?
Как при чтении (и кто) должен догадаться, что по этому адресу когда-то существовало ?


Anatoly Podgoretsky   (2002-08-08 22:36:00) [5]

И чего ты ожидал, у тебя же в записи указатели на объекты, вот их ты и пишешь


Wlad   (2002-08-08 22:32:00) [6]

Вот код


type tz=record
v,o:TStrings;
r:TPicture;
m:Boolean;
p:Integer;
end;
var
z:tz;
f:file of tz;

{процедура записи}
procedure SV;
begin
AssignFile(f,"~t.tmp");
Rewrite(f);
z.v:=Form2.Memo1.Lines;
z.o:=Form2.Memo2.Lines;
z.r:=Form2.Image1.Picture;
z.m:=Form2.CheckBox1.Checked;
z.p:=Form2.SpinEdit1.Value;
write(f,z);
end;

{чтение из файла}
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
Form3.Show;
if Form1.OpenDialog1.Execute then
begin
AssignFile(f,Form1.OpenDialog1.FileName);
reset(f);
read(f,z);
Form3.Memo1.Lines:=z.v;
Form3.RadioGroup1.Items:=z.o;
Form3.Image1.Picture:=z.r;
end;
end;


Poirot   (2002-08-08 03:47:00) [7]


> Код В Студию

Желательно весь... и это не шутка...


Код В Студию   (2002-08-08 03:46:00) [8]

...


Наверх

Титульная страница Поиск, карта сайта Написать письмо