文件读取问题,FileRead函数。

lsf0712 2005-03-08 07:52:14
procedure TMainForm.Button1Click(Sender: TObject);
var
iFileHandle: Integer;
iHeadLength: DWORD;
Buffer: array[0..4096-1]of byte;
readNumber: DWORD;
begin//
nPort:= pn_PlayWindow.Tag;
iHeadLength:= Hik_PlayM4_GetFileHeadLength();//文件头长度
iFileHandle:= CreateFile(Pchar(sFileName),GENERIC_READ,FILE_SHARE_READ,nil,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
ReadFile(iFileHandle,Buffer,iHeadLength,readNumber,nil);//成功
Hik_PlayM4_SetFileEndMsg(nPort, MainForm.Handle, WM_REPLAY_PLAYEND);
Hik_PlayM4_SetStreamOpenMode(nPort, STREAME_FILE);//成功
//这个函数执行失败,是不是前面读取数据出问题了?
Hik_PlayM4_OpenStream(nPort, Buffer[0],iHeadLength,SizeOf(Buffer))//将流数据加载到这个函数,这个函数是板卡上的一个封装函数,用于读取流数据,进行下一步操作。

Hik_PlayM4_Play(nPort, pn_PlayWindow.Handle);

while(readNumber > 0) do
begin
if(not Hik_PlayM4_InputData(nPort,Buffer[0],SizeOf(Buffer))) then
begin
showMessage('InputData False');
break;
end;
ReadFile(iFileHandle,Buffer,SizeOf(Buffer),readNumber,nil);
end;
Hik_PlayM4_STOP(nPort);
Hik_PlayM4_CloseFile(nPort);
FileClose(iFileHandle);
end;

//函数声明,
function Hik_PlayM4_OpenStream(nPort: integer; var pFileHeadBuf: byte; nSize: DWORD; nBufPoolSize: DWORD): Boolean; stdcall; external MPG4_REPLAY_SDK;
说明:打开流接口(类似打开文件);
输入参数:pFileHeadBuf用户从卡上得到的文件头数据。
nSize 文件头长度。
nBufPoolSize 设置播放器中存放数据流的缓冲区大小。范围是SOURCE_BUF_MIN~ SOURCE_BUF_MAX。


function Hik_PlayM4_InputData(nPort: integer; var pBuf: byte; nSize: DWORD): Boolean; stdcall; external MPG4_REPLAY_SDK;
说明:输入从卡上得到的流数据;打开流之后才能输入数据。
输入参数:pBuf 缓冲区地址;
nSize缓冲区大小
返回值:TURE,表示已经输入数据。FALSE 表示失败,数据没有输入;

...全文
277 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
langziwujia007 2005-03-10
  • 打赏
  • 举报
回复
偶是个菜鸟,不懂。边学习边帮楼主您顶了
lsf0712 2005-03-09
  • 打赏
  • 举报
回复
没人回答吗???


大家可以帮帮忙吗?
lsf0712 2005-03-08
  • 打赏
  • 举报
回复
大家帮忙看看函数定义,和读取文件数据部分有没有什么地方出错了?
lsf0712 2005-03-08
  • 打赏
  • 举报
回复
可能说的不是很明白
Hik_PlayM4_SetFileEndMsg(nPort, MainForm.Handle, WM_REPLAY_PLAYEND);
Hik_PlayM4_SetStreamOpenMode(nPort, STREAME_FILE);//成功
这两个函数无关大局的,不用考虑

出错的是function: Hik_PlayM4_OpenStream;这里返回False,成功加载的话应该能返回True

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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