我在CBuilder中,使用FileOpen,FileClose,FileSeek,FileRead,FileWrite等函数的时候一直都没有出现问题,可是在Delphi中却好像这些函数都没有作用似的?虽然例子里面的程序和CBuilder中相差不多,但是即使拷贝过去也不可用,请问一下,除了用File类型,使用Reset来打开和操作函数外,FileOpen之类的怎样才能可用?多谢!!

解决方案 »

  1.   

    var
    h:thandle;
    size:integer;
    begin
    h:=fileopen('c:\123.txt',fmopenread);
    if h <> invalid_handle_value then
    begin
    size:=getfilesize(h,nil);
    showmessage('檔案大小:'+inttostr(size));
    closehandle(h);
      

  2.   

    我的意思是使用FileRead将文件的部分字节读入定义的缓冲区中,然后判断这部分的内容,但是实际上缓冲区中没有任何信息?就是这个问题。
      

  3.   

    例如我在CBuilder中用下面这一段代码:
    int FileHandle,FileSize;
    char *Buffer;
    AnsiString Text;
    FileHandle=FileOpen("c:\a.txt",fmOpenRead);
    Buffer=new char[5];
    FileRead(FileHandle,Buffer,4);
    Text.SetLength(4);
    Text[1]=Buffer[0];
    Text[2]=Buffer[1];
    Text[3]=Buffer[2];
    Text[4]=Buffer[3];
    ShowMessage(Text);
    这样可以得到a.txt中前四个字节的内容。
    但Delphi中,用类似的语句却无法得到这四个字节的内容?
    链接不会出错,但是运行的时候,提示出错。
      

  4.   

    Delphi中代码如下:
    var
      FileHandle:integer;
      Buffer:PChar;
      Text:String;
    Begin
      FileHandle:=FileOpen('c:\a.txt',fmOpenRead);
      Buffer := PChar(AllocMem(5));
      FileRead(FileHandle,Buffer,4);
      SetLength(Text,4);
      Text[1]:=Buffer[0];//----(1)---
      Text[2]:=Buffer[1];
      Text[3]:=Buffer[2];
      Text[4]:=Buffer[3];
      ShowMessage(Text);
    我用F7执行到(1)处就出现错误
      

  5.   

    :)我刚才就已经猜到你错在哪里了,只是不确定!
    改为:FileRead(FileHandle,Buffer^,4);
      

  6.   

    另外
    Buffer:= AllocMem(5);不用强制转换