filename必须用Pchar,你要初始化!因为FileName要返回文件名的!
var
filename:array[0..MAX_PATH] of char;
strpcopy(filename,'d:\winnt\....');
.....
这样就没有问题了。
因为在那个Dialog中可以用[浏览]改变文件名的,你必须接收这个文件名啊。
var
filename:array[0..MAX_PATH] of char;
strpcopy(filename,'d:\winnt\....');
.....
这样就没有问题了。
因为在那个Dialog中可以用[浏览]改变文件名的,你必须接收这个文件名啊。
function PickIconDlgA(OwnerWnd: HWND; lpstrFile: PAnsiChar; var nMaxFile: LongInt;var lpdwIconIndex: LongInt): LongBool; stdcall; external 'SHELL32.DLL' index 62;procedure TForm1.Button1Click(Sender: TObject);
var
buf:array[0..MAX_PATH] of char;
n,index:integer;
begin
buf:='c:\windows\explorer.exe';
PickIconDlgA(handle,buf,n,index);
showmessage(string(buf)+','+inttostr(index));
end;
自己没有搞懂,这样转换,是不能接受返回值的,只是把string里面的字符串变成了一个Pchar常量而已,string并没有变成pchar!
因为不是UNICODE,NT则行不通.