1. Программа blockread-ом читает из файла массив байтов (не кратный 4). Нужно из него взять несколько 4-байтных целых — integer или dword — по смещениям не обязательно кратным 4. Как это лучше сделать? (Извращаюсь с указателями, получил Access Violation на ровном месте.)
2. Тот же массив, нужно найти все вхождения заданного 4-байтного целого. Существуют ли стандартные процедуры или функции? (Вызываю CompareByte( x, y, 4) или CompareDWord( x, y, 1) для каждого байта.) — Ответ: IndexDWord, но только для кратных 4.
3. Тот же массив, нужно найти все вхождения определённой структуры длиной 50-100 байтов. Проблема в том, что некоторые поля этой структуры могут принимать любые значения, например: совпадают первые 20 байт, следующие 3 любые, следующие 10 должны совпасть, 5 любые, дальше все совпадают. Есть ли стандартное решение? (Ищу первые 4 байта как шаг 2, затем сравниваю побайтово, добавив условие «or buf[ i ]=$FF».)
Зачем это нужно? Выковыриваю ресурсы из игры.