Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запись в файлы и чтение, blockread/blockwrite 
:(
    Опции темы
СЭНСЭЙ
Дата 10.1.2012, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Добрый день.
Нужно в файл записать разную информацию. И числа и текст.
Попробовал воспользоваться blockread/blockwrite но что то не получилось

Код

procedure TForm1.Save1Click(Sender: TObject);
var
fout:file;
s:string;
i,j,k:integer;
begin
getdir(0,s);
sd_world.InitialDir:=s;
sd_world.Execute;
if  sd_world.FileName='' then exit;
assignfile(fout,sd_world.FileName);
rewrite(fout);
j:=length(terrain);// записываю 2
blockwrite(fout,j,sizeof(j));
for i:=1 to j do
begin
blockwrite(fout,terrain[i-1].tip,sizeof(word)); // здесь записываю 4
blockwrite(fout,terrain[i-1].hard,sizeof(word));
blockwrite(fout,terrain[i-1].images,sizeof(word));
for k:=1 to terrain[i-1].images do
blockwrite(fout,terrain[i-1].image[k-1],sizeof(integer));
end;

for i:=1 to length(map) do
begin
blockwrite(fout,length(map[i-1].name),sizeof(word));
blockwrite(fout,map[i-1].name,sizeof(map[i-1].name));
blockwrite(fout,map[i-1].x,sizeof(integer));
blockwrite(fout,map[i-1].y,sizeof(integer));
for j:=1 to map[i-1].x do
for k:=1 to map[i-1].y do
blockwrite(fout,map[i-1].terrain[j-1,k-1],sizeof(integer));
end;

CloseFile(fout);
end;

procedure TForm1.OPen1Click(Sender: TObject);
var
fin:file;
s:string;
i,j,k,m:integer;
begin
getdir(0,s);
od_world.InitialDir:=s;
od_world.Execute;
if  od_world.FileName='' then exit;
assignfile(fin,od_world.FileName);
reset(fin);
blockread(fin,j,sizeof(integer)); //прочитали 2 - все хорошо
//Form1.Caption:=inttostr(i);
setlength(terrain,j);
for i:=1 to j do
begin
blockread(fin,k,sizeof(word));// а теперь прочитали 262147 - не хорошо
terrain[i-1].tip:=k;
blockread(fin,k,sizeof(word));
terrain[i-1].hard:=k;
blockread(fin,k,sizeof(word));
terrain[i-1].images:=k;
setlength(terrain[i-1].image,k);
for m:=1 to k do
  begin
  blockread(fin,k,sizeof(integer));
  terrain[i-1].image[m-1]:=k;
  end;
end;

CloseFile(fin);
end;


в чем ошибка?

Или подскажите другие способы записи в файл и чтения.
PM MAIL   Вверх
Snowy
Дата 10.1.2012, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Рекомендую TFileStream в комплекте с TWriter/TReader.
PM MAIL   Вверх
СЭНСЭЙ
Дата 10.1.2012, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Я читал про это статью, но на первый взгляд это сложно.
или может есть уже надстройки над этими методами которые облегчают работу7
PM MAIL   Вверх
northener
Дата 10.1.2012, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(СЭНСЭЙ @  10.1.2012,  14:58 Найти цитируемый пост)
в чем ошибка?

Почитай в справке про второй параметр процедуры Rewrite.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
СЭНСЭЙ
Дата 10.1.2012, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



второй параметр для нетипизированных файлов
я пробовал делать file of byte - результат тот же
PM MAIL   Вверх
northener
Дата 10.1.2012, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(СЭНСЭЙ @  10.1.2012,  18:00 Найти цитируемый пост)
второй параметр для нетипизированных файлов
я пробовал делать file of byte - результат тот же 

В топике именно нетипизированный файл. А кода с file of byte я не видел.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.