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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Файлы, не работает программа 
V
    Опции темы
SapFira
  Дата 27.4.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Программа осуществляет поиск актера по фильму. Надо чтобы при его нахождении она удаляла найденное и выводила на экран содержимое оставшегося файла. У меня ошибка выходит и программа не работает. Как правильно сделать удаление?? ПОМОГИТЕ ИСПРАВИТЬ smile 

Код

Uses Crt;
Type
 TActor=record
 fio:string[20];
 film:string[30];
end;
Type
 TActorsFile=file of TActor;

var

 af:TactorsFile;
 filename:string;
 i,j:integer;
 actor:TActor;
 film:string;
 f:file;
CurPos:integer;
Procedure DeletePos(Filename:string ; Pos:integer);
var
 af,bf:TActorsFile;
 tmp:TActor;
 
begin
 assign(af,Filename);
 reset(af);
 assign(bf,Filename);
 reset(bf);
 seek(af,Pos);
 seek(bf,Pos);
 read(af,tmp);
while not eof(af) do
begin
 read(af,tmp);
 write(bf,tmp);
end;
 close(af);
 truncate(bf);
 close(bf);
end;


begin 
 clrscr;
 write('Vvedite imy faila:');
 readln(filename);
 writeln('Vvedite imena acterov i ix filmy');
 writeln('Dly okon4aniya vvoda nazmite probel ');
 assign(af,filename);
 rewrite(af);
repeat
 write('Vvedite actera: ');
 readln(actor.fio);
 if actor.fio<>' ' then
 begin
  write('Vvedite actors film: ');
  readln(actor.film);
  write(af,actor);
 end;
until Actor.fio=' ';
close(af);
writeln;
write('Vvedite film dly naxozdeniya aktera: ');
readln(film);
assign(af,filename);
reset(af);
while not eof(af) do
begin
 read(af,actor);
 if actor.Film=film then
 begin
  writeln('Film:',actor.film);
  writeln('Actor:',actor.fio);
 CurPose:=FilePos(af);
DeletePos(filename,CurPos);
 end;
 DeletePos(Filename);
 close(af);
 assign(af,filename);
 reset(af);
 writeln;
 writeln('SODERZHIMOE FAILA:');
 writeln;
while not eof(af) do
begin
  read(af,actor);
  writeln('Film:',actor.film);
  writeln('Actor:',actor.fio);
end;
 close(af);
 writeln;
 writeln('Press any key to continue...');
 readln;
end;
end.


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

Это сообщение отредактировал(а) volvo877 - 28.4.2007, 12:00
PM MAIL   Вверх
powerfox
Дата 28.4.2007, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


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

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



Цитата(SapFira @  27.4.2007,  15:45 Найти цитируемый пост)
 read(af,actor);

Так нельзя.
Нужно:
Код

read(af,actor.fio);
read(af,actor.film);


Остальное некогда разбирать.



--------------------
user posted image
PM WWW   Вверх
TwisT_X
Дата 29.4.2007, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


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

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



SapFira, не понял что тебе надо что бы удаляло!! Удалило фильм и актер, но передд этим вывело на экран или что?!  smile 


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
TBase
Дата 2.5.2007, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 2.1.2007
Где: Череповец

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



powerfox, 
Код

read(af,actor);

Код

Type    
 TActorsFile=file of TActor;

На этом этапе все верно...

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

PM MAIL WWW Jabber   Вверх
ama_kid
Дата 3.5.2007, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



Что-то мне это сильно напоминает, я кажется отвечал на такой вопрос где-то...  smile 
SapFira
Ну попробуй так:
Код
Uses Crt;
Type
 TActor=record
 fio:string[20];
 film:string[30];
end;
Type
 TActorsFile=file of TActor;

var

 af:TactorsFile;
 filename:string;
 i,j:integer;
 actor:TActor;
 film:string;
 f:file;
 CurPos:integer;

Procedure DeletePos(Filename:string ; Pos:integer);
var
 af,bf:TActorsFile;
 tmp:TActor;

begin
 assign(af,Filename);
 reset(af);
 assign(bf,Filename);
 reset(bf);
 seek(af,Pos);
 seek(bf,Pos);
 read(af,tmp);
while not eof(af) do
begin
 read(af,tmp);
 write(bf,tmp);
end;
 close(af);
 truncate(bf);
 close(bf);
end;


begin
 clrscr;
 write('Vvedite imy faila:');
 readln(filename);
 writeln('Vvedite imena acterov i ix filmy');
 writeln('Dly okon4aniya vvoda nazmite probel ');
 assign(af,filename);
 rewrite(af);
 repeat
  write('Vvedite actera: ');
  readln(actor.fio);
  if actor.fio<>' ' then
  begin
   write('Vvedite actors film: ');
   readln(actor.film);
   write(af,actor);
  end;
 until Actor.fio=' ';
 close(af);

 writeln;
 write('Vvedite film dly naxozdeniya aktera: ');
 readln(film);
 assign(af,filename);
 reset(af);
 while not eof(af) do
 begin
  read(af,actor);
  if actor.Film=film then
  begin
   writeln('Film:',actor.film);
   writeln('Actor:',actor.fio);
   CurPos:=FilePos(af);
   DeletePos(filename,CurPos-1);
  end;
 end;
 close(af);
 assign(af,filename);
 reset(af);
 writeln;
 writeln('SODERZHIMOE FAILA:');
 writeln;
 while not eof(af) do
  begin
   read(af,actor);
   writeln('Film:',actor.film);
   writeln('Actor:',actor.fio);
  end;
 close(af);
 writeln;
 writeln('Press any key to continue...');
 readln;
end.



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Fighter
Дата 3.5.2007, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(ama_kid @  3.5.2007,  09:52 Найти цитируемый пост)
Что-то мне это сильно напоминает, я кажется отвечал на такой вопрос где-то...   SapFira



А ты посмотри. Тебе не кажется, что то что она сюда закинула и что ты закинул, по ходу дела - это две одинаковые вещи. 
PM MAIL   Вверх
ama_kid
Дата 4.5.2007, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



Цитата(Fighter @  3.5.2007,  22:39 Найти цитируемый пост)
А ты посмотри. Тебе не кажется, что то что она сюда закинула и что ты закинул, по ходу дела - это две одинаковые вещи.  
Не, вещи немного разные, я закинул отредактированный вариант того, что закинула она... Я вспомнил - функцию DeletePos я ей подкидывал в её предыдущем вопросе, smile  причем это было чуть ли не месяц назад...  smile не думал, что так сложно ею будет воспользоваться...  smile 



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
SapFira
Дата 5.5.2007, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо! Наконец то я разобралась. У меня просто не получалось закинуть эту процедуру DeletePos и я решила положить сюда то что вышло.. smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

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

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

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

3. Оффтопить

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

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

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


 




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


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

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