kuhtiov писал(а):Как прочитать "буквы" из памяти?
Способов тьма.
- CopyMemory. Медленнее не придумать, глупее не поступить. За использование — расстрел.
- GetMem1. Но тоже медленно, хотя куда лучше, чем CM
- Хитрообёрнутый, но тот же GetMem. Куда быстрее, чем GetMem через Declare.
- Заставить обычный байтовый массив указывать на твой регион памяти и работать с массивом. Очень быстро, если отключить в настройках оптимизации контроль границ массива, и почти так же, как и предыдущий способ, если не отключать. Но зато красиво. Правда я не провериял релизиацию Viper-а, поэтому просто надеюсь, что там именно то, о чём я говорю. Можешь так же в двух моих последних кирпичах поискать функции SaMap/SaUnmap, вот это точно то, о чём я говорю.
- Указатели через ByRef-аргумент. Трюк хороший, но из-за необходимости часто сдвигать указатель, не быстрее, чем предыдущие два.
- Найти какую-нибудь API-функцию, которая получает адрес одной (большой) последовательности байтов и адрес другой (меньшей) последовательности байтов и ищет второую в первой. Или написать такую функцию на Си. Наибыстрейший вариант, при условии, что функция написана хорошо.
Хотя, я бы озаботился вообще о другом. Ты ведь не одну фразы хочешь искать в своём файле, а несколько разных?