if not (Key in ['0'..'9', 'A'..'F', 'a'..'f', '$', 'x']) then Key := #0;
Ну добавить остальные исключения несложно.if not (Key in ['0'..'9', 'A'..'F', 'a'..'f', '$', 'x']) then Key := #0;
Но при таком запрете перестают работать управляющие комбинации клавиш, такие как <Ctrl+X>, <Ctrl+C>, <Ctrl+V>. В поле ничего нельзя вставить и ничего нельзя оттуда скопировать.
Есть программы, которые сжимают полученный дельфийский exe файлА название не подскажешь?
А вообще может код надо упростить?Не думаю, что смогу что-нибудь придумать в этом направлении. Это ведь не просто корруптор, он усилен двумя анализаторами и средствами контроля за своей работой. 4 формы, 3 вида нестандартных компонентов, два из которых написала лично. Задумала это приложение ещё год назад, но тогда у меня ещё не было достаточно знаний, не получилось.
Переменные там всякие длинные заменить на короткие? Если ты пробовала использовать различные компоненты, а потом от них отказалась - то могут остаться библиотеки от них в самом начале файла - они тоже могут немного увеличивать файл...*SCRATCH* Мне всегда казалось, что названия переменных - это не более, чем информация для разработчика; что на длину создаваемого машинного кода это никак не влияет. Похожая вещь и с указываемыми библиотеками - ИМХО, это просто места, куда заглядывает компилятор при создании исполняемого файла, лишние библиотеки на величину конечного файла никак не влияют. Или я не права? *SCRATCH* А вообще я действительно иногда с элементами экспериментировала.
Есть программы, которые сжимают полученный дельфийский exe файлБесплатный - консольный UPX (обычно используют "--brute ExeFileName"). Но толку от подобных программ немного - жмут они как архиваторы (ну ладно, лучшие архиваторы), и добавляют распаковщик в тело исполняемого файла, поэтому, думаю, логичнее просто упаковать программу, скажем, в 7z...
А название не подскажешь?
основная причина громоздких размеров программ, в которых используются классы - это то обстоятельство, что одни классы используют другие, те, в свою очередь, третьи, и так далее, и так до такой степени, когда разорвать связи уже невозможно. Вы указываете в uses ссылку на модуль Forms, или на Dialogs, и все - ваши 350-400 Килобайт в программу добавленыПоэтому радикальный выход: сменить язык; программировать API; отказаться от GUI; ну или использовать KOL и MCK.
КАК НАЗВАТЬ ПРОГРАММУ? *SCRATCH*
Напоминает мускулистого дикаря, который размахивает большой дубинкой, не совсем понимая, зачем это нужно. *F_HOBO*
"Приложению не удалось запуститься, поскольку qtintf70.dll не был найден..."Ну вот, а я-то думала, что все проблемы уже решены. *F_CRY* Даже скриншоты для инструкции уже сделала.
Хм. Зачем было использовать CLX-компоненты? Стандартных разве недостаточно?CLX... Отправилась читать Википедию. Пожалуй, ссылку на неё нужно переместить на главную панель браузера.
Теперь прога работает, но у меня в Висте она не помещается в своё окно...Висты у меня нет. И если честно, я её даже никогда не видела. К сожалению, здесь я ничего придумать не способна.
Потом, например размер файла 10 h... когда я ставлю пределы изменяемых величин на самое последнее значение от 10 h до 10 h, то возникает Range check Error и прога виснет... Надо обработать такую исключительную ситуацию...Пытала программу долго и упорно. Ну не возникает у меня здесь никаких ошибок! Не знаю почему, ну нету у меня зависаний! Нету!! Ну не могу я ничего с этим поделать!
Эта же ошибка возникает тогда, когда файл изменяется весь сразу... От самого начала до самого конца... Но не в первый, а во второй раз - когда делаешь то же самое...
В общем, пока прога практически не работаетУже сколько над программой изголяюсь - и ни одной ошибки! Ну дайте мне щелбан!
Хекс компонент в самом низу - как я понял, он останавливается на последнем байте, который был изменён?Имеешь в виду текстовые поля, где выводится образец хекс-кода из файла? В них показывается начало участка, который был изменён, анализируется или просто выбран на диаграмме. Я ведь вроде везде там проставила небольшой поясняющий текст... А длинные объяснения к компонентам там оставлять просто негде.
Может лучше сделать в нём показ всего диапазона изменённых байт со скроллбаром вертикальным?Неплохая идея. Но для этого нужно переписать значительную часть кода, а у меня сейчас мало времени. Возможно, когда-нибудь в будущем.
А можно 2 окна таких - до и после...Снова не поняла... У меня ведь там две строки: верхняя показывает первоначальное состояние данного участка, а нижняя - в данный момент времени. Как раз и сделала это для того, чтобы можно было изменения отслеживать. Чувствуется, недостаточно пояснительного текста, но куда его там пихать? Может, попытаться сделать какие-нибудь контекстные подсказки?
?Потом, например размер файла 10 h... когда я ставлю пределы изменяемых величин на самое последнее значение от 10 h до 10 h, то возникает Range check Error и прога виснет... Надо обработать такую исключительную ситуацию...Пытала программу долго и упорно. Ну не возникает у меня здесь никаких ошибок! Не знаю почему, ну нету у меня зависаний! Нету!! Ну не могу я ничего с этим поделать!
Эта же ошибка возникает тогда, когда файл изменяется весь сразу... От самого начала до самого конца... Но не в первый, а во второй раз - когда делаешь то же самое...
Небольшой выигрыш даёт снятие флажков с Range checking и Overflow checking в опциях компилятора (правда они по умолчанию и так должны быть сняты). Снятие флажков с I/O checking и со всех пунктов в группе Debugging не уменьшило размер скомпилированной программы ни на байт.
Zalbard, если поможешь, разрешу сводить себя в пиццерию.(http://lurkmore.ru/images/thumb/a/ae/Facepalm_kyon.jpg/130px-Facepalm_kyon.jpg)
Zalbard, если поможешь, разрешу сводить себя в пиццерию. (Когда я в последний раз пиццу ела? Всего несколько раз за всю жизнь! Украдкой!)Всё, договорились. *FRIENDS* Как буду в Гонолулу, сразу откормлю тебя пиццей. А пока:
Можешь ещё Сравнилку прямо в Ромкор добавить, будет ещё удобнее.Не вижу смысла. Программы слишком разные. Только путаница будет.
Работать только с каждым Х-ым байтом... Например со вторым, а прога-то начинает работу с первого байта в диапазоне ;о) Парадокс получается ;о))) Надо как-то по-другому написать?Такой эффект и задуман. Первый байт изменяемого участка обрабатывается абсолютно всегда, а дальше - через указанный интервал. По-моему, довольно логично. Разве что немного уточнить формулировку? Если кто-то может более точно определить суть той или иной команды, я непременно подправлю соответсвующую надпись.
01111111 =>11111110=>11111101Ты сначала показал пример ASL, а потом уже почему-то ROL. Правильный пример ASL:
Видишь ли, есть сдвиги с дублированием последнего бита. А снес ASL - который я указал. Переменная же разной бывает=)
Спасибо :)
т.е. последний бит переходит в началоЭто уже повороты, а не сдвиги. :)
но сдвиг то идет на одну, а последний байт тупо переходит в начало, короче запущенная система там=)Ты говоришь про ROL, а не про ASL.
Сапсибо, но придеться опять своим методом делать LOL
i:= sec.Size;
s:=IntToHex(i, 8);
i:=StrToInt('$' + Copy(s,7,2) + Copy(s,5,2) + Copy(s,3,2) + Copy(s,1,2));
function SwapInt(Value: Integer): Integer;
asm
bswap eax
end;
//...............
var X: Integer; Stream: TFileStream;
//...........
X := SwapInt(X);
Stream.WriteBuffer(X, 4);
X := X shr 24 + (( X shr 16) and $FF) shl 8 + (( X shr 8 ) and $FF) shl 16 + X shl 24;
чего извращаться с переводом в string и обратно?Просто никогда езще не работал со сдвигами, так что как умел, так и попытался реализовать. :)
Что-то не могу сообразить, как конвертнуть Cardinal (или массив из 4-х байтов) в TColor притом чтобы альфу не перекосило.Хох, а зачем тебе это? TColor вроде бы альфу не поддерживает. Есть специальные классы для работы с изображениями с альфой.
Мне нужно конвертить 32-битные Hip'ы в какой-нибудь привычный 32-битный формат и обратно. 24-битный формат не катит, так как я теряю при конвертации 8 бит информации о цвете (альфа-канале). Вот думаю, как это реализовать.Имелось в виду, зачем тебе именно в TColor конвертировать, ведь он альфу не поддерживает. :)
Для жителей стран СНГ все компоненты являются бесплатными (независимо от того - коммерческий проект или нет). Платой за пользование могут быть Ваши критические замечания, советы, сообщения об ошибках и т.д.
Пароль для распаковки - слово "сканирование", набранное маленькими русскими буквами в английской раскладке.
TrickZter, а такой компонент не подойдёт??? :'(Не знаю, может быть вообще без скрытия сделаю.