发布问题后,标题可能会更新,但我从一个 .ini 文件开始,我想将 Integers 、 Strings 、 Bool 保存到这个 .ini 文件中。我能做的
WriteString
WriteInteger
WriteBool
然后我想把它读入一个列表,当我从列表中提取数据时,它会知道它已经准备好一个整数、字符串或布尔值了吗?
目前我必须把所有东西都写成一个字符串,然后我读入一个字符串列表。
发布问题后,标题可能会更新,但我从一个 .ini 文件开始,我想将 Integers 、 Strings 、 Bool 保存到这个 .ini 文件中。我能做的
WriteString
WriteInteger
WriteBool
然后我想把它读入一个列表,当我从列表中提取数据时,它会知道它已经准备好一个整数、字符串或布尔值了吗?
目前我必须把所有东西都写成一个字符串,然后我读入一个字符串列表。
如前所述,您可以将所有数据读取为字符串。您可以使用以下函数来确定数据类型:
type
TDataType = (dtString, dtBoolean, dtInteger);
function GetDatatype(const AValue: string): TDataType;
var
temp : Integer;
begin
if TryStrToInt(AValue, temp) then
Result := dtInteger
else if (Uppercase(AValue) = 'TRUE') or (Uppercase(AValue) = 'FALSE') then
Result := dtBoolean
else
Result := dtString;
end;
You can (ab)use the object property of the stringlist to store the datatype:
procedure TMyObject.AddInteger(const AValue: Integer);
begin
List.AddObject(IntToStr(AValue), TObject(dtInteger));
end;
procedure TMyObject.AddBoolean(const AValue: Boolean);
begin
List.AddObject(BoolToStr(AValue), TObject(dtBoolean));
end;
procedure TMyObject.AddString(const AValue: String);
begin
List.AddObject(AValue, TObject(dtString));
end;
function TMyObject.GetDataType(const AIndex: Integer): TDataType;
begin
Result := TDataType(List.Objects[AIndex]);
end;