ivan777 1 Posted March 26, 2016 Здравствуйте ! Нужно реализовать в программе на Delphi проверку на наличие файлов игры, чтобы установка была только в папку с игрой и никуда больше. Или такую же проверку сделать только в установке Inno Sutup при выборе папки для установки . Если кто то знает как это сделать на Inno setup или на Delphi скиньте код пожалуйста Quote Share this post Link to post Short link Share on other sites
PinkElfant 25 #320991 Posted March 26, 2016 (edited) В чем проблема запросить все файлы в каталоге и проверить наличие там exe'шника игры? FindFirstFile function https://msdn.microsoft.com/en-us/library/windows/desktop/aa364418%28v=vs.85%29.aspx FindNextFile function https://msdn.microsoft.com/en-us/library/windows/desktop/aa364428%28v=vs.85%29.aspx на дельфях вроде даже проще http://www.delphibasics.ru/FileExists.php Обёртка //Функция GetFileAttributes Win32 API возвращает атрибуты для заданного файла или каталога. В случае ошибки возвращается значение 0xFFFFFFFF. #include <windows.h> bool FileExists(LPCTSTR fname) { return ::GetFileAttributes(fname) != DWORD(-1); } Edited March 26, 2016 by Suffering Quote Share this post Link to post Short link Share on other sites
ivan777 1 #320995 Posted March 26, 2016 (edited) я могу сделать это с одним файлом, но с нескольким не получается это сделать procedure TForm1.FormCreate(Sender: TObject);begin if FileExists(extractfilepath(application.ExeName)+'file.txt') then //Проверяю файлelse ShowMessage('Выбрать игру!'); //Если нету файла end; Edited March 26, 2016 by ivan777 Quote Share this post Link to post Short link Share on other sites
PinkElfant 25 #320997 Posted March 26, 2016 ну так в цикле пройтись для нескольких файлов как вариант? Quote Share this post Link to post Short link Share on other sites
ivan777 1 #321000 Posted March 26, 2016 procedure TForm1.FormCreate(Sender: TObject);begin if FileExists(extractfilepath(application.ExeName)+'file.txt') then //Проверяю файл if FileExists(extractfilepath(application.ExeName)+'111.txt') then //Проверяю файл if FileExists(extractfilepath(application.ExeName)+'4444.txt') then //Проверяю файлelse ShowMessage('Выбрать игру!'); //Если нету файлаend; Я так пробовал делать, оно как бы вроде работает, но не так, он не проверяет каждый файл Quote Share this post Link to post Short link Share on other sites
PinkElfant 25 #321003 Posted March 26, 2016 (edited) ну так все верно, else относится к 1 блоку, надо вот так-с begin if (FileExists(extractfilepath(application.ExeName)+'file.txt') and FileExists(extractfilepath(application.ExeName)+'111.txt') and FileExists(extractfilepath(application.ExeName)+'4444.txt')) then CODE_HERE() //Проверяем файлы else ShowMessage('Выбрать игру!'); //Если нету файла end; Заносите код в теги Edited March 26, 2016 by Suffering 1 Quote Share this post Link to post Short link Share on other sites
ivan777 1 #321006 Posted March 26, 2016 ну так все верно, else относится к 1 блоку, надо вот так-с begin if (FileExists(extractfilepath(application.ExeName)+'file.txt') and FileExists(extractfilepath(application.ExeName)+'111.txt') and FileExists(extractfilepath(application.ExeName)+'4444.txt')) then CODE_HERE() //Проверяем файлы else ShowMessage('Выбрать игру!'); //Если нету файла end; Заносите код в теги Спасибо. Помогли Quote Share this post Link to post Short link Share on other sites