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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal]Корректировка записи из внешнего файла 
V
    Опции темы
atlant
Дата 18.5.2007, 03:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 8.3.2007
Где: г.Иркутск

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



Братци выручайте, всё работает, кроме корректировки данных,  где ошибка понять не могу
Может кто подскажет где, или исправит код. Дело в том что она не сохраняет данные 
которые были откоректированны.
p.s. За коректировку отвечает 4:Begin
 Заранее спасибо

Код

Program Kursovik;
Uses Crt;
label bye;
var
f: text; {text file}
obr: string[15];
n: integer; { kol-vo zapisey udovletvoryuchih zaprosu }
fam: string[15]; {familia}
name: string[15]; {name}
tel: string[11];   {# telephone}
m:integer;
st: string;
fam2: string[15]; {familia}
name2: string[15]; {name}
tel2: string[11];   {# telephone}




{----------------------------------------------}

begin ClrScr;
writeln('Welcome, chose action:');
repeat
writeln('1-Add record,');
writeln('2-Searching for record,');
writeln('3-Exit.');
writeln('4-CORECTING.');
readln(m);
case m of

{----------------------------------------------}

1:begin
     writeln('Add in telephone reference book');
     Assign(f,'C:\phone.txt');
{$i-}
     Append(f); { snachalo open v rejim add }
     if IOResult <> 0 then
{ Veroytno file phone.txt no HDD C:\}
{ sozdadim ego }
           begin
           Rewrite(f); { open rejim perezapisi }
           if IOResult  <>1 then
              begin
                  goto bye;
              end;
           end;
                    { poluchim danie ot Userя }
  bye:
  write('The Surname ->') ;
  readln(fam);
  write('The Name ->');
  readln(name);
  write('The Telephone ->') ;
  readln(tel); { i zapihim ih v file }
  writeln(f,fam);
  writeln(f,name);
  writeln(f,tel);
  close(f);
  writeln('Information add.');
  readln;
  end;

{----------------------------------------------}

2:begin
     writeln('Searching for in telephone reference book');
     Assign(f,'C:\phone.txt');
     reset (f); { open file dly chteniyя}
     if IOResult <> 0 then
{ veroytno file C:\phone.txt na HDD no }
           begin
                writeln('file C:\phone.txt Inaccessible');
                goto bye;
           end;
     repeat
     write('The Surnameя ->');
     readln(obr);
     if Length(obr) <> 0 then { user vvil stroku }
        begin
             reset(f); { prosmatrivaem file ot nachala }
             n:=0;
             while not eof(f) do { prosmatrivaem ves file }
                   begin         { chitaem is file }
                   readln(f,fam);
                   readln(f,name);
                   readln(f,tel);
                   if fam = obr then { naidena nujnay familiy }
                          begin
                               writeln(fam,' ',name, ' ',tel);
                               N:=N+1;
                          end;
                   end;
             if n = 0 then
             writeln('Information about ' ,obr,' is not found.');
        end;

      until Length(obr) = 0;
  end;

{---------------------------------------------------}

4:begin
     writeln('Searching for in telephone reference book');
     Assign(f,'C:\phone.txt');
     reset (f); { open file dly chteniyя}
     if IOResult <> 0 then
{ veroytno file C:\phone.txt na HDD no }
           begin
                writeln('file C:\phone.txt Inaccessible');
                goto bye;
           end;
     repeat
     write('The Surnameя ->');
     readln(obr);
     if Length(obr) <> 0 then { user vvil stroku }
        begin
             reset(f); { prosmatrivaem file ot nachala }
             n:=0;
             while not eof(f) do { prosmatrivaem ves file }
                   begin         { chitaem is file }
                   readln(f,fam);
                   if fam = obr then
                      begin
                      Writeln ('new add');
                       write('fam: ');  readln(fam);
                       write('name: '); readln(name);
                       write('tel: ');  readln(tel);
                       fam2:=fam;
                       name2:=name;
                       tel2:=tel;
                      readln (f);
                      write (f,st);  n:=1
                      end;
                    end;
             close (f);
         end;
             if n = 0 then
             writeln('Information about ' ,obr,' is not found.');


      until Length(obr) = 0;
  end;

3: halt;
end;
until m>10;
end.


Тегами пользуйся...

Это сообщение отредактировал(а) volvo877 - 18.5.2007, 11:21
PM MAIL ICQ   Вверх
volvo877
Дата 18.5.2007, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

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



Цитата(atlant @  18.5.2007,  03:55 Найти цитируемый пост)
где ошибка понять не могу

Ошибка в том, что ты при работе с текстовым файлом используешь принцип, которым надо пользоваться для типизированного файла... Текстовый файл открывается или для чтения, или для записи, но никак не для И того И другого...

Что тебе надо сделать: проходишь по всему файлу, ищешь стоку для коррекции... Если очередную строку не надо корректировать - пишешь ее в дополнительный (временный) текстовый файл, если надо - то корректируешь и результат записываешь туда же... как только пробежал пр всем строкам исходного файла - закрываешь и удаляешь его, а временный - закрываешь и переименовываешь на старое имя... Результат - у тебя есть файл с измененными значениями, но с тем же именем...
PM MAIL   Вверх
atlant
Дата 18.5.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 8.3.2007
Где: г.Иркутск

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



Цитата(volvo877 @  18.5.2007,  11:29 Найти цитируемый пост)
Результат - у тебя есть файл с измененными значениями, но с тем же именем... 


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

может быть изменить тип файла(например на *.dat, или  *.reg), или как то по другому?
PM MAIL ICQ   Вверх
volvo877
Дата 19.5.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

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



Цитата(atlant @  18.5.2007,  16:09 Найти цитируемый пост)
если я правильно тебя понял, то старые записи которые были нормальные в этом файле удаляться вместе с ним.

Ты неправильно понял, или не до конца прочел:

Цитата(volvo877 @  18.5.2007,  11:29 Найти цитируемый пост)
Если очередную строку не надо корректировать - пишешь ее в дополнительный (временный) текстовый файл, если надо - то корректируешь и результат записываешь туда же...
, таким образом во временном файле будут ВСЕ записи из исходного, а одна из них - скорректированная...

PM MAIL   Вверх
atlant
Дата 20.5.2007, 05:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 8.3.2007
Где: г.Иркутск

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



извини смысл сразу не понял.
спасибо за помощ smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

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

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

2. Публиковать ссылки на варез

3. Оффтопить

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

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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




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


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

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