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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2009, 20:22   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Несколько функций в DLL

Чет я туплю. В ДЛЛ Набрал несколько функций и процедуру.:
Код:
uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

{$R *.res}

Function SetFullscreenMode:Boolean; StdCall;
Var
  DeviceMode : TDevMode;
Begin
  With DeviceMode do
  Begin
    dmSize:=SizeOf(DeviceMode);
    dmBitsPerPel:=32;
    dmPelsWidth:=1024;
    dmPelsHeight:=768;
    dmFields:=DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT;
    Result:=False;
    If ChangeDisplaySettings(DeviceMode,CDS_TEST or CDS_FULLSCREEN) <> DISP_CHANGE_SUCCESSFUL
    Then Exit;
    Result:=ChangeDisplaySettings(DeviceMode,CDS_FULLSCREEN) = DISP_CHANGE_SUCCESSFUL;
  End;
End;

Function GetNumState: String; StdCall;
 Begin
  If Odd(GetKeyState(VK_NUMLOCK)) Then
   GetNumState:='ON'
   Else
   GetNumState:='OFF';
 End;

Procedure ChangeNumLockMode; Stdcall;
 Begin
   GetNumState;
   If GetNumState='OFF' Then
   Begin
    Keybd_Event(VK_NUMLock,0,0,0);
    Keybd_Event(VK_NUMLock,0,KEYEVENTF_KEYUP, 0);
   End;
 End;

Exports
  SetFullscreenMode;
  GetNumState;
  ChangeNumLockMode;

begin
end.
И не компилирутся, после выделенной строки пишет, что ожидается Declaration. Что я упустил?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 23.05.2009, 20:59   #2
DM_bite
Участник клуба
 
Аватар для DM_bite
 
Регистрация: 29.07.2008
Сообщений: 1,091
По умолчанию

Вот это:
Код:
Exports
  SetFullscreenMode;
  GetNumState;
  ChangeNumLockMode;
замените на:
Код:
exports SetFullscreenMode;
  exports GetNumState;
  exports ChangeNumLockMode;
а так все верно.)
Кто бы ты ни был - не думай о себе слишком (с)
DM_bite вне форума Ответить с цитированием
Старый 23.05.2009, 21:03   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Ааааа!! Точно! Спасибо! А я думал, что уже с отправкой вовне что-то намудрил.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 23.05.2009, 21:10   #4
mauar
Пользователь
 
Регистрация: 05.05.2008
Сообщений: 27
По умолчанию

А лучше так:
Код:
exports SetFullscreenMode,
                       GetNumState,  
                          ChangeNumLockMode;
Просто через запитую прописать!

Последний раз редактировалось mauar; 23.05.2009 в 21:12.
mauar вне форума Ответить с цитированием
Старый 23.05.2009, 21:11   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Я так и знал, что там один экспорт нужен))
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 23.05.2009, 21:14   #6
mauar
Пользователь
 
Регистрация: 05.05.2008
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Я так и знал, что там один экспорт нужен))
Много не надо операторов, это плохо, тратится время (какое ни какое) и рессурсы компьютера.

Гы. у меня у самого проблема сейчас с DLL. не могу сделать поиск из динамической DLL, голова уже не работает!
mauar вне форума Ответить с цитированием
Старый 23.05.2009, 21:51   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Я бы еще добавил нечто вроде:
Код:
var
   MyExit: Pointer;     //точка выхода из DLL
...
procedure LibExit;
begin
try
;
finally
ExitProc:=MyExit;
end;
end;

exports
...
begin
ExitProc:=@LibExit;
MyExit:=ExitProc;
end;
Для гарантированной выгрузки длль-ки.
Писал на ходу, может какое-то определение упустил, заранее прошу прощения...
mihali4 вне форума Ответить с цитированием
Старый 23.05.2009, 22:36   #8
mauar
Пользователь
 
Регистрация: 05.05.2008
Сообщений: 27
По умолчанию

mihali4 А может ты мою проблему посмотришь, у меня там тоже dll но чуть сложнее вопросик, посмотри пожалуйсто может что умное скажешь, а то голова уже как мячик стала )) :
http://www.programmersforum.ru/showthread.php?t=51006
mauar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько функций в одной процедуре? nePirat Помощь студентам 2 04.05.2009 11:42
Как узнать имена функций из DLL? komex Общие вопросы Delphi 9 05.03.2008 16:55
Получение функций из DLL NITRON Общие вопросы Delphi 8 12.09.2007 17:32
передача объектов как параметров функций в Dll Umen Общие вопросы Delphi 9 12.11.2006 19:31