![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Помогите с запуском exe-шника. Материалы для новичков читал. Как запустить проблем не возникает.
Но у меня есть особенность. Моя программка будет запускать игру. Предназначена для нескольких пользователей, у которых игра может находится в разных местах, т.е. пути будут различны, поэтому вбивать путь к ехе-шнику в код было бы неправильно. Мне не хватает мозгов чтобы реализовать следующее. При первом запуске создаётся некий config.txt в который с помощью Opendialog указывается путь к ехе-шнику игры, но при следующих запусках нужно просто проверять сущесвует ли config.txt, потом считать из него путь к ехе-шнику и в конце концов его запустить. Как реализовать всё по отдельно вроде понятно, но собрать всё воедино не могу... Заранее спасибо. |
|
#2
|
||||
|
||||
|
А не проще передавать нужный путь как параметр вашего исполняемого файла?
|
|
#3
|
||||
|
||||
|
А более подробно можно? не совсем понятно что такое параметр исполняемого файла.
В идеале путь к файлу хотелось бы брать из реестра куда игра прописывает свой путь при установке. в моём случае это Код:
HKEY_CURRENT_USER\Software\Eagle Dynamics\LockOn Flaming Cliffs 2\Path как мне кажется лучше указать путь при первом запуске моей программки. |
|
#4
|
||||
|
||||
|
Не люблю программ которые захламляют реестр ненужным мустором. Я предлагаю сделать проще, передавать параметр при запуске. Например:
YouApp.exe c:\SuperPuperGame\ Этот параметр можно в ярлык прописать. А в программе обрабатывается так: Код:
GamePath := ParamStr(1) |
|
#5
|
||||
|
||||
|
Про реестр я имел ввиду, что лучше только считать путь и по нему запускать игру по нажатию на Button. Записывать что-то в реестр ничего не надо.
Может я не очень подробно описал задачу. 1. по нажатию на Button открывается Opendialog. Пользователь указывает путь к ехе-шнику игры. Это я могу сделать. Проблема далее. 2. Полученный путь нужно записать в файл в конфиг.txt. 3. При следующих запусках моей программки, по нажатию на Button обратиться к конфиг.txt, взять из него путь и запустить ехе-шник, ну к примеру так. Цитата:
Вот как-то так. |
|
#6
|
|||
|
|||
|
Код:
uses
Registry;
const
cKeyName = 'Software\Eagle Dynamics\LockOn Flaming Cliffs 2\';
function GetGamePath : String;
var
R : TRegistry;
begin
Result := '';
R := TRegistry.Create;
Try
If R.OpenKeyReadOnly(cKeyName) Then
Begin
If R.ValueExists('Path')
Then Result := R.ReadString('Path');
R.CloseKey;
End;
Finally
R.Free;
End;
If Result = '' Then Raise Exception.Create('Key not found.');
end;Если ключа нет, то получишь ошибку. |
|
#7
|
|||
|
|||
|
Код:
const FileName='config.txt';
var GameFile:string;
implementation
{$R *.dfm}
procedure TForm1.ButtonClick(Sender: TObject);
var OpenDialog:TOpenDialog;
ExeFile:TextFile;
begin
assignFile (ExeFile,FileName);
if FileExists (FileName) then
begin
reset (Exefile);
ReadLn (Exefile,GameFile);
closeFile (ExeFile);
end else
begin
OpenDialog:=TOpenDialog.Create(Self);
OpenDialog.Filter:='Only exe|*.exe';
OpenDialog.Title:='Выберите екзешник с игрой';
If openDialog.Execute then
begin
rewrite (Exefile);
GameFile:=OpenDialog.FileName;
WriteLn (Exefile,GameFile);
closeFile (ExeFile);
end;
OpenDialog.free;
end;
end;Лови после выполнения кода, имя к екзешнику будет храниться в переменной gamefile. Нужна будет помощь обращайся icq 491385275. Последний раз редактировалось Admin, 14.09.2010 в 21:52. |