现在我能想到的最好方法是:
var Listalimpeza : TStringList;begin Listalimpeza := TStringList.Create; Listalimpeza.Delimiter := '|'; Listalimpeza.QuoteChar := '"'; Listalimpeza.delimitedText := 'O=0 | " .=."'; ShowMessage('1o Valor = '+Listalimpeza.names[1]+' e 2o Valor = '+Listalimpeza.ValueFromIndex[1]);
这是有效的,但它对于视觉效果并不好,因为我无法对前面的字符串(对于ex’.’)进行编码(这对于SPACE字符来说非常直观),只有像(“.)这样才能使=在TStringList中分配名称和值.
解决方法 默认情况下,名称和值必须以windows INI文件的样式分隔=. AFAICT无法改变那个分隔符.由于@SirRufo在注释中指示(我从未注意到),您可以使用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名称/值可能无法满足您的需求.目前尚不清楚你的实际目标是什么,但看起来一个简单的文本文件包含一个简单的文本列表|替换和该文件的普通解析都可以工作,你可以轻松地使用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;
然后,您可以填充编辑/添加/删除替换对所需的任何控件,然后反转读取 *** 作以将其写回以进行保存.
总结以上是内存溢出为你收集整理的如何在字符串中存储和加载键值对列表?全部内容,希望文章能够帮你解决如何在字符串中存储和加载键值对列表?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)