![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Загрузка exe файла в Memo [D7, XP]
Dmitrijan © (2010-02-11 00:12:00)Уважаемые форумчане, подскажите новичку, мне нужно загрузить exe файл в Memo. Процедурой Memo1.Lines.LoadFromFile ('exefile'); не грузится, а точнее загружает только три символа и все. Обычным же блокнотом .exe открыть можно.
Германн (2010-02-11 02:53:00) [1]
> KilkennyCat © (11.02.10 02:16) [24]
>
>
> > Ты читаешь ответы, но не понимаешь их.
>
>
> Да. Не понимаю.
> Я не понимаю, какой может быть поиск, да еще по какому-
> то алгоритму для строк(!), когда задача стоит как четкое
> определение типа файла по сигнатуре.
Задача вообще-то на тот момент вообще не была озвучена. Был только дурацкий вопрос о загрузке exe-файла в Memo.
dmitrijan (2010-02-11 02:40:00) [2]Спасибо всем! Буду эксперементировать.
KilkennyCat (2010-02-11 02:30:00) [3]
> dmitrijan © (11.02.10 02:21) [25]
>
> Да я тоже думал про сравнение сигнатур, но
> этот метод для меня сложен.
Правильно думал. И Это в разы менее сложно, чем hBoyer-Moore-Horspool. Можешь убедиться, вот его реализация: http://www.angusj.com/delphi/searches.html
Для поиска по сигнатуре тебе нужно:
Определить, где они находятся. Это можно прочитав документацию к инсталлятору, или препарированием оного.
Открыть файл. assdignFile, reset
Переместиться в нужную позицию. seek
Прочитать нужное количество (равное размеру сигнатуры) байт. Readbuffer
Сравнить. if
Закрыть файл. closefile
Итого: менее 10 строк кода, 99,9% точности результата.
dmitrijan (2010-02-11 02:29:00) [4]Вот пример из блокнота файл Inno:
<assemblyIdentity
name="JR.Inno.Setup"
processorArchitecture="x86"
version="1.0.0.0"
type="win32"/>
слов NSIS там не нашел, впрочем как и в NSIS файле слов Inno.
KilkennyCat (2010-02-11 02:24:00) [5]Это в случае с поиском.
KilkennyCat (2010-02-11 02:24:00) [6]Потом удивишься, что практически большинство екзешников определятся как nsis
dmitrijan (2010-02-11 02:21:00) [7]KilkennyCat, Да я тоже думал про сравнение сигнатур, но этот метод для меня сложен.Я писал в первом посте, что удивился когда открыл файл блокнотом, и увидел, что там строкой написан тип инсталлятора. Примерно в начале файла.
KilkennyCat (2010-02-11 02:16:00) [8]
> Ты читаешь ответы, но не понимаешь их.
Да. Не понимаю.
Я не понимаю, какой может быть поиск, да еще по какому-то алгоритму для строк(!), когда задача стоит как четкое определение типа файла по сигнатуре.
Германн (2010-02-11 02:10:00) [9]
> Smile (11.02.10 02:01) [21]
>
> > KilkennyCat © (11.02.10 01:54) [20]
>
> Очень редко "выглядываю" ночью, тем более приятно, наблюдать,
> что даже в такое время суток, есть те, кто
"Германн © (11.02.10 01:57) [11]
> KilkennyCat © (11.02.10 00:30) [5]
>
> а мне предлагают винды бесплатно.
Ты Костя сегодня ночью читаешь очень невнимательно. Там не предлагают "винды бесплатно". Там предостерегают от покупки пиратской версии. :)
<Цитата>
KilkennyCat © (11.02.10 02:00) [12]
> Германн © (11.02.10 01:57) [11]
Я ваще не читаю. Просто бросается крупный шрифт, автоматом воспринимаю.
"
:)
Германн (2010-02-11 02:03:00) [10]
> KilkennyCat © (11.02.10 01:54) [20]
>
>
> > Не я написал процедуру Seek. :)
>
> ну тогда посмотри, как она написана
Костя, проспись. Ты уже совсем вышел из сабжа! Ты читаешь ответы, но не понимаешь их.
Smile (2010-02-11 02:01:00) [11]> KilkennyCat © (11.02.10 01:54) [20]
Очень редко "выглядываю" ночью, тем более приятно, наблюдать, что даже в такое время суток, есть те, кто может указать на "их" место, тем кто этого заслуживает
:)
KilkennyCat (2010-02-11 01:54:00) [12]
> Не я написал процедуру Seek. :)
ну тогда посмотри, как она написана, и покажи мне, как там происходит поиск. Я так думаю, что компьютеры медленно работают до сих пор только из-за этого: как только что-то потребуется процессору, он говорит: а дайте-ка мне это по такому-то адресу, и все, полная жопа, все остальные начинают искать адрес...
dmitrijan (2010-02-11 01:48:00) [13]Германн, спасибо за исходник, буду разбиратся.
Германн (2010-02-11 01:46:00) [14]
> dmitrijan © (11.02.10 01:42) [16]
Отправил.
Германн (2010-02-11 01:46:00) [15]
> KilkennyCat © (11.02.10 01:41) [15]
>
>
> > Если известен адрес нужного байта в файле, так тут и нужен
> > поиск в файле. Точнее позиционирование.
>
> бред.
>
Ну это не ко мне. Не я написал процедуру Seek. :)
dmitrijan (2010-02-11 01:42:00) [16]Валидна :)
KilkennyCat (2010-02-11 01:41:00) [17]
> Если известен адрес нужного байта в файле, так тут и нужен
> поиск в файле. Точнее позиционирование.
бред.
> А если адрес не известен, то нужно искать.
что искать? набор байт, случайно образовавшие 'inno' и 'nsis' ?
Германн (2010-02-11 01:40:00) [18]
> dmitrijan © (11.02.10 01:37) [12]
Почта в анкете валидна?
Германн (2010-02-11 01:39:00) [19]
> И еще раз скажу - ненужен тут поиск, и даже вреден, не слушай
> Германна, он не выспался.
>
Лучше не слушать котов ночью. :)
Костя. Если известен адрес нужного байта в файле, так тут и нужен поиск в файле. Точнее позиционирование.
А если адрес не известен, то нужно искать.
dmitrijan (2010-02-11 01:37:00) [20]Германн, конечно, хотелось бы взглянуть на ваш исходник :)