ivan777 Posted March 26, 2016 Share Posted March 26, 2016 Здравствуйте ! Нужно реализовать в программе на Delphi проверку на наличие файлов игры, чтобы установка была только в папку с игрой и никуда больше. Или такую же проверку сделать только в установке Inno Sutup при выборе папки для установки . Если кто то знает как это сделать на Inno setup или на Delphi скиньте код пожалуйста @ Quote Link to comment Short link Share on other sites More sharing options...
PinkElfant Posted March 26, 2016 Share 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 Link to comment Short link Share on other sites More sharing options...
ivan777 Posted March 26, 2016 Author Share 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 Link to comment Short link Share on other sites More sharing options...
PinkElfant Posted March 26, 2016 Share Posted March 26, 2016 ну так в цикле пройтись для нескольких файлов как вариант? @ Quote Link to comment Short link Share on other sites More sharing options...
ivan777 Posted March 26, 2016 Author Share 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 Link to comment Short link Share on other sites More sharing options...
PinkElfant Posted March 26, 2016 Share 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 Link to comment Short link Share on other sites More sharing options...
ivan777 Posted March 26, 2016 Author Share 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 Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.