Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.08.2010, 00:48
Аватар для Sevas
Sevas Sevas вне форума
Прохожий
 
Регистрация: 17.06.2009
Сообщения: 20
Репутация: 10
По умолчанию Прошу помочь по запуску exe

Помогите с запуском exe-шника. Материалы для новичков читал. Как запустить проблем не возникает.
Но у меня есть особенность.
Моя программка будет запускать игру. Предназначена для нескольких пользователей, у которых игра может находится в разных местах, т.е. пути будут различны, поэтому вбивать путь к ехе-шнику в код было бы неправильно.
Мне не хватает мозгов чтобы реализовать следующее.
При первом запуске создаётся некий config.txt в который с помощью Opendialog указывается путь к ехе-шнику игры, но при следующих запусках нужно просто проверять сущесвует ли config.txt, потом считать из него путь к ехе-шнику и в конце концов его запустить.
Как реализовать всё по отдельно вроде понятно, но собрать всё воедино не могу...
Заранее спасибо.
Ответить с цитированием
  #2  
Старый 27.08.2010, 01:03
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А не проще передавать нужный путь как параметр вашего исполняемого файла?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 27.08.2010, 01:11
Аватар для Sevas
Sevas Sevas вне форума
Прохожий
 
Регистрация: 17.06.2009
Сообщения: 20
Репутация: 10
По умолчанию

А более подробно можно? не совсем понятно что такое параметр исполняемого файла.
В идеале путь к файлу хотелось бы брать из реестра куда игра прописывает свой путь при установке. в моём случае это
Код:
HKEY_CURRENT_USER\Software\Eagle Dynamics\LockOn Flaming Cliffs 2\Path
но работа с реестром для меня ещё более тёмная.
как мне кажется лучше указать путь при первом запуске моей программки.
Ответить с цитированием
  #4  
Старый 27.08.2010, 02:04
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Не люблю программ которые захламляют реестр ненужным мустором. Я предлагаю сделать проще, передавать параметр при запуске. Например:
YouApp.exe c:\SuperPuperGame\
Этот параметр можно в ярлык прописать. А в программе обрабатывается так:
Код:
GamePath := ParamStr(1)
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 27.08.2010, 02:49
Аватар для Sevas
Sevas Sevas вне форума
Прохожий
 
Регистрация: 17.06.2009
Сообщения: 20
Репутация: 10
По умолчанию

Про реестр я имел ввиду, что лучше только считать путь и по нему запускать игру по нажатию на Button. Записывать что-то в реестр ничего не надо.
Может я не очень подробно описал задачу.
1. по нажатию на Button открывается Opendialog. Пользователь указывает путь к ехе-шнику игры. Это я могу сделать. Проблема далее.
2. Полученный путь нужно записать в файл в конфиг.txt.
3. При следующих запусках моей программки, по нажатию на Button обратиться к конфиг.txt, взять из него путь и запустить ехе-шник, ну к примеру так.
Цитата:
ShellExecute(Handle, 'open', 'c:\game.exe',nil,nil,SW_SHOWNORMAL) ;
Я не могу сообразить как сделать так чтобы при первом запуске создался конфиг.txt и в него указать путь, а при последующих запусках происходила проверка существования конфиг.txt. Если он не существует, то провести пункты 1-3
Вот как-то так.
Ответить с цитированием
  #6  
Старый 27.08.2010, 03:26
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,034
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
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  
Старый 14.09.2010, 21:41
SilverSnow SilverSnow вне форума
Прохожий
 
Регистрация: 14.09.2010
Сообщения: 3
Репутация: 10
По умолчанию

Код:
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;
Admin: Пользуемся тегами!

Лови после выполнения кода, имя к екзешнику будет храниться в переменной gamefile. Нужна будет помощь обращайся icq 491385275.

Последний раз редактировалось Admin, 14.09.2010 в 21:52.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:36.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter