很简单,我做了一个小窗口,2个lable组件,2个edit组件,edit组件显示从.ini文件中读取得内容,关闭向.ini写
代码如下:
unit Login;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
EdtName: TEdit;
EdtAge: TEdit;
Label2: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
Age:Integer;
Name:pchar;
begin
Age := GetPrivateProfileInt(
PersonalInfo,
Age,
0,
D:\exam\SysUser.ini
);
EdtAge.Text := IntToStr(Age);
Name := ;
GetPrivateProfileString(
PersonalInfo,
Name,
,
Name,
100,
D:\exam\SysUser.ini
);
EdtName.Text := Name;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
AgeStr:pChar;
Name :pChar;
begin
AgeStr := pChar(Age= + EdtAge.Text);
WritePrivateProfileSection(
PersonalInfo,
AgeStr,
D:\exam\SysUser.ini
);
Name := pChar(EdtName.Text);
WritePrivateProfileString(
PersonalInfo,
Name,
Name,
D:\exam\SysUser.ini
);
end;
end.
链接、编译
报写地址“004408B8”错误,说是kernel32.dll不对,我用delphi5和delphi7编译,都报同样错误,请问是为什么?
var
AgeStr:pChar;
Name :pChar;
没有初始化,就这是说没有给它们分配内存。
楼主建议你用TIniFile,应该更容易一些。
主要函数有ReadString,ReadInteger,ReadBool和WriteString,WriteInteger,WriteString.
一开始先声明一个变量:var INI:TIniFile;
然后INI:=TIniFile.Create(文件路径);就可以直接用了
PChar类型的串初始化:
1.分配内存空间
AgeStr:=StrAlloc(Length(tmpStr)*SizeOf(char))
(tmpStr为另外一个string类型的字符串你可以写个串长也可以)
2.释放内存空间
StrDispose(AgeStr)
一般上面两个函数是成对出现的,即用时分配空间,用完释放.