为什么提示can't convert char to char??菜鸟求助,请指教.

zhaoxinghan 2004-04-06 04:49:25
这是我写的一个程序,目的是以二进制读一个程序,如果首字节为0xff, 就提示ok.
int iFileHandle,iByteRead,iFileLength;
char *pszBuffer;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenDialog1->Execute())
{
iFileHandle=FileOpen(OpenDialog1->FileName,fmOpenRead);
iFileLength = FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
iBytesRead =FileRead(iFileHandle,pszBuffer,iFileLength);
FileClose(iFileHandle);
String a="0xff";
if(*pszBuffer==a.c_str())
{
ShowMessage("ok");
}
}

}
可提示can not convert char to char??!
指针的char数据怎么和16进制数比较啊,我很迷茫。
...全文
359 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaoxinghan 2004-04-08
  • 打赏
  • 举报
回复
谢谢,终于成功了,好高兴。感觉这个分设的太少了,实在对不住各位大哥了。
Persistent8813 2004-04-08
  • 打赏
  • 举报
回复
F5设定断点,然后运行,用MOUSE指着看就行了
jiangchun_xn 2004-04-07
  • 打赏
  • 举报
回复
同意老姜,你的概念可能有些混淆。"0xff"是字符串,0xff才是一个字符。

if(*pszBuffer==0xff)
{
ShowMessage("ok");
}
ArWen 2004-04-07
  • 打赏
  • 举报
回复
你的用法不对,此处为指针比较,其实是比较其地址,而非两指针中的值,故该比较将永远为false.
可用字符串比较函数:
if(SameText(pszBuffer, a))
{
ShowMessage("OK");
}
Persistent8813 2004-04-07
  • 打赏
  • 举报
回复
比较不能用==啊,compare
fyjin99 2004-04-07
  • 打赏
  • 举报
回复
iBytesRead =FileRead(iFileHandle,pszBuffer,iFileLength);
pszBuffer = new char[iFileLength+1];
老大有没有搞错,你又给pszBuffer重新分配了一段内存当然读出来的不是所看到的了.你现在新分配的内存里面谁知道装的是什么.肯定要出错的,把下面一句去掉或者移到上面.
zhaoxinghan 2004-04-07
  • 打赏
  • 举报
回复
感觉读出来的数,也就是*pszBuffer肯定不是二进制文件在Ultra Edit中看到的第一个字节的内容,为什么呢??
zhaoxinghan 2004-04-07
  • 打赏
  • 举报
回复
偶不懂汇编啊,55555。f7f8看不明白,能不能直接看变量的值啊,哪里可以看?
zhaoxinghan 2004-04-07
  • 打赏
  • 举报
回复
好,我看看先
Persistent8813 2004-04-07
  • 打赏
  • 举报
回复
F8F7跟踪一下看看啊
zhaoxinghan 2004-04-07
  • 打赏
  • 举报
回复
现在我改成这样了,各位老大请看
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenDialog1->Execute())
{
iFileHandle=FileOpen(OpenDialog1->FileName,fmOpenRead);
iFileLength = FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
iBytesRead =FileRead(iFileHandle,pszBuffer,iFileLength);
pszBuffer = new char[iFileLength+1];
FileClose(iFileHandle);
char a=0xff;
if (a==*pszBuffer)
{
ShowMessage("ok");
}


}

}

我打开一个文件edit3,这个文件我用ultra edit二进制环境下看第一个字节就是ff啊,可为什么不提示ok呢?各位老大再辛苦辛苦,帮帮小弟吧.
zhaoxinghan 2004-04-07
  • 打赏
  • 举报
回复
郁闷,文件头一个字节明明是ff,可为什么就不提示ok呢???
zhaoxinghan 2004-04-07
  • 打赏
  • 举报
回复
谢谢各位老大,我先试试看,等会莱加分
fjye 2004-04-06
  • 打赏
  • 举报
回复
String a="0xff";
if(*pszBuffer==a.c_str())
{
ShowMessage("ok");
}
改成
char a=0xff;
if(*pszBuffer==a)
{
ShowMessage("ok");
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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