请教一下读INI文件的问题 (50分)

  • 主题发起人 主题发起人 huajianguo
  • 开始时间 开始时间
H

huajianguo

Unregistered / Unconfirmed
GUEST, unregistred user!
var
strResult:pchar;
begin
GetPrivateProfileString(
'windows', // []中标题的名字
'NullPort', // =号前的名字
'NIL', // 如果没有找到字符串时,返回的默认值
strResult, //存放取得字符
100, //取得字符的允许最大长度
'c:/forwin95/win.ini' // 调用的文件名
);
edit1.text:=strResult; //显示取得字符串

出错。错误如下:
access violation at address 77e7943e in module 'kernel32.dll' .write of address 00427864.
请问是怎么一回事?以上用法是否正确?多谢!
 
第3个参数应该改为 ''
 
strResult 应初始化
如 :

strResult:string;
begin
setlength(strResult,100);
GetPrivateProfileString(
'windows', // []中标题的名字
'NullPort', // =号前的名字
'NIL', // 如果没有找到字符串时,返回的默认值
strResult, //存放取得字符
100, //取得字符的允许最大长度
'c:/forwin95/win.ini' // 调用的文件名
);
edit1.text:=strResult; //显示取得字符串
 
试过没问题
 
这个函数是你自己写的吗?
 
D6中有对INI文件的操作函数,用得着这么费劲吗?
1、在单元中的USES中加入INIFILES
2、将光标停在刚输入的字符串上
3、按F1键按帮助即可,INI文件的读、写操作全有。
 
对INI文件操作很简单的,论坛里有很多这种帖子
 
我认为应该是以下人代码
strResult:string;
begin
setlength(strResult,100);
GetPrivateProfileString(
'windows', // []中标题的名字
'NullPort', // =号前的名字
'NIL', // 如果没有找到字符串时,返回的默认值
strResult, //存放取得字符
100, //取得字符的允许最大长度
'c:/forwin95/win.ini' // 调用的文件名
);
edit1.text:=strResult; //显示取得字符串
 
还是不对的,存放结果的是指针:
var
StrResult: String;
X:= Integer;
begin
SetLength(StrResult, 256);
X:= GetPrivateProfileString('windows',
'NullPort',
'nil',
@StrResult[1],
256,
'c:/forwin95/win.ini');
SetLength(StrResult, X);
edit1.Text:= StrResult;
end;
 
var
strResult:pchar;
begin
GetMem(strResult,100);
GetPrivateProfileString(.....);
edit1.text:=strResult;
FreeMem(strResult);
end;
 
在Unit的Uses中加上IniFiles。
读取的语句如下:
Var
IniFile:TiniFile;
Begin
IniFile:=TiniFile.Create('c:/forwin95/win.ini' );
Edit1.text:=IniFile.ReadString('Windows','NullPort','Nil');
End;
很简单的是吧,呵呵~~~
 
多人接受答案了。
 
后退
顶部