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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2013, 00:58   #1
Dennis777
Форумчанин
 
Регистрация: 06.11.2009
Сообщений: 203
По умолчанию Запись, чтение в типизированный файл.

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

Код:
type
  TRec=record
    value1:integer;
    value2:integer;
    value3:integer;
    value4:integer;
    value5:integer;
    value6:integer;
    value7:integer;
    value8:integer;
    end;
procedure write;
var
Rec:TRec;
F:File of TRec;
begin
AssignFile(F,'test.dat');
  Rewrite(F);
  Rec.value1:=grammar2a;
  Seek(F,0);
  Write(F,Rec);
  CloseFile(F);
end;
Но на строке Write(F,Rec); - выскакивает ошибка с указанием, что слишком много актуальных параметров (too many actual parametrs)
Что я делаю не так? Как можно исправить?)
Интересный проект по изучению английского:
Английский в формате путешествия по США
Dennis777 вне форума Ответить с цитированием
Старый 15.07.2013, 01:39   #2
Dennis777
Форумчанин
 
Регистрация: 06.11.2009
Сообщений: 203
По умолчанию

Может есть какой-то более оптимальный способ?
есть переменные, которые содержат информацию об успеваемости пользователя. Во время работы программы - все хорошо. Информация о прогрессе правильно отображается, а вот теперь нужно сделать так, чтобы все эти переменные записались в файл, а при последующем открытии - соответсвенно прочитались
Интересный проект по изучению английского:
Английский в формате путешествия по США
Dennis777 вне форума Ответить с цитированием
Старый 15.07.2013, 06:46   #3
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Во первых, нужен тут TextFile
Во вторых, функция inttostr или просто file of Integer для записи чисел.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 15.07.2013, 08:38   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Денис, никогда не недо переопределять системные функции. (или уж делайте это осознанно, по крайне мере!!

Цитата:
Код:
procedure write;
var
Rec:TRec;
F:File of TRec;
begin
AssignFile(F,'test.dat');
  Rewrite(F);
  Rec.value1:=grammar2a;
  Seek(F,0);  
  Write(F,Rec);
Вы зачем свою процедуру назвали write?!
чтобы потом, когда напишете вызов Write(F, Rec); компилятор не понял, какую из этих процедур (вашу или системную) Вы хотите вызвать?!
Переменуйте свою, в например, WriteMySetting и всё заработает!


Цитата:
Сообщение от саша40
Во первых, нужен тут TextFile
Саша, Вы опять в своём репертуаре?! При чём здесь ТЕКСТОВЫЙ файл, если автор темы спрашивает о использовании ТИПИЗИРОВАННОГО файла?!

Последний раз редактировалось Serge_Bliznykov; 15.07.2013 в 08:42.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.07.2013, 09:32   #5
Dennis777
Форумчанин
 
Регистрация: 06.11.2009
Сообщений: 203
По умолчанию

Саша, спасибо большое!) Я и не обратил внимания =) В 2 часа ночи мозг не работает)

Название исправил, но теперь выскакивает:

[DCC Error] Unit2.pas(115): E2065 Unsatisfied forward or external declaration: 'TForm2.writerez'
Интересный проект по изучению английского:
Английский в формате путешествия по США

Последний раз редактировалось Dennis777; 15.07.2013 в 09:44.
Dennis777 вне форума Ответить с цитированием
Старый 15.07.2013, 10:25   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Dennis777, Вы сейчас с Сашей40 общаетесь?..


Цитата:
DCC Error] Unit2.pas(115): E2065 Unsatisfied forward or external declaration: 'TForm2.writerez'
покажите исправленный код!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.07.2013, 11:02   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Название исправил
Полный код в студию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.07.2013, 11:18   #8
Dennis777
Форумчанин
 
Регистрация: 06.11.2009
Сообщений: 203
По умолчанию

Код:
   type
   TRec=record
   value1:integer;
   value2:integer;
   value3:integer;
   value4:integer;
   value5:integer;
   value6:integer;
   value7:integer;
   end;

var
Rec:TRec;
Rec1:Trec;
F:File of TRec;

procedure TForm2.writeRez;
begin
AssignFile(F,'test.dat');
  Rewrite(F);
  Rec.value1:=pazzle2;
  Rec.value2:=grammar2a;
  Rec.value3:=grammar2b;
  Rec.value4:=grammar2c;
  Rec.value5:=vocabulary2a;
  Rec.value6:=vocabulary2b;
  Rec.value7:=vocabulary2c ;
  Seek(F,0);
  Write(F,Rec);
  CloseFile(F);
end;

procedure TForm2.readRez;
begin
AssignFile(F,'test.dat');
  Reset(F);
  Seek(F,0);
  read(F,Rec1);
  Rec1.value1:=pazzle2;
  Rec1.value2:=grammar2a;
  Rec1.value3:=grammar2b;
  Rec1.value4:=grammar2c;
  Rec1.value5:=vocabulary2a;
  Rec1.value6:=vocabulary2b;
  Rec1.value7:=vocabulary2c ;
  CloseFile(F);
end;
Ошибка уже не выскакивает, но все равно, что то не то. В он криэйт выполняю ридрез, в он клоз - врайт рез, но как-то оно не считывается((
Интересный проект по изучению английского:
Английский в формате путешествия по США
Dennis777 вне форума Ответить с цитированием
Старый 16.07.2013, 11:53   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

т.е. по вашему, что чтение, что запись - менять нужно поля записи, да? ;(
пробуйте так:
Код:
procedure TForm2.readRez;
begin
  AssignFile(F,'test.dat');
  Reset(F);
  read(F,Rec1);
  pazzle2   := Rec1.value1;
  grammar2a := Rec1.value2;
  grammar2b := Rec1.value3;
  grammar2c := Rec1.value4;
  vocabulary2a := Rec1.value5;
  vocabulary2b := Rec1.value6;
  vocabulary2c := Rec1.value7;
  CloseFile(F);
end;
p.s. надеюсь, что после readRez переменные pazzle2, grammar2a и т.д. ещё раз не переопределяются и где-то используются! Иначе и предложенный мною код тогда смысла никакого не имеет, если Вы не используете значения этих переменных...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.07.2013, 12:54   #10
Dennis777
Форумчанин
 
Регистрация: 06.11.2009
Сообщений: 203
По умолчанию

Вот я лопух) Спасибо огромное!)
Интересный проект по изучению английского:
Английский в формате путешествия по США
Dennis777 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тип данных запись, необходимо создать типизированный файл записей sifa Помощь студентам 1 29.11.2011 21:56
Тема 6: «Записи» Записать в типизированный файл компоненты типа запись – «Товары» (наименование товара, вид упаковки, ко Евгения007 Помощь студентам 0 30.09.2011 14:25
Чтение и запись из/в файл Pirotexnik Общие вопросы C/C++ 7 28.01.2011 16:54
Запись в типизированный файл из ListView alien^ka Общие вопросы Delphi 0 02.12.2010 19:21