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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2009, 09:01   #1
shock-in
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 23
По умолчанию Работа с DLL

Здравствуйте.
Есть такой вопрос:
Имеется DLL , нужно в этой DLL из EXE файла изменить значение переменной:
Код:
Var
S:String;
как это сделать?
shock-in вне форума Ответить с цитированием
Старый 24.11.2009, 09:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

вынести S в экспорт
Exports S;

А в программе через GetProcAddres получить на нее указатель.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.11.2009, 09:23   #3
shock-in
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 23
По умолчанию

в DLL сделал так:
Код:
var
 s:string;
 exports s;
а в exe как сделать?
GetProcAddress(0,'lib.dll');
поконкретнее пожалуйста
shock-in вне форума Ответить с цитированием
Старый 24.11.2009, 10:08   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

перед тем как делать:
Код:
function LinkProc(ProcName: string):Pointer;
 begin
  try
   result:= GetProcAddress(FLib, PChar(ProcName));
   Win32Check(Assigned(Result))
  except end
 end;
хорошо-бы LoadLibrary сделать...
вы ссылки внизу смотрели?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 24.11.2009, 11:36   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот у меня в ДЛЛ переменка sk:Integer:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var l:THandle;  p:^integer;
begin {$o-}
 l:=LoadLibrary('project2.dll');
 p:=GetProcAddress(l,'sk');
 p^:=1234;
 init;
end;
Увидел?
Это один из вариантов. Если скажешь зачем тее это надо может быть кто-то подкинет более пристойную идею решения.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.11.2009, 12:01   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Работа с DLL
Все пристойные и непристойные решения уже выложены - аж места не хватает внизу - в "Похожих темах".
И пункт меню "Поиск" у вас конечно не видно...
mihali4 вне форума Ответить с цитированием
Старый 24.11.2009, 14:39   #7
shock-in
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 23
По умолчанию

Stilet Спасибо, разобрался)

Ещё вопрос ...
что такое init?

Что, кнопка "Правка" пропала?

Последний раз редактировалось mihali4; 24.11.2009 в 15:27.
shock-in вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с dll rangel Общие вопросы Delphi 5 06.07.2009 14:21
Работа с DLL soonner Помощь студентам 4 25.03.2009 21:32
Работа с dll Alex Logos Общие вопросы Delphi 3 27.02.2009 10:30
Работа с DLL Lazo Помощь студентам 4 21.02.2009 06:14
Работа с DLL Maks1978 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 18.09.2008 16:55