2017-09-12 16 views
1

私はDelphi XE6を実行していて、読み込み専用のINIファイルをEXEファイルに入れようとしています。Delphi XE6:TMemIniFileにリソースをロードするには?

私はすでに解決しています。また、ファイルをロードすることはTMemoにうまくいきます。

私はTMemoオブジェクトへのリソースからの純粋なTXT INIファイルをロードする次の関数を定義している:それは完璧に働いている

procedure LoadTXTfromResource(const ResourceName: string; OutMemo: TMemo); 

var 
    ResourceStream: TResourceStream; 

begin 
    ResourceStream := TResourceStream.Create(HInstance, ResourceName, RT_RCDATA); 
    try 
    OutMemo.Lines.LoadFromStream(ResourceStream); 
    finally 
    ResourceStream.Free; 
    end; 
end; 

私が必要とするのは、上述のテキストファイルをTMemIniFileにロードする手順を書き直すことです。


私は様々なことを試みてきましたが、私はそれを行うことができないようです。何かヒント?

答えて

3

リソースストリームを文字列リストにロードしてからTMemIniFileに転送する必要があります。

procedure LoadINIfromResource(const ResourceName: string; IniFile: TMemIniFile); 
var 
    ResourceStream: TResourceStream; 
    Text: TStringList; 
begin 
    ResourceStream := TResourceStream.Create(HInstance, ResourceName, RT_RCDATA); 
    try 
    Text := TStringList.Create; 
    try 
     Text.LoadFromStream(ResourceStream); 
     IniFile.SetStrings(Text); 
    finally 
     Text.Free; 
    end; 
    finally 
    ResourceStream.Free; 
    end; 
end; 

あなたTMemIniFileがベースのファイルではないので、それをインスタンス化する際に、ファイル名として空の文字列を渡す必要があることに注意:

IniFile := TMemIniFile.Create(''); 
関連する問題