Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2012, 23:29   #1
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
Восклицание Замена значения в exe файле

Здравствуйте!

У меня такой вопрос есть 2 программы как сделать так что бы из одной программы можно было бы заменить значения константы (переменной) в другой, т.е. модифицировать exe?

Пример:
Код:
...
const
peremen=1;<= как изменить из другой программы значение данной константы
type
 ...
var
  Form1: TForm1;
implementation
{$R *.dfm}
//Событие по кнопке
procedure TForm1.Button1Click(Sender: TObject);
  begin
    ShowMessage(IntToStr(peremen));
  end;
DIMASIKXXX32 вне форума Ответить с цитированием
Старый 19.12.2012, 23:38   #2
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
const
peremen=1;<= как изменить из другой программы значение данной константы
данной - никак.
xoodoo вне форума Ответить с цитированием
Старый 19.12.2012, 23:40   #3
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию

Цитата:
Сообщение от xoodoo Посмотреть сообщение
данной - никак.
а почему данной ни как? т.е. нельзя
DIMASIKXXX32 вне форума Ответить с цитированием
Старый 19.12.2012, 23:43   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

нужно знать все её применения, тогда можно было бы.
Делфи не дура, и подставляет все использование численных констант прямо в код.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.12.2012, 23:49   #5
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
нужно знать все её применения, тогда можно было бы.
Делфи не дура, и подставляет все использование численных констант прямо в код.
Нужно следующего типа, как в artmoney это сделано только надо в в программе 2 открыть exe программы 1 и изменить значение например будем уверены в том что эта переменная типа integer и изменим ее значения с 1 на 100 допустим и сохрним, короче любое от 0 до 1000. и
DIMASIKXXX32 вне форума Ответить с цитированием
Старый 19.12.2012, 23:52   #6
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
почему данной ни как?
Как минимум потому что потому что она нетипизированная.
xoodoo вне форума Ответить с цитированием
Старый 19.12.2012, 23:54   #7
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
эта переменная
Переменная - это не константа.
xoodoo вне форума Ответить с цитированием
Старый 19.12.2012, 23:59   #8
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию

Цитата:
Сообщение от xoodoo Посмотреть сообщение
Переменная - это не константа.
Это понятно. смысл того что я просто не знаю как это сделать.
Может объявить глобальную переменную типа integer


Код:
...
var
  Form1: TForm1;
  peremen:integer = 1;<= если так
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
  begin
    ShowMessage(IntToStr(peremen));
  end;
DIMASIKXXX32 вне форума Ответить с цитированием
Старый 20.12.2012, 00:02   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Константы - это грубо говоря, переменные окружения и используются для удобства обозначения одних и тех же данных одним идентификатором. Удобность в том, что весь код придется менять только если измениться идентификатор константы, а вот данными можно вертеть как душе угодно.

Как и сказал Пепел Феникса, delphi - не дура, и на стадии препроцессинга кода, обрабатывает директивы компилятора и заменяет все константы на их значения.
Хотя я мог бы тут поспорить т.к. это очень глупо, ИМХО увеличивается объём кода в итоге. Я думаю все проще, константе задается ячейка памяти с доступом только для чтения, и везде где нужна эта ячейка, стоит указатель на данные из неё, это выглядит куда правдоподобнее, да и проще.
Человек_Борща вне форума Ответить с цитированием
Старый 20.12.2012, 00:11   #10
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
не знаю как это сделать
Начни со вразумительного объяснения зачем вообще это делать.

У тебя есть полный исходный текст проекта программы 1, достаточно изменить значение переменной или константы прямо в тексте проекта и скомпилировать его повторно.
Непонятно за коим понадобилось выкрутасничать с готовым exe.
xoodoo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена строки в файле Bubel C# (си шарп) 1 17.11.2011 22:38
Поиск и замена в doc файле Qt denis821 Общие вопросы C/C++ 7 07.02.2011 09:38
Замена строки в файле - C tools Помощь студентам 1 20.12.2010 01:39
Замена символа в файле Spandei Общие вопросы C/C++ 1 14.05.2010 08:21
Замена строки в файле blacknotblack Общие вопросы .NET 3 13.03.2010 12:09