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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2009, 16:09   #1
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
Печаль Шифрование текстового файла

Помогите найти ошибки в программе.
Я написал программу для шифрования текстового файла, но почему-то на 20 строчке выдает ошибку: error 3: path not found.
Вот код:
Код:
program pomoshnic;
uses crt;
procedure sshifr;
var sinp,sout:text;
    sc:^char;
    ss:^string;
begin
  new(ss);
  clrscr;
  write('Vvedite [put] ima faila: ');readln(ss^);
  assign(sinp,ss^);
  {$i-}reset(sinp);{$i+}
  if ioresult<>0 then
  begin
    dispose(ss);
    writeln('fail ne naiden');
    readln;
    exit
  end;
  rename(sinp,ss^+'.tmp');{error 3: path not found}
  assign(sout,ss^);
  rewrite(sout);
  dispose(ss);
  new(sc);
  while not eof(sinp) do
  begin
    read(sinp,sc^);
    if ord(sc^) in [0..128] then sc^:=chr(ord(sc^)+128)
    else sc^:=chr(ord(sc^)-128);
    write(sout,sc^);
  end;
  dispose(sc);
  close(sout);close(sinp);
  erase(sinp);
  writeln('Dla povtornogo shifrovania',#10,#13,'nagmitelubuu klavishy kromer ''esc''');
  sc^:=readkey;
  if sc^<>#27 then sshifr;
end;
begin
  sshifr
end.
Заранее благодарен.

Последний раз редактировалось pomoshnic; 14.02.2009 в 16:52. Причина: точно error 3: patch not found? а не error 3: path not found?
pomoshnic вне форума Ответить с цитированием
Старый 14.02.2009, 16:41   #2
KingOfNothing
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 89
По умолчанию

Тогда очевидно, что файл не найден. Точно файл существует? может в проверке ошибка
Если вдруг захотите сказать мне спасибо - воспользуйтесь кнопкой "Добавить отзыв"

Последний раз редактировалось KingOfNothing; 14.02.2009 в 17:02. Причина: Error 3 Path not found
KingOfNothing вне форума Ответить с цитированием
Старый 14.02.2009, 17:17   #3
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию

Цитата:
Точно файл существует? может в проверке ошибка
Точно. Я со всякими файлами пробовал. А если ввести неправильное имя, тогда выводит fail ne naiden.
pomoshnic вне форума Ответить с цитированием
Старый 14.02.2009, 17:57   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

У меня ощущение, что программе не нравится новое имя, в котором как бы присутствует два расширения (.txt.tmp).
Сделал так:
Код:
rename(sinp,copy(ss^,1,length(ss^)-3)+'tmp');
Файл переименовывается. Только теперь там другая ошибка, но, думаю, она уже связана с чем-то другим.

И еще: перед переименованием файл нужно закрыть:
Код:
close(sinp);
rename(sinp,copy(ss^,1,length(ss^)-3)+'tmp');
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 14.02.2009, 18:06   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Все, исправил. Отметил в листинге, что добавил:
Код:
program pomoshnic;
uses crt;
procedure sshifr;
var sinp,sout:text;
    sc:^char;
    ss,newss:^string;  { -- newss - добавил --}

begin
  new(ss);
  clrscr;
  write('Vvedite [put] ima faila: ');readln(ss^);
  assign(sinp,ss^);
  {$i-}reset(sinp);{$i+}
  if ioresult<>0 then
  begin
    dispose(ss);
    writeln('fail ne naiden');
    readln;
    exit
  end;
  close(sinp);
  new(newss);  { <----}
  newss^ := copy(ss^,1,length(ss^)-3)+'tmp'; { <-----}
  rename(sinp,newss^);
  assign(sinp,newss^);  { <-----}
  reset(sinp);        { <---- }
  assign(sout,ss^);
  rewrite(sout);
  dispose(ss);
  dispose(newss);  { <------ }
  new(sc);
  while not eof(sinp) do
  begin
    read(sinp,sc^);
    if ord(sc^) in [0..128] then sc^:=chr(ord(sc^)+128)
    else sc^:=chr(ord(sc^)-128);
    write(sout,sc^);
  end;
  dispose(sc);
  close(sout);
  close(sinp);
  erase(sinp);
  writeln('Dla povtornogo shifrovania',#10,#13,'nagmitelubuu klavishy kromer ''esc''');
  sc^:=readkey;
  if sc^<>#27 then sshifr;
end;
begin
  sshifr
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 14.02.2009, 18:21   #6
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию

Я не могу оставить вам отзыв, Sazary, т.к. последний раз я оставил его вам, но все равно огромное спасибо.
pomoshnic вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мониторинг текстового файла zander Microsoft Office Excel 20 14.02.2009 01:34
Ввод из текстового файла bygoga Паскаль, Turbo Pascal, PascalABC.NET 14 23.11.2008 13:37
Delphi Редактирование текстового файла Starscream Общие вопросы Delphi 11 18.02.2008 17:15
Открытие текстового файла Victor Microsoft Office Excel 2 16.01.2008 03:42