Windows INI ファイルのスタイルでは、デフォルトで と を ,で区切る必要がありNames
ます。AFAICT がそのセパレーターを変更する方法はありません。@SirRufo がコメントで示しているように (そして、私はこれまで気付かなかった)、プロパティを使用して変更できます。Values
=
TStringList.NameValueSeparator
これにより、Delphi があなたの 内にあると考えているもののアイデアが得られますがTStringList
、それはあなたが考えているものではありません。
procedure TForm1.FormCreate(Sender: TObject);
var
SL: TStringList;
Temp: string;
i: Integer;
begin
SL := TStringList.Create;
SL.Delimiter := '|';
SL.QuoteChar := '"';
SL.StrictDelimiter := True;
SL.DelimitedText := 'O=0 | ! .!=!.!';
Temp := 'Count: ' + IntToStr(SL.Count) + #13;
for i := 0 to SL.Count - 1 do
Temp := Temp + Format('Name: %s Value: %s'#13,
[SL.Names[i], SL.ValueFromIndex[i]]);
ShowMessage(Temp);
end;
これにより、次の出力が生成されます。
TStringList
Names/Values は、おそらく必要なことを実行しないでしょう。あなたの実際の目標が何であるかは明らかではありませんが、そのファイルの単純なリストと単純text|replacement
な解析を含む単純なテキストファイルが機能し、そのファイルTStringList
から簡単に読み書きできるように見えますが、わかりません自分で行う以外に、解析を簡単に行う方法。ペアを解析するときに、配列を使用してペアを格納できます。
type
TReplacePair = record
TextValue: string;
ReplaceValue: string;
end;
TReplacePairs = array of TReplacePair;
function GetReplacementPairs: TReplacePairs;
var
ConfigInfo: TStringList;
i, Split: Integer;
begin
ConfigInfo := TStringList.Create;
try
ConfigInfo.LoadFromFile('ReplacementPairs.txt');
SetLength(Result, ConfigInfo.Count);
for i := 0 to ConfigInfo.Count - 1 do
begin
Split := Pos('|`, ConfigInfo[i];
Result[i].TextValue := Copy(ConfigInfo[i], 1, Split - 1);
Result[i].ReplaceValue := Copy(ConfigInfo[i], Split + 1, MaxInt);
end;
finally
ConfigInfo.Free;
end;
end;
次に、置換ペアを編集/追加/削除するために必要なコントロールを入力し、読み取り操作を逆にしてそれらを書き戻して保存することができます。