我将应用程序的设置存储在INI文件中。我读到二进制条目存在2kb的限制,因此我将二进制编码为字符串并将值存储为字符串(writestring)。检查文件时,似乎所有字符串都按预期存储。
当尝试回读时,似乎只读取了2047个字符,因此在将其解码回流时,它会失败。
显然似乎字符串也有2kb的限制,但我想知道那是不是或者我做错了什么。如果有这样的限制,任何想法如何绕过它?
由于
编辑: 傻我,我去了system.inifiles,它在代码中说道
function TIniFile.ReadString(const Section, Ident, Default: string): string;
var
Buffer: array[0..2047] of Char; <<<<<<<<<<<<<<<<
begin
SetString(Result, Buffer, GetPrivateProfileString(MarshaledString(Section),
MarshaledString(Ident), MarshaledString(Default), Buffer, Length(Buffer),
MarshaledString(FFileName)));
end;
答案 0 :(得分:5)
解决方案很简单。
扩展TInifile
并插入您自己的ReadString
版本。
TMyIniFile = class(TInifile)
function ReadString(const Section, Ident, Default: string): string; override;
end;
function TMyIniFile.ReadString(const Section, Ident, Default: string): string;
var
Buffer: array[0..largenumber] of Char;
begin
SetString(Result, Buffer, GetPrivateProfileString(MarshaledString(Section),
MarshaledString(Ident), MarshaledString(Default), Buffer, Length(Buffer),
MarshaledString(FFileName)));
end;