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

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

Record To File


Поручик ©   (2004-10-05 18:25:00) 

Как запихнуть record в file? Вытащить от туда?


programania   (2004-10-07 19:49:00) [1]

>Rewrite(F);
создает файл с длиной записи 128
>BlockWrite(F, Hero, SizeOf(Hero));
пишет в файл SizeOf(Hero) записей длиной 128
а SizeOf(Hero) байт как вы наверно думали
лучше писать  Rewrite(F, 1);


Доброжелатель1   (2004-10-07 19:10:00) [2]

>XProger ©   (07.10.04 18:58) [15]
тогда уж
FileMode := fmOpenRead + fmShareDenyNone;


XProger   (2004-10-07 18:58:00) [3]

При чтении файлов помеченный как "Только для чтения", Reset(F) выдаёт ошибку. А с FileMode = 64 ничего подобного не произойдёт :)


Fay   (2004-10-06 20:24:00) [4]

Как эта ветка оказалась в WinAPI?!


OSokin   (2004-10-06 19:08:00) [5]

Имхо его вообще не надо...


Поручик   (2004-10-05 23:03:00) [6]

Спасибо XProger!
Ещё вопрос, что значит:
FileMode:=64


XProger   (2004-10-05 22:50:00) [7]


var
F : File of Byte;

FileMode := 64;
// Save
AssignFile(F, FileName);
Rewrite(F);
BlockWrite(F, Hero, SizeOf(Hero));
CloseFile(F);

// Load
AssignFile(F, FileName);
Reset(F);
BlockRead(F, Hero, SizeOf(Hero));
CloseFile(F);


Поручик   (2004-10-05 22:42:00) [8]

Сохраняю так:
Assign(F, FileName);
rewrite(F,SizeOf(Hero));
blockWrite(f,Hero,SizeOf(Hero));
CLoseFile(F);
А читаю так:
Assign(F, Filename);
reset(F,SizeOf(Hero));
blockWrite(f,Hero,SizeOf(Hero));

Когда работает программа все сохраняется и грузится,
а если войти и выйти ничего не грузится!


Суслик   (2004-10-05 19:36:00) [9]


>  [8] programania ©   (05.10.04 19:33)


> setLength(record,fileSize(file));

тогда ок.

ЗЫ. Нужно только внимательно посмотреть, что будет при пустой строке. Честно говоря не помню, как в этом случае сработает BlockRead.


programania   (2004-10-05 19:33:00) [10]

>Суслик
Либо я знаю длину либо читать весь файл и искать конец:
setLength(record,fileSize(file));
blockRead(file,pointer(record)^,length(record));


Суслик   (2004-10-05 19:23:00) [11]


> я то проверяю что пишу

если ты будешь записывать в файл и сразу читать, то все ок.
Но кому на фиг такая запись нужна? :р)))

Нужно записать в одном месте, а прочесть в другом. Как ты будешь читать? Ты же длинну строки не занешь


programania   (2004-10-05 19:19:00) [12]

Record что заказывали: длинная строка
я то проверяю что пишу


Суслик   (2004-10-05 19:08:00) [13]


> blockRead(file,pointer(record)^,length(record));

Что такое здесь record? String?
Если да, то АV тебе обеспечен...


programania   (2004-10-05 19:03:00) [14]

>Суслик
blockWrite(file,pointer(record)^,length(record));
seek(file,0);
blockRead(file,pointer(record)^,length(record));


Суслик   (2004-10-05 18:51:00) [15]

а длинные строки ?
таким же образом - через blockwrite?


programania   (2004-10-05 18:50:00) [16]

blockWrite(file,record,sizeOf(record));
blockRead(file,record,sizeOf(record));


Мастер   (2004-10-05 18:38:00) [17]

Так же, как и не Record.


Наверх

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