再次再次提问关于PByte 转换为 string (blackdove在此感谢大家)(50分)

  • 主题发起人 主题发起人 blackdove
  • 开始时间 开始时间
B

blackdove

Unregistered / Unconfirmed
GUEST, unregistred user!
大家恿跃帮助我,实在让我感动,呜呜.....<br>(不会是为了拿分吧:-),嘿嘿)<br>多谢amo,多谢Another_eYes,多谢HubDog和Jams.<br><br>我是这几天才来到大富翁论坛的,初来乍道,得到各位的帮助,确实很感谢大家,<br>我想提几个问题和建议:<br>1:如果我的得分为0了,我还能提问吗?<br>2:我也不好意思只提问,不回答,但如果要回答问题是不是非要上网在线才行?<br>&nbsp; &nbsp;如果一边上网,一边写文档,岂不是太花钱了(我在家里上网,费用实在不敢<br>&nbsp; &nbsp;太多),用pop3的话,只要不到3分钟,就可以马上下来。我每次提问时,都是先<br>&nbsp; &nbsp;写成一个.txt,然后再拨号上网,上网后,只要paste一下就行了。<br>3:所以我想能不能用邮件列表的形式来提问和回答,象soim那样。<br>4:大富翁网站的速度很慢,且有时连不上去。是因为人太多,还是其它的原因?!<br>以上仅供参考,欢迎大家和我一起讨论用什么形式交流最好。<br><br>我学Delphi是用的一本Marco Cantu著的《Delphi4从入门到精通》,可在这本书中<br>Cantu尽量避免使用指针,所以根本没有谈到类似pbyte的数据类型。<br>在Delphi4的help中居然找不到PByte,只能找到PByteArray和Byte!<br><br>还想问一个问题,再哪里能买到侯俊杰写的书,我找了大半个武汉市,也没能<br>买到“深入浅出MFC”!<br><br><br>以下是我关于PByte在实际编程中碰到的问题,干脆把源程序拿出来,<br>请大家帮我指点指点。<br><br>我用Delphi做了一个.dll,里面有两个我写的函数,用来操作注册表,我<br>用到了Delphi提供的VCL库,但这个.dll实在太庞大了(不到100行的程序,<br>生成的.dll文件竟有275K),我想这可能是因为包含了VCL库的原因,因此,<br>我想做一个实验:<br>&nbsp; 还是用Delphi做.dll,但不用Delphi与注册表相关的类写函数,全部<br>用API写,看一看做出的.dll到底有多大,但是Delphi与API在数据类型上匹<br>配不如C好。我碰到一个问题,在Delphi中,怎样处理PByte,怎样从PByte得<br>到我想要的string。<br><br>以下是源程序:<br><br>procedure TForm1.Button1Click(Sender: TObject);//写数据进入Reg<br>var<br>&nbsp; phkResult:HKEY;<br>&nbsp; a:PChar;<br>begin<br>&nbsp; a:='250';<br>&nbsp; RegCreateKey(HKEY_CURRENT_USER,'Software/我的软件公司/我的产品/位置',phkResult);<br>&nbsp; RegSetValueEx(phkResult,'Left',0,REG_SZ,a,Length(a));<br>end;//以上都没有问题<br><br>procedure TForm1.Button2Click(Sender: TObject);//想读数据from Reg<br>var<br>&nbsp; phkResult:HKEY;<br>// &nbsp;wwType:PDWORD;<br>&nbsp; wwData:PByte;<br>&nbsp; wwSize:PDWORD;<br>begin<br>// &nbsp;wwType:=nil;<br>&nbsp; wwData:=nil;<br>&nbsp; wwSize:=nil;<br>&nbsp; if RegOpenKeyEx(HKEY_CURRENT_USER,'Software/我的软件公司/我的产品/位置',0,KEY_ALL_ACCESS,phkResult)=ERROR_SUCCESS then<br>&nbsp; begin//注意RegOpenKeyEx函数所带的参数:KEY_ALL_ACCESS,即允许所有操作,你也可以试一下KEY_QUERY_VALUE。<br>&nbsp; &nbsp; RegQueryValueEx(phkResult,'Left',nil,nil,wwData,wwSize);<br>&nbsp; &nbsp; ShowMessage(StrPas(PChar(wwData)));//关键就在这,怎样从wwData中得到string????????????????????<br>&nbsp; end<br>&nbsp; else<br>&nbsp; &nbsp; ShowMessage('error to openkey');<br>end;<br><br><br>
 
var<br>&nbsp; phkResult:HKEY;<br>// &nbsp;wwType:PDWORD;<br>&nbsp; wwData:PByte;<br>&nbsp; wwSize:PDWORD;<br>begin<br>// &nbsp;wwType:=nil;<br>&nbsp; wwData:=nil;<br>&nbsp; wwSize:=nil;<br>&nbsp; getmem(wwData,128);<br>&nbsp; getmem(wwsize,sizeof(pdword));<br>&nbsp; wwsize^:=128;<br>&nbsp; if RegOpenKeyEx(HKEY_CURRENT_USER,'Software/我的软件公司/我的产品/位置',0,KEY_ALL_ACCESS,phkResult)=ERROR_SUCCESS then<br>&nbsp; begin//注意RegOpenKeyEx函数所带的参数:KEY_ALL_ACCESS,即允许所有操作,你也可以试一下KEY_QUERY_VALUE。<br>&nbsp; &nbsp; RegQueryValueEx(phkResult,'Left',nil,nil,wwData,wwSize);<br>&nbsp; &nbsp; ShowMessage(StrPas(PChar(wwData)));//关键就在这,怎样从wwData中得到string????????????????????<br>&nbsp; end<br>&nbsp; else<br>&nbsp; &nbsp; ShowMessage('error to openkey');<br>end;
 
接受答案了.
 
后退
顶部