Pchar转integer和string的问题

yqfsan 2011-07-25 05:52:52
我这里是个列举图标组资源名称的回调函数,

Function EnumResName(hModule: HMODULE; lpType, lpName: PChar;lParam: Longint):BOOL; stdcall;
//lpType是要提取的资源类型,这里为RT_GROUP_ICON
//lpName为图标组资源名
var
hIcon1: HICON;
hResource: HRSRC;
hMem: HRSRC;
lpResource: PByte;
ss:string;
Begin
//返回在hExe模块中lpName指定的图标组资源的句柄;
hResource:=FindResource(hExe,lpName,RT_GROUP_ICON);
hMem:=LoadResource(hExe,hResource);
lpResource:=LockResource(hMem);

//如果名称是字符串用下面这句,如果是数字用这句出错
Form1.Memo1.Lines.Add(string(lpName));

//如果名称是数字用下面这句,如果是字符串用这句返回的是指针地址
Form1.Memo1.Lines.Add(Format('%s',[IntToStr(Integer(lpName)),ss]));

result:=true;
end;

//这里是调用
procedure TForm1.Button1Click(Sender: TObject);
begin
//hExe为全局变量,hExe: HINST;
hExe:=LoadLibrary(PChar('E:\TDDOWNLOAD\4.exe'));
EnumResourceNames(hExe,RT_GROUP_ICON,@EnumResName,1);
end;

这里我怎么判断这个名称(lpName)是字符串还是数字的,这里不能用try......except来判断,因为一有异常回调函数就不执行了,直接退出,这里搞得我很头疼,各位达人有什么好办法?
...全文
283 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yqfsan 2011-07-26
  • 打赏
  • 举报
回复
问题解决了,原来要判断Pchar指针的高位,如果高位是0,则表示指向的是整型,不为0则表示指向的是字符串,用下面语句判断:
if (longint(lpName) and $FFFF0000)=0 then //表示指向的是整型
yqfsan 2011-07-26
  • 打赏
  • 举报
回复
to all:
再说明一下,首先我不知道Pchar所指的类型,就这个函数来说,我跟踪了一下,如果Pchar所指的是字符串,可以直接读取,但是如果Pchar所指的是整型,就不能直接读取了,要转换一下,关键就在这里,怎么判断“Pchar所指的类型”,那样我就可以采取不同的方法读取,我上面提到的两种方法都只对一种类型有效,而且在这个函数中还不能有异常出现,就不能用try...except判断。
strpas/strpcopy只有在Pchar所指的是字符串才没问题,如果Pchar所指的是整型就不行,各位可以把代码copy出去试试。
xiaocongzhi 2011-07-26
  • 打赏
  • 举报
回复
strpas/strpcopy
用这个东东
lgxing 2011-07-26
  • 打赏
  • 举报
回复
pchar 可以直接赋值给string自动转换
有函数atoi
strtointdef
都可以用啊
cntigercat 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sz_haitao 的回复:]

strpas/strpcopy
[/Quote]
+1
yqfsan 2011-07-26
  • 打赏
  • 举报
回复
to sz_haitao:两个函数都已经试过,得出的是空串,不清楚为什么?

to gyk120:字符串比较函数?我这里是要pchar转integer或string......
gyk120 2011-07-25
  • 打赏
  • 举报
回复
AnsiCompareStr
haitao 2011-07-25
  • 打赏
  • 举报
回复
strpas/strpcopy

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧