どのようにして、配列をiniファイルの1つのIdentに書き込むのですか最近、それを読み取って値を配列に格納する方法はありますか?INIファイルからアレイを保存して読み込む方法は?
これは私が見えるようにiniファイルを希望する方法である:私が持っている
[TestSection]
val1 = 1,2,3,4,5,6,7
問題:
- 私は
- サイズを使用する必要が関数を知りません静的ではありません。7つ以上の値になる可能性があります。長さを確認するにはどうすればよいですか?
どのようにして、配列をiniファイルの1つのIdentに書き込むのですか最近、それを読み取って値を配列に格納する方法はありますか?INIファイルからアレイを保存して読み込む方法は?
これは私が見えるようにiniファイルを希望する方法である:私が持っている
[TestSection]
val1 = 1,2,3,4,5,6,7
問題:
あなたはこのようにそれを行うことができ、
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文字列として整数を保存し、ロードする必要があります。
長さ指定子は必要ありません。区切り文字は、配列の部分を明確に区切ります。
あなたはこの
[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;
で持っている場合は、あなたの配列の不正なスペースがそれを介します。 –