2009-08-07 7 views
3

どのようにして、配列をiniファイルの1つのIdentに書き込むのですか最近、それを読み取って値を配列に格納する方法はありますか?INIファイルからアレイを保存して読み込む方法は?

これは私が見えるようにiniファイルを希望する方法である:私が持っている

[TestSection] 
val1 = 1,2,3,4,5,6,7 

問題:

  1. 私は
  2. サイズを使用する必要が関数を知りません静的ではありません。7つ以上の値になる可能性があります。長さを確認するにはどうすればよいですか?

答えて

10

あなたはこのようにそれを行うことができ、

uses inifiles 

procedure ReadINIfile 
var 
    IniFile : TIniFile; 
    MyList:TStringList; 
begin 
    MyList := TStringList.Create(); 
    try 
     MyList.Add(IntToStr(1)); 
     MyList.Add(IntToStr(2)); 
     MyList.Add(IntToStr(3)); 


     IniFile := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')); 
     try    
      //write to the file 
      IniFile.WriteString('TestSection','Val1',MyList.commaText); 

      //read from the file 
      MyList.commaText := IniFile.ReadString('TestSection','Val1',''); 


      //show results 
      showMessage('Found ' + intToStr(MyList.count) + ' items ' 
          + MyList.commaText); 
     finally 
      IniFile.Free; 
     end; 
    finally 
     FreeAndNil(MyList); 
    end; 

end; 

あなたは何のiniファイルへの直接の配列を保存する機能が内蔵されがないようCSV文字列として整数を保存し、ロードする必要があります。

+1

で持っている場合は、あなたの配列の不正なスペースがそれを介します。 –

12

長さ指定子は必要ありません。区切り文字は、配列の部分を明確に区切ります。

あなたはこの

[TestSection] 
val1 = 1,2,3,4,5,6,7 

のように定義されたINIファイルのセクションは、あなたがしなければならないすべてはFYI

procedure TForm1.ReadFromIniFile; 
var 
    I: Integer; 
    SL: TStringList; 
begin 
    SL := TStringList.Create; 
    try 
    SL.StrictDelimiter := True; 
    SL.CommaText := FINiFile.ReadString('TestSection', 'Val1', ''); 
    SetLength(MyArray, SL.Count); 

    for I := 0 to SL.Count - 1 do 
     MyArray[I] := StrToInt(Trim(SL[I])) 
    finally 
    SL.Free; 
    end; 
end; 

procedure TForm1.WriteToIniFile; 
var 
    I: Integer; 
    SL: TStringList; 
begin 
    SL := TStringList.Create; 
    try 
    SL.StrictDelimiter := True; 

    for I := 0 to Length(MyArray) - 1 do 
     SL.Add(IntToStr(MyArray[I])); 

    FINiFile.WriteString('TestSection', 'Val1', SL.CommaText); 
    finally 
    SL.Free; 
    end; 
end; 
+0

heh、Re0slessは少し速かったです:) – Runner

+0

私はあなたも受け入れることができればいいと思います+ 1 –

+0

問題なし、助かりました:) – Runner

関連する問題