K
kaiery
Unregistered / Unconfirmed
GUEST, unregistred user!
void CHD_DemoDlg::OnButtonReadfile()
{
// TODO: Add your control notification handler code here
int status;
HANDLE hHandle;
DWORD FileID;
DWORD dwOffset;
BYTE rData[1024]; // 存放读到的数据
DWORD rDataLen;
FILE *fp;
// 打开设备
status = HSConnectDev("USB1", &hHandle);
if (status != 0)
{
MessageBox("打开设备失败"
return;
}
// 读文件
FileID = 0x0007; // 要读取的文件的标识
dwOffset = 0; // 偏移量(0表示从文件头开始读起)
memset(rData, 0, sizeof(rData));
rDataLen = 80;// 要读取80个字节的数据(输入时表示要读取的数据量, 输出时返回实际读取到的数据量)
status = HSReadFile(hHandle, FileID, dwOffset, rData, &rDataLen);
if (status != 0)
{
HSDisconnectDev(hHandle);
MessageBox("读文件失败"
return;
}
// 关闭设备
HSDisconnectDev(hHandle);
// 文件保存在c:/Outtxt.txt下
if ((fp = fopen("c://Outtxt.txt", "wb") != NULL)
{
fwrite(rData, sizeof(BYTE), rDataLen, fp);
fclose(fp);
}
MessageBox("读取文件成功, 文件保存在了c://Outtxt.txt中", "提示", MB_OK|MB_ICONINFORMATION);
==============================================================================
我转的代码是:
procedure TForm1.Button5Click(Sender: TObject);
var
// FileID:integer;
dwOffsetWORD;
rDatabyte;
rDataLenWORD;
dwcount3:dword;
begin
status:=HSConnectDev('USB1',@hHandle);
if status<>0 then
begin
showmessage('打开设备失败');
exit;
end;
//读文件
FileID :=strtoint(edit2.text); // 要读的文件的标识
showmessage(inttostr(fileid));
dwOffset:=0; // 偏移量(0表示从文件头开始写起)
rDataLen:=80;
GetMem(rData,1024);
status:=HSReadFile(hHandle,FileID,dwOffset,rData,@rDataLen);
showmessage('状态:'+inttostr(status));
if status=0 then
begin
showmessage('读出成功') ;
hTargetFile := CreateFile(PCHAR('c:/myout.txt'),
GENERIC_WRITE,
FILE_SHARE_READ,
nil,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
0);
if not boolean(WriteFile(hTargetFile,rData^,rDataLen,dwcount3,nil)) then
begin
showmessage('把USB-KEY中的文件读出写入硬盘中的文件错误!');
exit;
end;
CloseHandle(hTargetFile);//关闭文件;
HSDisconnectDev(hHandle);
end
else
begin
showmessage('读操作失败');
HSDisconnectDev(hHandle);
end;
end;
这段读出来的内容 根本不是 我写进去的内容 ,是哪弄错了啊?
哪位大侠 帮我一下
{
// TODO: Add your control notification handler code here
int status;
HANDLE hHandle;
DWORD FileID;
DWORD dwOffset;
BYTE rData[1024]; // 存放读到的数据
DWORD rDataLen;
FILE *fp;
// 打开设备
status = HSConnectDev("USB1", &hHandle);
if (status != 0)
{
MessageBox("打开设备失败"
return;
}
// 读文件
FileID = 0x0007; // 要读取的文件的标识
dwOffset = 0; // 偏移量(0表示从文件头开始读起)
memset(rData, 0, sizeof(rData));
rDataLen = 80;// 要读取80个字节的数据(输入时表示要读取的数据量, 输出时返回实际读取到的数据量)
status = HSReadFile(hHandle, FileID, dwOffset, rData, &rDataLen);
if (status != 0)
{
HSDisconnectDev(hHandle);
MessageBox("读文件失败"
return;
}
// 关闭设备
HSDisconnectDev(hHandle);
// 文件保存在c:/Outtxt.txt下
if ((fp = fopen("c://Outtxt.txt", "wb") != NULL)
{
fwrite(rData, sizeof(BYTE), rDataLen, fp);
fclose(fp);
}
MessageBox("读取文件成功, 文件保存在了c://Outtxt.txt中", "提示", MB_OK|MB_ICONINFORMATION);
==============================================================================
我转的代码是:
procedure TForm1.Button5Click(Sender: TObject);
var
// FileID:integer;
dwOffsetWORD;
rDatabyte;
rDataLenWORD;
dwcount3:dword;
begin
status:=HSConnectDev('USB1',@hHandle);
if status<>0 then
begin
showmessage('打开设备失败');
exit;
end;
//读文件
FileID :=strtoint(edit2.text); // 要读的文件的标识
showmessage(inttostr(fileid));
dwOffset:=0; // 偏移量(0表示从文件头开始写起)
rDataLen:=80;
GetMem(rData,1024);
status:=HSReadFile(hHandle,FileID,dwOffset,rData,@rDataLen);
showmessage('状态:'+inttostr(status));
if status=0 then
begin
showmessage('读出成功') ;
hTargetFile := CreateFile(PCHAR('c:/myout.txt'),
GENERIC_WRITE,
FILE_SHARE_READ,
nil,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
0);
if not boolean(WriteFile(hTargetFile,rData^,rDataLen,dwcount3,nil)) then
begin
showmessage('把USB-KEY中的文件读出写入硬盘中的文件错误!');
exit;
end;
CloseHandle(hTargetFile);//关闭文件;
HSDisconnectDev(hHandle);
end
else
begin
showmessage('读操作失败');
HSDisconnectDev(hHandle);
end;
end;
这段读出来的内容 根本不是 我写进去的内容 ,是哪弄错了啊?
哪位大侠 帮我一下