OberonCore https://forum.oberoncore.ru/ |
|
Сборка библиотеки с функциями SQL https://forum.oberoncore.ru/viewtopic.php?f=1&t=2984 |
Страница 1 из 1 |
Автор: | Иван Денисов [ Среда, 10 Ноябрь, 2010 13:13 ] |
Заголовок сообщения: | Сборка библиотеки с функциями SQL |
Пробую собрать библиотеку для задачи сборки данных из базы данных в файл Doc. И первый раз собрал так. Код: DevLinker.LinkDll med.dll := Kernel+ Files HostFiles Dates CtlT CtlC CtlOffice CtlVBIDE CtlWord9 Log Math Strings Meta Dialog Services SqlDrivers Fonts Ports Stores Converters Printers Sequencers Models Views Printing Controllers Properties Mechanisms Containers Documents Windows SqlDB MyMedunion# ~ Библиотека собирается, и документ генерирует, но вот к базе данных не обращается. Вроде это и логично, поскольку забыл сам SqlOdbc3. Пробую добавить HostRegistry HostFonts HostPorts OleData HostMechanisms HostWindows SqlOdbc3. Код: DevLinker.LinkDll med.dll := Kernel+ Files HostFiles Dates CtlT CtlC CtlOffice CtlVBIDE CtlWord9 Log Math Strings Meta Dialog Services SqlDrivers Fonts Ports Stores Converters Printers Sequencers Models Views Printing Controllers Properties Mechanisms Containers Documents Windows HostRegistry HostFonts HostPorts OleData HostMechanisms HostWindows SqlOdbc3 SqlDB MyMedunion# ~ И при обращении к библиотеке... command error: code file for med.dll not found Хотя библиотека присутствует в рабочей папке. Подскажите, пожалуйста, в чем может быть проблема? |
Автор: | Евгений Темиргалеев [ Среда, 10 Ноябрь, 2010 13:22 ] |
Заголовок сообщения: | Re: Сборка библиотеки с функциями SQL |
А откуда и как Вы обращаетесь к библиотеке? |
Автор: | Иван Денисов [ Среда, 10 Ноябрь, 2010 15:39 ] | ||
Заголовок сообщения: | Re: Сборка библиотеки с функциями SQL | ||
Код: MODULE MyMed ["med.dll"]; PROCEDURE WordTest*(): INTEGER; PROCEDURE SqlTest*(): INTEGER; END MyMed. Код: MODULE MyDlltest;
IMPORT StdLog, MyMed; PROCEDURE Do*; BEGIN StdLog.Int(MyMed.WordTest()); StdLog.Ln; StdLog.Int(MyMed.SqlTest()); StdLog.Ln; END Do; BEGIN END MyDlltest.
|
Автор: | Иван Денисов [ Четверг, 18 Ноябрь, 2010 19:47 ] |
Заголовок сообщения: | Re: Сборка библиотеки с функциями SQL |
Получилось собрать библиотеку с функциями SQL от BlackBox! Код: MODULE MyDll; IMPORT SqlDB; VAR db: SqlDB.Database; PROCEDURE Init (id, password, datasource: ARRAY OF CHAR): INTEGER; VAR res: INTEGER; BEGIN SqlDB.OpenDatabase('SqlOdbc', id, password, datasource, SqlDB.sync, SqlDB.showErrors, db, res); RETURN res END Init; PROCEDURE Query (db: SqlDB.Database; IN statement: ARRAY OF CHAR; OUT t: SqlDB.Table); BEGIN ASSERT(db # NIL, 21); t := db.NewTable(); t.Exec(statement); END Query; PROCEDURE Start (): INTEGER; VAR res: INTEGER; BEGIN res := Init("user", "password", "myhost"); IF res = 0 THEN RETURN 0 ELSE RETURN res END END Start; PROCEDURE discount*(): INTEGER; VAR res: INTEGER; t: SqlDB.Table; BEGIN res := Start(); IF db # NIL THEN Query(db, "SELECT * FROM siteusers", t); RETURN t.rows END; RETURN res END discount; END MyDll. DevLinker.LinkDll sql.dll := Kernel+ Dates Files HostFiles Log Math Strings Meta Dialog Services Fonts Ports Stores Converters Printers Sequencers Models Views Printing Controllers Properties Mechanisms Containers Documents Windows SqlDrivers HostRegistry HostFonts HostPorts OleData HostMechanisms HostWindows SqlOdbc SqlDB MyDll # ~ Но в HostRegistry надо закомментировать строку одну в разделе инициализации. Код: Dialog.appName := name$; Dialog.version := 16; (* Dialog.Call("Startup.Setup", "", res); *) ReadMeasure Проверил в Lazarus, все работает без ошибки теперь, тоже вставлю код, может пригодится кому. Код: unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; a: integer; b: real; implementation function discount(): integer; cdecl; external 'sql'; { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin a := discount(); Edit1.Text := IntToStr(a); end; initialization {$I unit1.lrs} end. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |