在执行的过程中总是提示内存不能read。我头都晕了!异常无法扑捉到。procedure TFSee.N2Click(Sender: TObject);
Var
   FileName:String;
   Fp:File Array Byte;
   SizeFile:Integer;
   Buffer:Array Of Byte;
   Place,Cd,Index,MaxRow:Integer;
begin
   If OD.Execute Then
      Begin
      FileName:=OD.FileName;
      FSee.Caption:=Od.FileName;
      End
   Else
      Begin
      ShowMessage('打开文件错误!');
      Exit;
      End;
   If Not FileExists(FileName) Then
      Begin
      ShowMessage('不存在的文件!');
      Exit;
      End;
   AssignFile(Fp,FileName);
   ReSet(fp);
   SizeFile:=FileSize(Fp);
   StatusBar1.Panels.Items[1].Text:=IntToStr(SizeFile);
   Memo1.Lines.Clear;
   SetLength(Buffer,SizeFile);
   BlockRead(Fp,Buffer[0],SizeFile);
   If Memo1.Width Mod 35<>0 Then
      Begin
      Memo1.Width:=Memo1.Width Div 35+35;
      End;
     For Place:=0 To SizeFile-1 Do
        Begin
        Application.ProcessMessages;
        StatusBar1.Panels.Items[3].Text:=IntToStr(Place+1);
        Try
        TempStr:=IntToStr(Buffer[place])+'    ';
        Except
           ShowMessage(IntToStr(Place)+':'+IntToStr(SizeFile))
        End;
        Try
        Memo1.Text:=Memo1.Text+TempStr;
        Except
            ShowMessage('转换为字符串出错!');
         End;
        End;//Fof Index:=0 To Cd-1 Do
   Try
   SetLength(Buffer,0);
   CloseFile(fp);
   Except
   ShowMessage('关闭文件出错!');
   End;
end;

解决方案 »

  1.   

    注:程序可以执行到for to do语句中。但是在后就不知道是哪里出错了!
      

  2.   

    错误信息如下:0x00401e5b 指令引用的0x00da7ffc内存。该内存不能为"Written"要终止程序,请单击确定,
    要调试程序,请单击取消。但是程序仍然可以运行!(在delphi下是跳出一个调试窗体标题为CPU内容如下:)指令地址跳到了004023cc 8B10 Mov edx,[eax]
      

  3.   

    TempStr的定义如下:TempStr:String[5];
      

  4.   

    重启delphi,不行的话,重启一下系统看看
      

  5.   

    try
    except
    没有必要写那么多吧。你将for语句中执行的内容一开始就try,最后才except捕获异常。
    单步执行看出错再哪里啊
      

  6.   

    try
    except
    没有必要写那么多吧。你将for语句中执行的内容一开始就try,最后才except捕获异常。
    单步执行看出错再哪里啊
      

  7.   

    To hujinger(克沙):你好!程序是在进入for to do循环后,但是没有执行完循环出错的!你能否在delphi下测试一下代码呢?