Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2013, 16:45   #1
NapalmRain
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 53
Вопрос Запись данный в файл и считывание потоками

Доброго всем времени суток.
Попытался сделать такого рода финт: есть самодельный тип переменной.
В ней что-то храниться,
записываю эту переменную в файл так:
Код:
FileStream := TFileStream.Create(sSaveDialog1.FileName, fmCreate);
    FileStream.Write(MyVar, 1024);
    FileStream.Free;
Потом пытаюсь это дело считать обратно и получаю ошибку доступа к памяти.
читаю так:
Код:
FileStream := TFileStream.Create(sOpenDialog1.FileName, fmOpenRead);
    FileStream.Read(MyVar, 1024);
    name := MyVar.Name;
прошу подсказать, как поступить в данной ситуации правильнее.
NapalmRain вне форума Ответить с цитированием
Старый 04.12.2013, 16:54   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
как поступить в данной ситуации правильнее.
показать что есть MyVar.
Цитата:
есть самодельный тип переменной.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 04.12.2013, 16:57   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, откуда из приведённого кода видно, какой тип имеет переменная MyVar
вангую, что это вообще ссылочный тип (указатель)! Ведь признавайтесь, это переменная object ?!!!

во-вторых, почему пишете 1024. Почему не 4096, например?!

в-третьих, так просто объект записывать/читать не получится!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.12.2013, 16:57   #4
NapalmRain
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 53
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
показать что есть MyVar.
Код:
type MyType = Record
    Name: string[255];
    version: integer;
    Author: string[255];
    Content: string;
  end;
NapalmRain вне форума Ответить с цитированием
Старый 04.12.2013, 17:00   #5
NapalmRain
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
во-первых, откуда из приведённого кода видно, какой тип имеет переменная MyVar
вангую, что это вообще ссылочный тип (указатель)! Ведь признавайтесь, это переменная object ?!!!

во-вторых, почему пишете 1024. Почему не 4096, например?!

в-третьих, так просто объект записывать/читать не получится!
Ну сейчас попробовал записывать слегка иначе: вместо 1024 написав SizeOf(MyVar);
При считывании правда не совсем понятно какое число водить. Как результат данные-то я получаю нормально, то есть пишу потом тот же showmessage(myvar.Name); Всё прекрасно, но ошибка доступа к памяти остаётся на лицо.
NapalmRain вне форума Ответить с цитированием
Старый 04.12.2013, 17:43   #6
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Content: string[255];
Или вместо String использовать ShortString

Про позиционирование в файле еще посмотрите.
TFileStream

Последний раз редактировалось Alter; 04.12.2013 в 17:48.
Alter вне форума Ответить с цитированием
Старый 04.12.2013, 21:53   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ALter, +1

NapalmRain, чем Вас типизированные файлы не устроили?!
Идеальный вариант, если файл состоит из переменных одного типа:
Код:
var f: file of MyType;
....
  {записать в файл}
  Write(f, MyVar);

...

  {прочитать из файла}
  Read(f, MyVar);
всё просто, быстро надёжно. Чинно и благородно, как в старые времена!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в файл A и считывание из него файлом B Shouldercannon HTML и CSS 9 13.02.2013 11:08
Считывание и запись в файл Oki Помощь студентам 3 01.11.2010 21:08
Считывание и запись структур в бинарный файл TheKnyazz Общие вопросы C/C++ 7 10.11.2009 13:47
Ещё запись в файл + считывание s-t-r-i-k-e-r Помощь студентам 3 03.06.2008 20:57