Показать сообщение отдельно
  #1  
Старый 05.12.2012, 20:28
juraman1 juraman1 вне форума
Прохожий
 
Регистрация: 05.12.2012
Сообщения: 6
Репутация: 10
Восклицание Помогите Срочно! Ошибка доступа к памяти

Ребята помогите в таком вопросе, это фрагмент кода моего приложения, он отвечает за поиск в вбраном каталоге (TreeView1) файлов и подсчета контрольных сумм. Внимание вопрос, после работы с этой кнопкой (procedure TRGZ.Button1Click(Sender: TObject) последующее событие выдает ошибку Acces violation, ошибка доступа к участку памяти и указывается адресс. Полагаю я не правильно обеспечил работу с файлами, буду благодарен любой подсказке.

Код:
procedure TRGZ.Button1Click(Sender: TObject);
var
 sR: TSearchRec;
 sPath: string;
 s:string;
 f:longint;
 h,cs:DWORD;
begin
Memo1.lines.add('___________________________________________');
//Определение пути каталога
sPath:= '';
  if TreeView1.Selected=nil then
    Memo1.Lines.Add('Ошика! Вы не выбрали каталог!')
  else begin                                             //begin
  while TreeView1.Selected <> nil do
  begin
    sPath:= TreeView1.Selected.Text +'\'+sPath;
    TreeView1.Selected:= TreeView1.Selected.Parent;
  end;
  Delete(sPath, length(sPath), 1);


//Подсчет контрольных сумм
  if FindFirst(sPath+'\*.*', faAnyFile - faDirectory - faVolumeID, sR) = 0 then
  begin
    Memo1.Lines.Add('Найдены файлы со следующими суммами:'); i:=0;
    repeat
      f:=fileopen(sR.Name,fmOpenRead);   sA[i]:=sPath+'\'+sR.Name;
      SetLength(s,sR.Size);
      FileRead(f,s[1],length(s));
      fileclose(f);
      CheckSumMappedFile(@s[1],length(s),@h,@cs); iB[i]:=cs;  //Главная функция- изучи ее
      Memo1.Lines.Add(sA[i]+': '+IntToStr(cs)+';');
      inc(i);
    until FindNext(sR) <> 0;
  FindClose(sR);
  end
  else Memo1.Lines.Add('Файлов не найдено!');
  end;    //end
Memo1.lines.add('___________________________________________');
end;
Ответить с цитированием