我用ReadString读ini文件,读取出来的String没我存储的String那么长(我的String最多可能有一万个字符,有的String读出来就是1052个字符,有的读出来是1133个字符,其最大读取数量是多少?为什么会出现我这种问题?
解决方案 »
- Dll封装问题,请高手指教
- 1000分求邻小区拓扑关系算法
- 我想让一个MEMO的Enable属性为false,但不想让其中的内容为默认灰色,应该怎么做??
- 那位高手真正解决 caant make a visible window modal
- 救命啊,请大虾出马~~~
- [Image画图]小尺寸画过后,再大尺寸画只能显示刚才小尺寸范围内的图形,先大尺寸画过后大小尺寸都能画。何解?
- 请问怎么在delphi里引用access的查询??
- 有谁用delphi开发移动通讯方面的程序吗?
- 急救:DBGrid
- 关于Timage和pagecontrol,求助!给分!
- 如何结束当前程序,重新运行!
- 菜鸟求教!人际问题!高分
var
Buffer: array[0..2047] of Char;
begin
SetString(Result, Buffer, GetPrivateProfileString(PChar(Section),
PChar(Ident), PChar(Default), Buffer, SizeOf(Buffer), PChar(FFileName)));
end;//TIniFile开辟的缓冲最大是2047
//另外你的字符里不能有换行符,否则会影响读取
//可以根据如上VCL代码,开辟更大的空间即可读取function IniFileReadString(
mSection, mIdent, mDefault: string;
mFileName: string;
mLength: Integer): string;
var
vBuffer: PChar;
begin
GetMem(vBuffer, mLength);
try
SetString(Result, vBuffer, GetPrivateProfileString(PChar(mSection),
PChar(mIdent), PChar(mDefault), vBuffer, mLength, PChar(mFileName)));
finally
FreeMem(vBuffer, mLength);
end;
end; { IniFileReadString }procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
begin
with TIniFile.Create('c:\temp\temp.ini') do try
WriteString('Text', 'S', StringOfChar('a', 12345));
S := IniFileReadString('Text', 'S', '', 'c:\temp\temp.ini', 20000);
ShowMessage(IntToStr(Length(S)));
finally
Free;
end;
end;
我一般读文件没有那么长(ini为配置文件啊),所以没出过这种问题如果太长了的话,楼主就直接用流\读文件了吧