為什麼edit1.text="" and edit2.text=""??(10分)

  • 主题发起人 主题发起人 jesse.zhou
  • 开始时间 开始时间
J

jesse.zhou

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var name1,name2:pchar;
begin
name1:='';
getprivateprofilestring('程序參數','數據庫名',name1,'',100,'d:/myini.ini');
edit1.Text:=name1;
name2:='';
getprivateprofilestring('程序參數','程序名',name2,'',100,'d:/myini.ini');
edit2.Text:=name2;
end;
其中myini.ini:
[程序參數]
數據庫名 = cwku
程序名 = asdfasdfasdfasdfasdfasdfasdf
備份文件名 = apsdb315.bak
 
name1,name2应该定义为array[0..100] of pchar
 
pchar和string类型转换出错!
edit.text是string类型,不能直接将pchar的值用:=赋值。
 
没有分配空间。
 
有两个问题, 一是没分配空间,二是参数位置错了。
procedure TForm1.Button1Click(Sender: TObject);
var
name1,name2:array[0..100]of char;
begin
getprivateprofilestring('程序參數','數據庫名','',name1,100,'d:/temp/myini.ini');
edit1.Text:=name1;
getprivateprofilestring('程序參數','程序名','',name2,100,'d:/temp/myini.ini');
edit2.Text:=name2;
end;

注意 name? 和 '' 要换一下!!!!!!!
 
procedure TForm1.Button1Click(Sender: TObject);
var name1,name2:pchar;
begin
name1:='';//是PCHAR,不是String,所以不能这样初始化。
//最好的方法是用new(name1);
getprivateprofilestring('程序參數','數據庫名',name1,'',100,'d:/myini.ini');
edit1.Text:=name1;
name2:='';//这儿也是一样的,分配存储空间
getprivateprofilestring('程序參數','程序名',name2,'',100,'d:/myini.ini');
edit2.Text:=name2;
end;
 
to BeginDelphi:
没你这样的!
你既然选择说用分配空间的方式,那把释放的代码也写上呀。
 
天,我是用New的,又不是AllocMem。
Delphi在一个new出来的空间不用时会自动释放,所以我没有用AllocMem,或是GetMem.
 
謝謝各位的幫忙
 
后退
顶部