![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск файла по его содержимому [D7, WinXP]
Генри © (2005-02-27 16:21:00)Доброго времени суток!
Подскажите, как осуществить поиск файла по фрагменту или части внутри его?
СпасибО!!
Igor_thief (2005-02-27 18:13:00) [1]GanibalLector © (27.02.05 16:58) [4]
Ой не верю!
Генри © (27.02.05 16:21)
ЧТо-то типа этого:
Digitman © (22.02.05 10:19) [2]
function FindSignature(aFile: String; aSign: String; var Offset: DWord): Boolean;
var
fSize, sSize: DWord;
hFile, hMap: THandle;
p, ptr: PByte;
cmpcount: DWord;
begin
Result := False;
sSize := Length(aSign);
if sSize = 0 then Exit;
Offset := 0;
hFile := FileOpen(aFile, fmOpenRead or fmShareDenyNone);
Win32Check(hFile >= 0);
try
fSize := FileSeek(hFile, 0, 2);
if fSize < sSize then Exit;
hMap := CreateFileMapping(hFile, nil, PAGE_READONLY, 0, fSize, nil);
Win32Check(hMap > 0);
try
ptr := MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, fSize);
Win32Check(Assigned(ptr));
try
cmpcount := Succ(fSize - sSize);
p := ptr;
while cmpcount > 0 do
if CompareMem(ptr, PChar(aSign), sSize) then
begin
Offset := DWord(ptr) - DWord(p);
Result := True;
Break;
end
else
begin
Inc(ptr);
Dec(cmpcount);
end;
finally
UnmapViewOfFile(ptr);
end;
finally
CloseHandle(hMap);
end;
finally
CloseHandle(hFile);
end;
end;
..
var
Offs: DWord;
..
if FindSignature('SomeFile.exe', 'Igor_thief', Offs) then
ShowMessage('Signature found at offset ' + IntToStr(Offs))
else
ShowMessage('Signature not found');
GanibalLector (2005-02-27 16:58:00) [2]>Однако каким-то образом тот же Totalcommander с этой задачей справляется
Только что проверил,не находит он ничего!
olookin (2005-02-27 16:51:00) [3][2] GanibalLector © (27.02.05 16:45)
Да, вы правы... Однако каким-то образом тот же Totalcommander с этой задачей справляется...
GanibalLector (2005-02-27 16:45:00) [4]2 olookin © (27.02.05 16:28) [1]
А если файл Word-a или Excel-я? И таких примеров тысячи...
Короче,моё ИМХО : НИКАК!
olookin (2005-02-27 16:28:00) [5]Вероятно, открывать каждый файл и прочитывать его содержимое?