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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2014, 21:57   #1
Nor61k
 
Регистрация: 02.12.2013
Сообщений: 9
По умолчанию Запрос на наличие определенного файла

всем привет!я новичок как сделать чтобы при включении программа проверяла наличие файла например на флешке если есть,то запускалась если нет то выдавала ошибку
Nor61k вне форума Ответить с цитированием
Старый 04.04.2014, 22:32   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...попробовать его открыть.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 04.04.2014, 23:17   #3
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Nor61k
function FileExists(const FileName: string): Boolean;
raxp
Если есть желание обрабатывать исключения.
XE5 вне форума Ответить с цитированием
Старый 04.04.2014, 23:33   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...тогда уж GetFileAttributes(), ибо FileExists() обертка над ним, и что даст гораздо больше информации.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 04.04.2014, 23:54   #5
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

raxp А может это обёртка FindFirstFile?
Цитата:
и что даст гораздо больше информации
Топик прочтите. Запрос на наличие определённого файла, а не информации.

Последний раз редактировалось XE5; 05.04.2014 в 01:02.
XE5 вне форума Ответить с цитированием
Старый 05.04.2014, 02:10   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от XE5 Посмотреть сообщение
raxp А может это обёртка FindFirstFile?
Ты на нетбуке сидишь чтоль что видишь в исходниках Дельфи только первый десяток строчек в реализации функций? А читать исходники лень?

Цитата:
Топик прочтите. Запрос на наличие определённого файла, а не информации.
No comments.
northener вне форума Ответить с цитированием
Старый 05.04.2014, 12:20   #7
Nor61k
 
Регистрация: 02.12.2013
Сообщений: 9
По умолчанию

спасибо получилось!но как сделать чтоб он искал файл на флешке например, а не в папке с программой?
Nor61k вне форума Ответить с цитированием
Старый 05.04.2014, 12:44   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
.тогда уж GetFileAttributes(), ибо FileExists() обертка над ним
Если нужно под Линукс то лучше обертку использовать. Надежнее.
Цитата:
чтоб он искал файл на флешке например
Для этого нужно получить список дисков и выбрать из них флешку:
http://delphiworld.narod.ru/base/get_pc_disks.html
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.04.2014, 00:42   #9
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Цитата:
Сообщение от Nor61k Посмотреть сообщение
спасибо получилось!но как сделать чтоб он искал файл на флешке например, а не в папке с программой?
Использовать полные пути, а не относительные.


Цитата:
Сообщение от northener Посмотреть сообщение
Ты на нетбуке сидишь чтоль что видишь в исходниках Дельфи только первый десяток строчек в реализации функций
Код:
function FileExists(const FileName: string): Boolean;
begin
  Result := FileAge(FileName) <> -1;
end;
Код:
function FileAge(const FileName: string): Integer;
var
  Handle: THandle;
  FindData: TWin32FindData;
  LocalFileTime: TFileTime;
begin
  Handle := FindFirstFile(PChar(FileName), FindData);
  if Handle <> INVALID_HANDLE_VALUE then
  begin
    Windows.FindClose(Handle);
    if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
    begin
      FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
      if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi,
        LongRec(Result).Lo) then Exit;
    end;
  end;
  Result := -1;
end;
Будь любезен, ткни пальцем во второй десяток строк кода функции, на которую ссылается обёртка.

Цитата:
Сообщение от northener Посмотреть сообщение
А читать исходники лень?
Если бы мне было лень читать, я бы имел на данном форуме не три темы, в которых я сам же и нашёл ответы, а пару десятков, как это бывает у некоторых. Подключи логику и впредь не задавай глупых вопросов. Каков вопрос, таков ответ.

Последний раз редактировалось XE5; 06.04.2014 в 00:49.
XE5 вне форума Ответить с цитированием
Старый 06.04.2014, 01:45   #10
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Будь любезен, ткни пальцем во второй десяток строк кода функции, на которую ссылается обёртка.
Ясно. На Д7 до сих пор сидишь?
Код из Д2005+
Код:
function FileExists(const FileName: string): Boolean;
{$IFDEF MSWINDOWS}
  function ExistsLockedOrShared(const Filename: string): Boolean;
  var
    FindData: TWin32FindData;
    LHandle: THandle;
  begin
    { Either the file is locked/share_exclusive or we got an access denied }
    LHandle := FindFirstFile(PChar(Filename), FindData);
    if LHandle <> INVALID_HANDLE_VALUE then
    begin
      Windows.FindClose(LHandle);
      Result := FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0;
    end
    else
      Result := False;
  end;

var
  Code: Integer;
  LastError: Cardinal;
begin
  Code := GetFileAttributes(PChar(FileName));
  if Code <> -1 then
    Result := (FILE_ATTRIBUTE_DIRECTORY and Code = 0)
  else
  begin
    LastError := GetLastError;
    Result := (LastError <> ERROR_FILE_NOT_FOUND) and
      (LastError <> ERROR_PATH_NOT_FOUND) and
      (LastError <> ERROR_INVALID_NAME) and ExistsLockedOrShared(Filename);
  end;
end;
{$ENDIF}
northener вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить наличие записи с через SQL запрос Dux БД в Delphi 19 23.08.2015 03:42
Проверка архивов rar, zip, arj, 7z на наличие файла используя cmd-файла cerberochek Win Api 5 05.10.2011 19:26
как проверить наличие определенного текста в строке jihot Общие вопросы Delphi 6 04.04.2010 18:40
Проверка на наличие файла Vladya Общие вопросы Delphi 7 10.10.2009 01:26
наличие определенного свойства у контрола Toxa Общие вопросы Delphi 5 03.09.2007 16:54