Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
ВнизПоиск файла по его содержимому Найти похожие ветки
← →
Генри © (2005-02-27 16:21) [0]Доброго времени суток!
Подскажите, как осуществить поиск файла по фрагменту или части внутри его?
СпасибО!!
← →
olookin © (2005-02-27 16:28) [1]Вероятно, открывать каждый файл и прочитывать его содержимое?
← →
GanibalLector © (2005-02-27 16:45) [2]2 olookin © (27.02.05 16:28) [1]
А если файл Word-a или Excel-я? И таких примеров тысячи...
Короче,моё ИМХО : НИКАК!
← →
olookin © (2005-02-27 16:51) [3][2] GanibalLector © (27.02.05 16:45)
Да, вы правы... Однако каким-то образом тот же Totalcommander с этой задачей справляется...
← →
GanibalLector © (2005-02-27 16:58) [4]>Однако каким-то образом тот же Totalcommander с этой задачей справляется
Только что проверил,не находит он ничего!
← →
Igor_thief (2005-02-27 18:13) [5]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");
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c