Function  ReadSerials(FileName:String):String;  
var  
     S_File:File  of  TSerial;  
     Str:TSerial;  
begin  
     Result:='';  
     if  not  FileExists(FileName)  then  
           Exit;  
     {$I-}  
     AssignFile(S_File,FileName);  
     Reset(S_File);  
     BlockRead(S_File,Str,Sizeof(Str));  
     CloseFile(S_File);  
     {$I+}  
     Result:=Str.Serial  ;  
end;  
 
我一调用该函数,就会出以下错误:  
   access  violation  at  0x00425350:write  of  address  0x00456650  

解决方案 »

  1.   

    你的S_File, Str有没有实例化啊。
    它们可都是空指针啊。
      

  2.   

    错了,
    是Str有没有实例化,S_File你已经Assign了。
      

  3.   

    Str的结构如下:
       TSerial=Record
           Serial:String[25];
       end;
    这也要实例化?
      

  4.   

    Function  ReadSerials(FileName:String):String;
      var
           S_File:File  of  TSerial;
           Str:TSerial;
      begin
           Result:='';
           if  not  FileExists(FileName)  then
                 Exit;
           {$I-}
           AssignFile(S_File,FileName);
           Reset(S_File);
           Read(S_File,Str); //***********
           CloseFile(S_File);
           {$I+}
           Result:=Str.Serial;
      end;
      

  5.   

    谢了!!
    可是这不是我要的结果。
    BlockRead的速度快,我要用它!!!
      

  6.   

    问题出现 Result:=Str.Serial;当你读出内容是TXT的时候没有问题。如是HEX 就有问题了