Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.72/209: Рейтинг темы: голосов - 209, средняя оценка - 4.72
Xaker
13 / 12 / 3
Регистрация: 19.09.2009
Сообщений: 179
1

Проверка на существование файла

19.09.2009, 12:03. Просмотров 40513. Ответов 24
Метки нет (Все метки)

В общем делаю проверку на существования файла через if но если файла нет то появляется ошибка...

можно ли это как то исправить?

Delphi
1
2
3
4
5
6
7
if FileExists('C:\test.txt') then
begin
end
else
begin
Form2.ShowModal;
end
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2009, 12:03
Ответы с готовыми решениями:

проверка на существование файла
Вот эта строка не работает, файл существует, а она не пашет. if FileExists('deductda.txt') = true...

Проверка на существование неизвестного файла, зная лишь его расширение
Задача проста нужно отследить появление файла в папке (путь к ней известен) но вот загвоздка во...

Проверка на существование
Есть один txt-файл. В нем построчно написаны файлы и их вес в байтах. Пример: files.rar 12345678...

Проверка на существование текста из Memo
Привет, как можно проверить текст в мемо на существование!? именно нужно проверку сделать в Lines в...

Проверка на существование картинки в интернете
Я делаю так загружаю картинку через интернет при помощи Edit1.text. Картинки на моем сайте с...

24
Adler
79 / 79 / 19
Регистрация: 07.05.2009
Сообщений: 316
19.09.2009, 12:33 2
Цитата Сообщение от Xaker Посмотреть сообщение
через if но если файла нет то появляется ошибка...
что за ошибка? скрин сделай...

попробуй так?
Delphi
1
2
3
4
5
6
7
8
{$I-}
if FileExists('C:\test.txt') then
begin
end
else
begin
Form2.ShowModal;
end
0
Dream
157 / 155 / 16
Регистрация: 26.07.2008
Сообщений: 549
19.09.2009, 12:37 3
У меня все работает.
Приведи текст ошибки.
0
Xaker
13 / 12 / 3
Регистрация: 19.09.2009
Сообщений: 179
19.09.2009, 12:59  [ТС] 4
Dream, Adler, file not found
0
19.09.2009, 12:59
Adler
79 / 79 / 19
Регистрация: 07.05.2009
Сообщений: 316
19.09.2009, 13:12 5
Xaker, а если так?
Delphi
1
2
3
4
if not FileExists('C:\test.txt') then
begin
  Beep; Sleep(10000); Halt;
end;
Добавлено через 1 минуту
у тебя наверно просто Form2 тоже пытается открыть этот файл, но не проверяет существует ли он. Короче ошибка не в этом месте. ИМХО
1
Puporev
Модератор
56570 / 43270 / 29914
Регистрация: 18.05.2008
Сообщений: 102,925
19.09.2009, 13:14 6
Не знаю, вот код все работает.
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button1Click(Sender: TObject);
begin
if FileExists('C:\mail1.txt') then
showmessage('Yes!')
else
showmessage('No!')
end;
1
Mawrat
12856 / 5760 / 1701
Регистрация: 19.09.2009
Сообщений: 8,807
19.09.2009, 13:24 7
Цитата Сообщение от Xaker Посмотреть сообщение
Dream, Adler, file not found
Прогони прогу по шагам в отладчике. Скорее всего проблема из разряда вот таких:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
  strFileName : String;
  f : File;
...
begin
...
if FileExists(strFileName) then begin
  //Здесь работа с файлом.
   AssignFile(f, strFileName);
   Reset(f, 1);
end else begin
  //Какой-то код, который подразумевает:
  Exit;
  //или:
  Raise Exception.Create(...);
  //Но управление к Exit или Raise не передано по какой-то причине.
end;
 
//Опять работа с файлом! Здесь и возникает ошибка.
BlockRead(f, ...);
CloseFile(f);
Хм... хотя я может не прав. Раз I/O Exception, то предварительно файл скорее всего был связан с файловой переменной. И ошибка эта должна герериться именно на Reset();...
Xaker, выложи свой код - разберёмся...
1
Xaker
13 / 12 / 3
Регистрация: 19.09.2009
Сообщений: 179
19.09.2009, 14:36  [ТС] 8
Unit 1

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.FormActivate(Sender: TObject);
var f:textfile;
    s:string;
begin
assignfile(f,'C:\mail.txt');
reset(f);
readln(f,s);
Edit3.Text:=s;
closefile(f);
assignfile(f,'C:\mail2.txt');
reset(f);
readln(f,s);
ComboBox2.Text:=s;
closefile(f);
end;
Delphi
1
2
3
4
5
6
procedure TForm1.FormShow(Sender: TObject);
begin
if FileExists('C:\mail.txt') then
else
Form2.ShowModal;
end;
Unit 2

Delphi
1
2
3
4
5
6
7
8
procedure WriteTextFile(const Content, Path: string);
var F: TextFile;
begin
 AssignFile(F, Path);
 Rewrite(F);
 Writeln(F, Content);
 CloseFile(F);
end;
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
if Edit1.text<>'' then
begin
WriteTextFile(Edit1.Text, 'c:\mail.txt');
WriteTextFile(ComboBox1.Text, 'c:\mail2.txt');
Form2.Close;
end
else
begin
ShowMessage('Введите ваш адрес правильно!');
end
end;
Что неправильно...

Добавлено через 6 минут
ггг.......удалил файл mail.txt и всё заработало....мистика))) Спасибо всем кто пытался помочь...тупил я жестоко)

Добавлено через 12 минут
А нет трабла всё таки есть(((

Если на 2-ой форме нажать кнопку отмена (её код прост Form1.Close

то выдаст ту самую знаменитую ошибку....а мб можно как то закрыть из модальной формы всё программу не открывая 1-ой формы?
0
Mawrat
12856 / 5760 / 1701
Регистрация: 19.09.2009
Сообщений: 8,807
19.09.2009, 16:59 9
Цитата Сообщение от Xaker Посмотреть сообщение
...Если на 2-ой форме нажать кнопку отмена (её код прост Form1.Close
то выдаст ту самую знаменитую ошибку....
Конечно. Потому что если на второй форме не будет нажата кнопка BitBtn и соответственно не будут созданы файлы, то далее при вызове "отмена" на второй форме произойдет ее (Form2) закрытие и затем наступит событие OnActivate для Form1. Вернее осторожней выражаясь - видимо всё равно происходит это событие. А в обработчике этого события код пытается открыть файлы для чтения. А этих файлов нет - конечно будет ошибка ввода/вывода.
Цитата Сообщение от Xaker Посмотреть сообщение
а мб можно как то закрыть из модальной формы всё программу не открывая 1-ой формы?
Просто вставь в обработчик OnActivate проверку на существование файлов. Если файлов нет, то делай выход из проги - через Close. И всё. Это будет эквивалентно тому что ты хочешь закрывать всю прогу в случае "отмена" в Form2. Потому что после "отмена" в Form2 как раз наступит событие OnActivate в Form1.
1
Xaker
13 / 12 / 3
Регистрация: 19.09.2009
Сообщений: 179
19.09.2009, 17:41  [ТС] 10
Mawrat, огромное спасибо))) не знаю как то самого заклинило и не смог додуматься...в общем респект.
0
ReDFoX43.rus
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 43
26.06.2012, 17:20 11
Если такой ответ был, извините

Delphi
1
Form2.ShowModal;
Если вы используете .ShowModal, а не .Show, то нужно Form2.ShowModal присвоить переменной типа integer

Например:
Delphi
1
2
3
4
5
6
7
8
9
10
11
var i: integer;
 
...
 
if FileExists('C:\test.txt') then
begin
end
else
begin
i := Form2.ShowModal;
end;
Ну и трабл был наверно не в проверке файла, т.к. у меня такая версия кода работает на отлично)
0
БогДелфей
425 / 333 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
26.06.2012, 17:28 12
Вопрос был задан 3 года назад
0
ReDFoX43.rus
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 43
26.06.2012, 17:37 13
Да что же за подстава!
Первый раз решил ответить, а тут... :(
0
БогДелфей
425 / 333 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
26.06.2012, 17:40 14
Бывает
0
Andrey23
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 26
26.06.2012, 19:17 15
БогДелфей,
а я смотрю сообщений мало, а просмотров 7,5 к

Добавлено через 55 секунд
жесткий перепост, 3 года)
0
БогДелфей
425 / 333 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
26.06.2012, 19:20 16
Да это вот -> mafik2121, некропостер, зачем то поднял эту тему
0
Mawrat
12856 / 5760 / 1701
Регистрация: 19.09.2009
Сообщений: 8,807
26.06.2012, 20:14 17
Ооо.... Ребята. Эта тема создана 19.09.2009г. - В этот день я зарегистрировался на этом форуме! И это одна из самых первых тем, где я принял участие в обсуждении.
1
mafik2121
12 / 12 / 1
Регистрация: 08.06.2011
Сообщений: 88
26.06.2012, 21:21 18
Опа, я даже и не знал, что моя ссылка вызовет такой резонанс
0
Andrey23
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 26
26.06.2012, 23:40 19
Mawrat,
mafik2121,
0
Санек25
420 / 350 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
26.06.2012, 23:44 20
Цитата Сообщение от БогДелфей Посмотреть сообщение
Да это вот -> mafik2121, некропостер
Некропостер. Впервые такое выражение вижу... Надо запомнить...
0
26.06.2012, 23:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2012, 23:44

Проверка файлов на существование и размер
Как создать проверку на существование файла и размер. Например, если размер файла меняется от...

Реестр: проверка на существование раздела и ключа
Здравствуйте скажите как можно создать раздел в реестре и в этом разделе создать ключ и как ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru