OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 17 Сентябрь, 2019 21:53

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Сборка библиотеки с функциями SQL
СообщениеДобавлено: Среда, 10 Ноябрь, 2010 13:13 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2365
Пробую собрать библиотеку для задачи сборки данных из базы данных в файл 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 15:50, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Ноябрь, 2010 13:22 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4489
Откуда: Россия, Орёл
А откуда и как Вы обращаетесь к библиотеке?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Ноябрь, 2010 15:39 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2365
Код:
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.


Вложения:
Комментарий к файлу: Код библиотеки
MyMedunion.txt [3.87 КБ]
Скачиваний: 410
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 18 Ноябрь, 2010 19:47 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2365
Получилось собрать библиотеку с функциями 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.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB