Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

FreeLibrary [D5, D6, D7, Win2k, WinXP]


Страницы:   1 2

ZHK ©   (2004-06-21 10:31:00) 

Здравствуйте, Господа.
Попал в затруднительную ситуацию. Тупею. :-) Вот кусок кода:


procedure TForm1.Button3Click(Sender: TObject);
var
 DialogCount:TDialogCount;
 DialogName:TDialogName;
 DialogDescription:TDialogDescription;
 DialogExecute:TDialogExecute;
 SetDatabaseList:TSetDatabaseList;
 LH:THandle;
 SQL:TStrings;
begin
//  Form6.Execute;
 LH:=LoadLibrary('dll\sql1\SQL1.dll');
 @DialogCount := GetProcAddress(LH,'DialogCount');
 @DialogName := GetProcAddress(LH,'DialogName');
 @DialogDescription := GetProcAddress(LH,'DialogDescription');
 @DialogExecute := GetProcAddress(LH,'DialogExecute');
 @SetDatabaseList := GetProcAddress(LH,'SetDatabaseList');
 if Assigned(SetDatabaseList) then
    SetDatabaseList(PostgreSQLConnectionForm.ListBox1.Items);
 SQL:=TStringList.Create;
 if Assigned(DialogExecute) then
    begin
      DialogExecute(0,SQL);
      if SQL.Count>0 then
         RichEdit1.Lines.Assign(SQL);
    end;
 SQL.Free;

 FreeLibrary(LH);  
{
А вот тут-то и возникает ошибка Invalid Floating Point Operation.
При необходимости могу прислать полный проект DLL-ки. Мое мыло - eug_elizarov@mail.ru
}

end;

Кто чем может. :-)


Anatoly Podgoretsky   (2004-06-21 12:05:00) [21]

Где и как его включил,


Думкин   (2004-06-21 12:04:00) [22]

>  [8] ZHK ©   (21.06.04 12:00)

В коде во всяком случае у тебя его нет, равно как и есть ыверенность его нет в программе основной, тем более расположенном так как указано в комментарии.


ZHK   (2004-06-21 12:00:00) [23]

Не-а, ShareMem тоже не катит...


Игорь Шевченко   (2004-06-21 11:57:00) [24]

ShareMem


Думкин   (2004-06-21 11:51:00) [25]

А комментарий вверху для красоты?


ZHK   (2004-06-21 11:44:00) [26]

Вот библиотека:

library SQL1;

{ Important note about DLL memory management: ShareMem must be the
 first unit in your library's USES clause AND your project's (select
 Project-View Source) USES clause if your DLL exports any procedures or
 functions that pass strings as parameters or function results. This
 applies to all strings passed to and from your DLL--even those that
 are nested in records and classes. ShareMem is the interface unit to
 the BORLNDMM.DLL shared memory manager, which must be deployed along
 with your DLL. To avoid using BORLNDMM.DLL, pass string information
 using PChar or ShortString parameters. }

uses
 SysUtils,
 Classes,
 Billing in 'Billing.pas' {Form1},
 SQLTypes in '..\SQLTypes.pas';

{$R *.res}

const
 DCount=1;

var
 DialogNames:array[0..DCount-1] of String=('Âûáîðêà áèëëèíãà ïî íîìåðó àáîíåíòà'#0);
 DialogDescriptions:array[0..DCount-1] of String=('Âûáîðêà áèëëèíãà ïî íîìåðó àáîíåíòà'#0);
 DatabaseList:String;

 function DialogsCount:Integer; stdcall;
 begin
   Result:=DCount;
 end;

 function DialogName(IndexOfDialog:Integer):PChar; stdcall;
 begin
   if (IndexOfDialog>=0) and (IndexOfDialog=0) and (IndexOfDialog


Игорь Шевченко   (2004-06-21 11:15:00) [27]


> Да я его и не объявлял. Но ведь парни пишут, что для делфи
> это необязательно? Или как?


Вот если бы ты привел объявления функций в DLL и в своей программе, наверное, было бы проще диагностировать ошибку...


ZHK   (2004-06-21 10:53:00) [28]

А, собственно, и не помогло. :-(


ZHK   (2004-06-21 10:51:00) [29]

Да я его и не объявлял. Но ведь парни пишут, что для делфи это необязательно? Или как?


Игорь Шевченко   (2004-06-21 10:33:00) [30]

где-то stdcall забыл объявить ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо