Форум: "Система";
Текущий архив: 2003.12.23;
Скачать: [xml.tar.bz2];
ВнизКак изменить данные в .EXE файле Найти похожие ветки
← →
Morg (2003-10-20 13:08) [0]Пример: есть exe файл (Написанный на Delphi), в котором есть данные (Const = "123" . К примеру), как их изменить из этой же программы (Const = "321").
← →
ZeroDivide (2003-10-20 13:50) [1]Из этого же процесса не возможно, файл залочен для записи пока приложение работает.
← →
Ihor Osov'yak (2003-10-20 13:53) [2]Const = "123" - это нетипизированные константы.
Они работают, как макроподстановка (грубо говоря, во время компиляции все вхождения в исходном тексте Const заменяются на "123"), то есть под нетипизированую константу память не распределяется, и ее изменить нельзя.
Если необходимость в изменении константы возникает, то нужно использовать типизированную константу, или инициализированную глобальную переменную (с начальным значением) (не знаю, в каком делфи начали поддерживаться инициализированные глобальные, но в пятом уже точно есть)
← →
Ihor Osov'yak (2003-10-20 13:57) [3]Да, и учитывая [1] и [2] - вопрос задан некорректно, так как допускает неоднозначную интерпретецию.. Хотя формально [1] - более правильная интерпретация.. Если, конечно, не учитывать того факта, что непипизированная константа "размазана" по телу ехе-файла, а если и перейти к типизированной константе, то я бы сразу задал вопрос - а зачем?
← →
Morg (2003-10-20 14:03) [4]Тогда как реализовать:
User ввел данные в Memo1 и закрыл приложение. Когда он откроет это приложение в следуйщий раз, то в Memo1 останутся те изменения что он сделал в прошлый раз.
Как это сделать в рамках одного файла !!! (Не записывать данные в другой файл, а потом загружать)
← →
clickmaker (2003-10-20 14:07) [5]> Morg (20.10.03 14:03) [4]
Есть еще такая вещь как реестр...
← →
Brahman (2003-10-20 14:07) [6]Действительно - зачем Registry, всякие там ини-файлы, тем более базы данных.
Пиши все подряд в exe
← →
Digitman (2003-10-20 14:43) [7]сабж из разряда трюков
← →
Mystic (2003-10-20 14:49) [8]> Они работают, как макроподстановка (грубо говоря, во время компиляции все вхождения в исходном тексте Const заменяются на "123"), то есть под нетипизированую константу память не распределяется, и ее изменить нельзя.
Да нет, строковые константы лежат в cекции данных. Константные строки храняться следующим образом: длина, счетчик ссылок=$FFFFFFFF, собственно сама строка + #0. В принципе найти эту строку и поменять можно (переустановить атрибуты страницы, ...). Сделать длиннее практически невозможно.
const
Dummy = "123";
var
St: string;
P: Pointer;
begin
St := Dummy;
P := Pointer(St);
// P указыает сейчас на
// FF FF FF FF 03 00 00 00 31 32 33 00
// ^
// Устанавливаем нужные атрибуты страницы...
PChar(St)^ := "0";
end;
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.12.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c