Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/10: Рейтинг темы: голосов - 10, средняя оценка - 5.00
ec6f5d2
2 / 2 / 2
Регистрация: 10.09.2013
Сообщений: 72
1

Не работает FileExists

29.11.2013, 18:42. Просмотров 1815. Ответов 11
Метки нет (Все метки)

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 begin
  dir := GetCurrentDir;
 
  if fileexists('test.ini') then
  begin
    assignfile(ini, dir + '\test.ini');
    reset(ini);
    readln(ini, buf);
    deletefile(buf);
    append(ini);
  end
  else
  begin
    if not SelectDirectory('Выберите папку', dir + '/' , dir) then
     dir := dir + '\test';
    assignfile(ini, dir + '\test.ini');
    rewrite(ini);
  end;
 
  dir := dir + '\';
 
  renamefile(Application.ExeName, Application.ExeName + '.old');
  copyfile(pwidechar(Application.ExeName),
     pwidechar(dir + extractfilename(Application.ExeName)), false);
  writeln(ini, Application.ExeName + '.old');
  closefile(ini);
  WinExec(PAnsiChar(AnsiString(dir + extractfilename(Application.ExeName))
     ), SW_SHOW);
  exitprocess(0);
 end;
Код в потоке
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2013, 18:42
Ответы с готовыми решениями:

Не работает FileExists
Если загружаю изображение из папки с программой...

Ошибка в FileExists
Что-то я напартачил. Помогите исправить пожалуйста ошибки procedure...

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

Не работает if(FileExists() в консоли
Добрый день! В консольном приложении не работает указанная в теме функция....

FileExists не работает в локальной сети
нужно прочитать данные из файла. проблема в том, что файл находится в...

11
stalker12555
1 / 1 / 0
Регистрация: 15.07.2013
Сообщений: 106
29.11.2013, 18:51 2
В Uses есть SysUtils
0
ec6f5d2
2 / 2 / 2
Регистрация: 10.09.2013
Сообщений: 72
29.11.2013, 18:53  [ТС] 3
да, есть
0
DenNik
Непрофессионал
1801 / 1410 / 307
Регистрация: 26.07.2011
Сообщений: 7,890
29.11.2013, 18:57 4
Цитата Сообщение от ec6f5d2 Посмотреть сообщение
if fileexists('test.ini') then
текущая директория может отличаться от той, в которой лежит прога - это раз.
два (взаимосвязанное с первым) - GetcurrentDir не всегда возвращает директорию, в которой лежит программа.

и вообще. что значит "не работает"?!
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26149 / 17526 / 6950
Регистрация: 22.10.2011
Сообщений: 30,862
Записей в блоге: 6
29.11.2013, 18:57 5
А почему, собственно, при AssignFile учитывается dir, а при FileExists - нет?
0
esculap_ra
306 / 174 / 32
Регистрация: 22.08.2010
Сообщений: 786
Записей в блоге: 1
29.11.2013, 19:01 6
Как ты знаешь, что функция не работает?

Добавлено через 3 минуты
И что ты вообще делаешь с ini, в дельфи для работы с этими файлами есть класс.
0
ec6f5d2
2 / 2 / 2
Регистрация: 10.09.2013
Сообщений: 72
29.11.2013, 19:03  [ТС] 7
добавил showmessage(dir), файл там есть, FileExists возвращает false

Добавлено через 1 минуту
Цитата Сообщение от UI Посмотреть сообщение
А почему, собственно, при AssignFile учитывается dir, а при FileExists - нет?
Файл лежит в папке с программой
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26149 / 17526 / 6950
Регистрация: 22.10.2011
Сообщений: 30,862
Записей в блоге: 6
29.11.2013, 19:08 8
И что? Проверяй его наличие через ExtractFilePath(ParamStr(0)) + 'test.ini', а не просто 'test.ini', выше уже сказали, что текущая директория не всегда указывает на папку, откуда запущена программа...

Цитата Сообщение от esculap_ra Посмотреть сообщение
в дельфи для работы с этими файлами есть класс.
Этот класс
1) не предназначен для копирования INI-файла в другое место
2) не является потокобезопасным, как и почти все остальное в VCL...
0
esculap_ra
306 / 174 / 32
Регистрация: 22.08.2010
Сообщений: 786
Записей в блоге: 1
29.11.2013, 19:08 9
Цитата Сообщение от ec6f5d2 Посмотреть сообщение
добавил showmessage(dir)
showmessage(dir + '\test.ini') показывает полный путь к файлу?
0
ec6f5d2
2 / 2 / 2
Регистрация: 10.09.2013
Сообщений: 72
29.11.2013, 19:20  [ТС] 10
Цитата Сообщение от esculap_ra Посмотреть сообщение
dir + '\test.ini'
dir+'test.ini'
0
esculap_ra
306 / 174 / 32
Регистрация: 22.08.2010
Сообщений: 786
Записей в блоге: 1
29.11.2013, 19:34 11
Функция у меня работает, файл открывает и считывает сроку. Но не записывает информацию в него
Delphi
1
2
3
4
    reset(ini);
    readln(ini, buf);
    deletefile(buf);
    append(ini);
Ты пробуешь вновь открыть файл, не закрыв его.
Delphi
1
2
3
4
5
6
7
    assignfile(ini, dir + '\test.ini');
    reset(ini);
    readln(ini, buf);
     // showmessage(buf);
     closefile(ini);
    deletefile(buf);
    append(ini);
Добавлено через 4 минуты
Цитата Сообщение от UI Посмотреть сообщение

Этот класс
1) не предназначен для копирования INI-файла в другое место.
Я не вижу в коде копирования INI. Есть копирование файла. и занесение его имени в INI
0
ec6f5d2
2 / 2 / 2
Регистрация: 10.09.2013
Сообщений: 72
29.11.2013, 19:41  [ТС] 12
Все работает, спасибо
0
29.11.2013, 19:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2013, 19:41

FSO.FileExists конфликтует с WS.SpecialFolders
Всем доброго времени суток... Помогите решить проблему. Заключается она в том,...

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

Мышь работает через раз, то есть запустил ОС - мышь не работает, перезагрузил - мышь работает
Установлена Windows 7 со всеми последними обновлениями. Все всегда замечательно...


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

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

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