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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2012, 14:10   #1
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию Файлы. Работа с текстом.

Доброго времени суток уважаемые программисты, и с профессиональным праздником вас.
Ниже код программы позволяющей сравнить содержимое двух файлов. Путь к файлам вводится вручную. Подскажите как сделать проверку на существование файла, и почему я столкнулся с такой ошибкой: файлы лежат просто на диске "с" и когда прописываешь путь вот такая бяка вылазает (см.во вложениях)
Код:
program two_files;


var
  f1, f2: text;
  n: integer;
  s1, s2, inp_1, inp_2: string;
  b: boolean;

begin
  writeln('Введите путь к файлу 1');
  read(inp_1);
  assign(f1, inp_1);
  reset(F1);
  
  writeln('Введите путь к файлу 2'); 
  read(inp_2); 
  assign(f2, inp_2);
  reset(F2);
  
  while not eof(f1) do
  begin
    Readln(F1, s1);
    if not eof(f2) then
    begin
      Readln(F2, s2);
      if s1 = s2 then
        b := true
      else b := false;
    end;
  end;
  if b = true then writeln('Содержимое файлов равно') else writeln('Содержимое файлов не равно');
  Close(f1);
  Close(f2);
  readln;
  
end.
Изображения
Тип файла: jpg Безымянный.jpg (30.3 Кб, 153 просмотров)
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 14.02.2012, 14:37   #2
Валлидол
Новичок
Джуниор
 
Аватар для Валлидол
 
Регистрация: 14.02.2012
Сообщений: 9
По умолчанию

Если Вы используете PaxcalABC.Net, то для проверки существования файла лучше использовать функцию:
Код:
FileExists('Путь_к_файлу'):boolean;
Код для проверки:
Код:
if not(FileExists(inp_1)) then writeln('Ошибка! Нет файла :( ');
Валлидол вне форума Ответить с цитированием
Старый 14.02.2012, 14:42   #3
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Валлидол, спасибо. Каккую версию паскаля использовать это не принципиально...правильно ли я понял что:
Код:
 writeln('Введите путь к файлу 1');
  read(inp_1);
  if not(FileExists(inp_1)) then writeln('Ошибка! Нет файла :( ');
  assign(f1, inp_1);
  reset(F1);
тогда почему файл просто лежит на "с" но он его не видит...."ошибка нет файла...."
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...

Последний раз редактировалось McFrey; 14.02.2012 в 14:57.
McFrey вне форума Ответить с цитированием
Старый 14.02.2012, 15:04   #4
Валлидол
Новичок
Джуниор
 
Аватар для Валлидол
 
Регистрация: 14.02.2012
Сообщений: 9
По умолчанию

У вас случайно не Windows 7 установлена?) Там для доступа к диску C: нужны права админа =). Попробуйте указать путь к файлу на другом разделе жесткого диска или запустите Паскаль от имени администратора
Валлидол вне форума Ответить с цитированием
Старый 14.02.2012, 15:25   #5
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

да, семерка стоит...запустил от имени админа....файлы на диск "D" засунул...все равно тоже самое....первый файл нормально когда путь прописываешь....а когда второй прописываешь выдает "ошибка файл не существует" а потом в придачу "путь содержит недопустимые символы"
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 14.02.2012, 15:26   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от McFrey
Каккую версию паскаля использовать это не принципиально...
Это Вы ОЧЕНЬ сильно заблуждаетесь. Важно.
досовский TurboPascal - это одно, Pascal ABC.NET - другое,
а Delphi/FreePascal - третье...

ну и сразу вопрос к Вам по вашему коду:
Цитата:
Сообщение от McFrey
Код:
 read(inp_1);
  if not(FileExists(inp_2)) then writeln('Ошибка! Нет файла :( ');
посмотрите в какую переменную Вы вводите имя и какое - проверяете.

ну и последнее, если файла нет - то нужно либо выходить из процедуры/функции, либо направлять выполенение программы по другой веточке. У Вас же выдастся сообщение и программа пойдёт дальше - Assign(f1, inp_1); Reset(...) и т.д. и reset при отсутствующем файле сгенерит ошибку выполенения, разумеется!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.02.2012, 15:33   #7
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
досовский TurboPascal - это одно, Pascal ABC.NET - другое,
а Delphi/FreePascal - третье...
- я имел в виду, какую реализацию языка использовать вот что мне не принципиально, некоторым дают жесткие рамки тобишь TurboPascal значит только TurboPascal...а у меня таких рамок нет...
относительно той переменной в которую записываю, да уже даже в сообщении исправил это я заметил.
а вот про веточку выполнения действительно спасибо, подумаем как выкарабкаться)
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 14.02.2012, 15:37   #8
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

просто вся беда в том что файлы существуют...я ввожу правильный путь к ним а он мне выдает что мол нет ты ошибаешься такого файла увы нет...
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 14.02.2012, 15:39   #9
Валлидол
Новичок
Джуниор
 
Аватар для Валлидол
 
Регистрация: 14.02.2012
Сообщений: 9
По умолчанию

Код:
  writeln('Введите путь к файлу 1');
  readln(inp_1);
   if not(FileExists(inp_1)) then writeln('Ошибка! Нет файла ',inp_1);
   {$I-}
  assign(f1, inp_1);
   {$I+}
  reset(F1);
вот... У меня работает на все 100%
Валлидол вне форума Ответить с цитированием
Старый 14.02.2012, 15:45   #10
Валлидол
Новичок
Джуниор
 
Аватар для Валлидол
 
Регистрация: 14.02.2012
Сообщений: 9
По умолчанию

Извините за спам, сразу что то не обратил внимание на код проверки совпадения файлов:
Код:
while not eof(f1) do
  begin
    Readln(F1, s1);
    if not eof(f2) then
    begin
      Readln(F2, s2);
      if s1 = s2 then
        b := true
      else begin
            b := false;
            break;
            end;
    end;
  end;
Валлидол вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с текстом Милашка:) Помощь студентам 11 22.01.2011 20:45
Работа с текстом!!! elf80 Microsoft Office Excel 2 24.09.2009 09:54
Работа с текстом. J0n1cK Помощь студентам 1 30.05.2009 15:19
Работа с текстом MSD Общие вопросы Delphi 28 05.05.2009 17:56
работа с текстом... Poll Помощь студентам 5 23.01.2009 11:43