2012-03-21 2 views
3

Я хочу прочитать значение из файла .ini. Затем напишите условие - если это значение равно «1», тогда выполните sth (выполните действие). Я пробовал getinistring, но у меня не было никаких значений (просто отображайте значение по умолчанию). И я не знаю, как реализовать readini в моем коде, приведенном ниже. Спасибо за любую помощь, IS Новичок :)Inno Setup Чтение значения из .ini

// редактировать Вот код:

#include ReadReg(HKEY_LOCAL_MACHINE,'Software\Sherlock Software\InnoTools\Downloader','ScriptPath',''); 
#include ReadReg(HKEY_LOCAL_MACHINE,'Software\Sherlock Software\InnoTools\Tray','ScriptPath',''); 

[Languages] 
Name: english; MessagesFile: compiler:Default.isl 

[Code] 
function isxdl_Download(hWnd: Integer; URL, Filename: AnsiString): Integer; 
external '[email protected]:isxdl.dll stdcall'; 
function isxdl_SetOption(Option, Value: AnsiString): Integer; 
external '[email protected]:isxdl.dll stdcall'; 
var 
a :string; 
b :string; 

//Downloading a component depending on component choice in another setup(read from .ini) 
procedure CurStepChanged(CurStep: TSetupStep); 
begin 
a:=GetIniString('Select', 'First', 'false', '{pf}/SP_Settings.ini'); 
b:=GetIniString('Select', 'Should', 'true', {pf}\SP_Settings.ini'); 

begin 
if CompareStr(a,b)=0 then 
    if CurStep=ssInstall then begin 
     isxdl_SetOption('title', 'File Download'); 
     isxdl_SetOption('label', 'Download'); 
     isxdl_SetOption('description', 'Setup is downloading a file.'); 
     isxdl_Download(0,'url', ExpandConstant('{app}\x.rar')); 
     end;  
end; 
end; 

[Files] 
Source: C:\Documents and Settings\user\Pulpit\XML\Project\isxdl.dll; DestDir: {tmp}; Flags: dontcopy 
+1

Что значит: ничего не работает? Вы не получаете никаких ценностей? Ваше состояние не работает? Пожалуйста, разместите код, чтобы мы могли видеть, что вы делаете. –

+0

Я вставляю код в первое сообщение. GetIniString не получает никаких значений. Состояние работает правильно. – Vertius

+1

Просто ради полноты: это не форум, так что ничего подобного не «почта». Вы задаете вопрос, другие дают ответы. Когда мы попросим предоставить более подробную информацию, мы ожидаем, что вы отредактируете свой вопрос, а не «добавите новое сообщение». Ответы сортируются по их голосам, поэтому в конечном итоге другой «ответ», отправленный вами, окажется внизу списка. –

ответ

6

Есть функции Pascal Script как GetIniInt или GetIniString вы можете использовать для чтения из ини файла. См. this reference.

Я хотел бы отметить, что я написал этот ответ перед ОП изменил свой вопрос, чтобы сказать нам, что он уже попробовал GetIniString и ReadIni функции. Итак, да: я прочитал вопрос, прежде чем писать этот ответ :-)

Из кода, который вы опубликовали, я вижу, что вы пытаетесь прочитать INI-файл из папки Program Files. Это, однако, работает только при использовании функции ExpandConstant, поэтому следует читать

a:=GetIniString('Select', 'First', 'false', ExpandConstant('{pf}') + '\SP_Settings.ini'); 
b:=GetIniString('Select', 'Should', 'true', ExpandConstant('{pf}') + '\SP_Settings.ini'); 
+0

Пожалуйста, разместите код, чтобы мы могли видеть, что вы пытаетесь! –

+0

Спасибо вам большое! – Vertius

Смежные вопросы