Ребята помогите в таком вопросе, это фрагмент кода моего приложения, он отвечает за поиск в вбраном каталоге (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;