![]() |
|
|
|
|
#1
|
|||
|
|||
|
Создал DataModule.bpl, в котором модуль называется "DM"
В моём проекте два модуля bpl, которые используют модуль DM. Добавил DataModule.dcp в requires модулей. Пытаюсь сбилдить проект, выдаёт ошибку Код:
Undeclared identifier 'DM' |
|
#2
|
|||
|
|||
|
не пойму, в каком месте нужно объявлять DM и переменные, чтобы они были видны другим модулям.???
Код:
unit UDataModule;
interface
uses
Windows, Messages, SysUtils,Classes,Dialogs, DB, ADODB, IniFiles;
type
TExecuteModal = procedure;
TFamilyName = function:string;
TPluginName = function:string;
TDM = class(TDataModule)
Query: TADOQuery;
DataSet: TADODataSet;
procedure DataModuleCreate(Sender: TObject);
private
public
end;
procedure LoadPlugin(PlName:String; H:HWND);
const
MY_MESSAGE = WM_USER + 1;
var
DM: TDM;
//
ParentHandle:HWND;
//Ãëîáàëüíûå ïåðåìåííûå äëÿ ëîãèíà ïîëüçîâàòåëÿ
Employee_Key:Cardinal;
Employee_Id:Cardinal;
Employee_Pass,
Employee_Name1,
Employee_Name2,
Employee_Name3:string;
Logon_Key:Cardinal;
implementation
{$R *.dfm}
|
|
#3
|
|||
|
|||
|
вот это решение не помогает: http://www.delphimaster.net/view/1-1088655081/all
|
|
#4
|
|||
|
|||
|
Ну в том юните , где
Undeclared identifier 'DM' нужно добавить uses UDataModule; А в самом UDataModule.pas вроде всё правильно. |
| Этот пользователь сказал Спасибо icWasya за это полезное сообщение: | ||
sorockinalex (04.09.2012)
| ||
|
#5
|
|||
|
|||
|
Цитата:
Оказывается, если в requires добавлено, то в uses имя .pas файла надо указывать (UDataModule), а не имя модуля - DataModule... Последний раз редактировалось sorockinalex, 04.09.2012 в 16:29. |
|
#6
|
||||
|
||||
|
Цитата:
![]() |
|
#7
|
|||
|
|||
|
Вот ещё возникла проблемка:
В этом bpl дата-модуле лежит Ado Query.. При загрузке приложения вылетает окошко с логином, проверяется логин и пароль в базе данных. Всё работает! Далее пытаюсь открыть другой модуль, в котором происходит доступ к этому Query, но вылетает ошибка. Понял так, что из-за того, что он (Query) кем-то занят.. Попробовал просто второй раз запустить модуль логина - то же самое. Второй раз достучаться до Query невозможно... Хотя в коде есть освобождение запроса: Код:
DM.Query.Close;
DM.Query.Active:=False;
DM.Query.Free; |
|
#8
|
|||
|
|||
|
Так заработало.. странно, зачем я освобождал...
Код:
//DM.Query.Close; DM.Query.Active:=False; //DM.Query.Free; |