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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2011, 17:45   #1
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию До запись в файл.

Код:
Program Путеводитель;
 Uses crt;
  Type
  oblast=record
  Номер:integer;
  Название области:string[20];
  Название_обласного_центра:string[20];
  Площадь:integer;
  Количество_населения:longint;
  end;
   file_oblast=file of oblast;
   var
   t:file_oblast;
   name:string;
   Procedure vvod_oblasti (var a: oblast);
    begin
     writeln('Введите номер,названи области,название обласного центра,площадь области и количество населения');
     with a do
     begin
     readln(Номер);
     readln(Название области);
     readln(Название_обласного_центра);
     readln( Площадь);
     readln(Количество_населения);
     end;
    end;
    Procedure Vvod_file(var t:file_oblast);
    var i,n:byte;
        a:oblast;
      begin
	    rewrite(t);
		  writeln('Введите количество записей');
		  readln(n);
		for i:=1 to n do
		 begin
		      begin
          Vvod_oblasti(a);
          write (t, a);
     end;
     readln;
end;
end;
Procedure vivod_zapisi (a:oblast);
begin
     writeln(a.номер: 10);
     writeln(a.название_области: 0);
     writeln(a.название обласного центра: 0);
     writeln(a.Площадь: 0);
     writeln(a.Количество_населения: 0);
end;
procedure shapka;
begin
     textcolor (5);
     writeln('Номер': 10);
     writeln('Название области': 0);
     writeln('Название обласного центра': 0);
     writeln('Площадь': 0);
     writeln('Количество_населения': 0);
     textcolor (15);
end;
procedure VuVod_file (var t: file_oblast);
var n, i: byte;
    a:oblast;
begin
     clrscr;
     shapka;
     reset (t);
     i:= 0;
     while not eof (t) do
     begin
          seek (t, i);
          read (t, a);
          vuvod_zapusu (a);
          i:= i+1;
     end;
     close (t);
     readln;
end;
procedure kruteruu (var t:file_oblast; k:longint);
var a: oblast;
    i: byte;
begin
     writeln('Введите количество населения');
     readln(k);
     reset (t);
     i:=0;
     clrscr;
     shapka;
     while not eof (t) do
     begin
     seek (t, i);
     read (t, a);
     if (a.Количество_населения>=k) then vuvod_zapusu(a);
     i:= i+1;
     end;
     readln;
end;
procedure dopolnenue (var t: file_oblast);
 var a:oblast;
       begin
       reset(t);
       seek(t,fileSize(t));
       read(t, a);
     with a do
     ....
    end;
procedure menu (var t: file_oblast);
var k: byte;
begin
     repeat
     clrscr;
     writeln ('menu');
     writeln ('1: Создание записи');
     writeln ('2: Дополнение записи');
     writeln ('3: Критерий);
     writeln ('4: Вивести запись ');
     writeln ('5: exit ');
     write ('vash vubоr: ');
     readln (k);
     case k of
     1: vvod_file (t);
     2: Dopolnenue (t);  
     3: kruteriu (t,k);
     4: vuvod_file (t);
     end;
     until k = 5;
end;
begin
     clrscr;
     writeln ('vvedute Nazvanue: ');
     readln (name);
     assign (t, name);
     menu (t);
end.
Переводил некоторые моменты с кириллицы т.к. живу в Украине)
Программа работает.Единственный вопрос.Как правильно организовать до запись в файл(выделил красным),то есть чтобы после записи в файл я мог внести в него дополнительную инфу такого же рода(Номер,область и т.д.)?
Насколько я понял здесь надо применять
Код:
Seek(t,filesize(t))
чтобы можно было дописивать информацию начиная с последнего момента.
И кстати спасибо за прошлую помощь в написании программы.
Люблю на ты.Я человек простой

Последний раз редактировалось Leshii; 24.09.2011 в 17:46. Причина: Сказать спасибо.
Leshii вне форума Ответить с цитированием
Старый 24.09.2011, 18:03   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

Код:
AssignFile(t,Name);
Reset(t,1);
Seek(t,FileSize(t));
BlockWrite(F,p,1);//p - это некий записываеемый символ
CloseFile(F);
при желании можно сделать запись нескольких символов или слов
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 24.09.2011, 20:18   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

да Вы почти всё написали.
попробуйте так:
Код:
procedure dopolnenue (var t: file_oblast);
var i,n:byte;
        a:oblast;
begin
    reset(t);
    seek(t,fileSize(t));
    writeln('Введите количество добавляемых записей');
    readln(n);
    for i:=1 to n do	 begin
          Vvod_oblasti(a);
          write (t, a);
    end;
    Close(t);
    WriteLn('Готово. Для продолжения нажмите Enter');
    Readln
 end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в файл Evacuator C++ Builder 0 07.05.2011 20:35
Запись в файл. kemper88 Общие вопросы C/C++ 2 26.10.2010 22:03
Запись в файл (С) ya chef Помощь студентам 0 15.12.2009 13:49
Запись в файл. Baaandit Общие вопросы Delphi 4 27.11.2009 16:49
Запись в файл Titan123 Общие вопросы Delphi 6 23.08.2008 01:12