기본적으로 Names
과 Values
은 Windows INI 파일 형식으로 =
으로 구분해야합니다.
AFAICT로 구분 기호를 변경할 방법이 없습니다.
@SirRufo가 주석에 표시 했으므로 (내가 알지 못했던) TStringList.NameValueSeparator
속성을 사용하여 변경할 수 있습니다.
이 당신에게 당신이 무슨 생각하지 않은, 당신의 TStringList
에 무엇 델파이 생각의 아이디어를 줄 것이다 :

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;
이름/값은 아마도 당신이 필요로하는 것을하지 않을 것입니다. 실제 목표가 무엇인지는 분명하지 않지만 간단한 파일 목록 인 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;
저장합니다.
예제에서 표준 구분 기호와 인용 부호를 사용하면 게시가 훨씬 쉬울 것입니다. 샘플 코드를 사용하면 작동합니까? 나는 당신이 당신의 DelimitedText 할당에서이 문자들을 적절하게 사용하지 못하고 있다고 생각합니다. 그러나 나는 이상한 선택을 만났을 때 당신의 모범을 풀기 위해 포기했다. 제안 : SA가 아닌 표준 기본값을 고수하면 SA에 대한 더 나은 응답을 얻을 수 있습니다. 그리고!, 표준에 문제가 생기지 않는 한. 아마도 여기 다른 사람이 당신의 뇌와 내장을 파헤쳐 당신의 것을 파헤칠 것입니다. – RobertFrank
몇 가지 사항을 수정했습니다. 지금은 더 이해할 수 있다고 생각합니다. 확인해 주시겠습니까? –
* 어떻게 * 저장했는지 * 목록을 어떻게 편집 할 것인지 생각 해 봤나? 편집하려면 2 열 그리드를 사용하여 따옴표 나 구분을 걱정할 필요가 없습니다. 그런 다음 원하는대로 문자열을 저장하십시오. 읽기 쉬운 형식으로 저장하는 것에 대해 걱정하지 마십시오. 프로그램에 의해 명확하게로드 될 수 있는지 확인하십시오. –