procedure TForm1.Button1Click(Sender: TObject);
var
    FHandle:integer;
    s:array[0..4] of byte;
begin
    if OpenDialog1.Execute then
    begin
        FHandle:=FileOpen(OpenDialog1.FileName, fmOpenRead);
        FileSeek(FHandle,0,0);
        FileRead(FHandle,s,Length(s));
        FileClose(FHandle);
    end;
    ...//处理过程
end;

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
        FHandle:integer;
        s:array[0..4] of byte;
    begin
        if OpenDialog1.Execute then
        begin
            FHandle:=FileOpen(OpenDialog1.FileName, fmOpenRead);
            FileSeek(FHandle,0,0);
            FileRead(FHandle,s,Length(s));
            FileClose(FHandle);
        end;
        ...//处理过程
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
        FHandle:integer;
        s:array[0..4] of byte;
    begin
        if OpenDialog1.Execute then
        begin
            FHandle:=FileOpen(OpenDialog1.FileName, fmOpenRead);
            FileSeek(FHandle,0,0);
            FileRead(FHandle,s,Length(s));
            FileClose(FHandle);
        end;
        ...//处理过程
    end;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
        FHandle:integer;
        s:array[0..4] of byte;
    begin
        if OpenDialog1.Execute then
        begin
            FHandle:=FileOpen(OpenDialog1.FileName, fmOpenRead);
            FileSeek(FHandle,0,0);
            FileRead(FHandle,s,Length(s));
            FileClose(FHandle);
        end;
        ...//处理过程
    end;
      

  4.   

    应该先移动文件指针到头部。:)FileSeek(nFileHandler,0,0);
      

  5.   

    先移动文件指针到文件头部。:)
    FileSeek(nFileHandler,0,0);
      

  6.   

    换成FileRead(nFileHandler,sB, Length(sB));试试?
      

  7.   

    我看到有很多个回复,怎么进来一个也看不到。正好是换服务器那天晚上发的,是不是出什么问题了?再了一次:
    procedure TForm1.Button1Click(Sender: TObject);
    var
        FHandle:integer;
        s:array[0..4] of byte;
    begin
        if OpenDialog1.Execute then
        begin
            FHandle:=FileOpen(OpenDialog1.FileName, fmOpenRead);
            FileSeek(FHandle,0,0);
            FileRead(FHandle,s,Length(s));
            FileClose(FHandle);
        end;
        ...//处理过程
    end;
      

  8.   

    to All:
        我是通过FileRead的返回值来判断的,难道这不可行吗?像这样:nRet:=FileRead(nFileHandler,sB,sizeof(sB));
    if nRet<>sizeof(sB) then ...我吧sizeof都换成length,这样的判断也通不过。各位能不能帮我试一下?文件为二进制文件。
    谢谢!
      

  9.   


    另外,其实,每次FileRead的返回值为0,???文件刚打开,还需要FileSeek(FHandle,0,0);吗?刚刚打开的文件不是缺省就指到了文件的开始吗?
      

  10.   

    我试了一下,很正常啊。
    从原则上来说是一打开就指向文件开始,但是俗话说得好:不怕一万,就怕万一。而且我看了一下HELP,并没有显式的说会指向开头。附:
    procedure TForm1.Button1Click(Sender: TObject);
    var
        FHandle,i:integer;
        s:array[0..3] of byte;
    begin
        if OpenDialog1.Execute then
        begin
            FHandle:=FileOpen(OpenDialog1.FileName, fmOpenRead);
            FileSeek(FHandle,0,0);
            i:=FileRead(FHandle,s,Length(s));
            FileClose(FHandle);
        end;
        if i<>Length(s) then
            ShowMessage('读取出错!共读入'+IntToStr(i)+'字节')
        else
            ShowMessage('读取正常!共读入'+IntToStr(i)+'字节');
    end;
      

  11.   

    使用文件流吧. memeystream............