Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Загрузка exe файла в Memo [D7, XP]


Страницы:   1 2

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]

Германн, конечно, хотелось бы взглянуть на ваш исходник :)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо