Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.23;
Скачать: CL | DM;

Вниз

Как изменить данные в .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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
14-75335
hexone
2003-12-01 09:54
2003.12.23
Написание игр на Delphi...Целесообразно ли это? 2


3-75118
Bless
2003-11-28 16:27
2003.12.23
Как передать параметры в х.п.?


7-75413
Санёк
2003-10-19 16:53
2003.12.23
Помогите плиз


1-75188
MuxauJl
2003-12-08 13:37
2003.12.23
Активность только окна Дэлфи


1-75255
Александр И.
2003-12-10 13:03
2003.12.23
ошибка удаления моего компонента из палитры