从ini文件中获取字符串并多次使用

时间:2014-08-19 06:05:28

标签: inno-setup

我想将ini文件中的文本存储到变量中,并在我的设置页面上多次使用var,

对于instace,我可以说我有一个名为" datatxt" 的ini文件,ini部分 - [txtdata] ,部分键 - & #34; htxt" ,键值 - " hello world" 。 我想将此文本值存储在名为 - " hiVar" 的var中,并在此处使用 -

Title := 
    TNewStaticText.Create(MOPage);
    Title.Parent := MOPage.Surface;
    Title.Font.Name := 'Verdana';
    Title.Caption := hiVar; 

1 个答案:

答案 0 :(得分:1)

对于声明变量,有两个可用范围。本地和全球。本地声明的变量仅在声明它们的过程或方法的主体内可见。它们被广泛用作中间操作的临时存储,或者用于保存对象引用(如您所知):

procedure DoSomething;
var
  S: string; // <- this is a locally declared variable
begin
  // only inside this procedure the S variable can be accessed
end;

全局声明的变量(这是您的问题)在整个代码脚本部分的所有过程和方法的范围内都可见。它们用于保存跨脚本代码使用的对象的引用,在事件方法之间传递某些操作的结果,或者用于保存一些永久值(这是您的情况):

var
  S: string; // <- this is a globally declared variable

procedure DoSomething;
begin
  // inside this procedure the S variable can be accessed
end;

procedure DoSomethingElse;
begin
  // as well as inside this procedure the S variable can be accessed
end;

用一个例子回答你的问题是非常困难的,因为你没有描述你想要读取该INI文件的上下文,所以很难说你应该在哪个事件中阅读它。在以下示例中,初始化向导表单时将读取INI文件值。您可以看到从另一个方法访问全局变量:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Files]
Source: "datatxt"; Flags: dontcopy

[Code]
var
  hiVar: string; // <- this is a globally declared variable

procedure InitializeWizard;
begin
  // extract the file into the setup temporary folder
  ExtractTemporaryFile('datatxt');
  // assign the read value into a global variable
  hiVar := GetIniString('txtdata', 'htxt', '', ExpandConstant('{tmp}\datatxt'));
  // from now on the variable should contain the key value
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  // just a random code showing that you can access global
  // variables across the methods
  if CurPageID = wpWelcome then
    MsgBox(hiVar, mbInformation, MB_OK);
end;