| 
| 
 | Вопрос # 2 568/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!
 Нужно в dll организовать загрузку данных в программу
 Есть модуль: (1)
 создаю dll: (2)
 далее в основной проге пишу: (3)
 
 после использования FreeLibrary(Lib) приводит к ошибке.
 
 подскажите как можно реализовать загрузку данных с использованием dll.
 Приложение:Переключить в обычный режим (1) unit UnitDoc;interface uses classes;Type  TDocItem = class    FCpt: String;    constructor create(S: String);  end;   TDocument = class  private  public    FList: TList;    procedure Add(Item: TDocItem);    constructor Create;    destructor Destroy; override;  end; implementation { TDocument } procedure TDocument.Add(Item: TDocItem);begin  FList.Add(Item)end; constructor TDocument.create;begin  FList:=TList.Create;end; destructor TDocument.destroy;var i: Integer;begin  For i:=0 to FList.Count-1 do TDocItem(FList[i]).Free;  FList.Free;  inherited;end; { TDocItem } constructor TDocItem.create(S: String);begin  FCpt:=Send; end. (2) library TestDll2;uses SysUtils, Classes, UnitDoc, DBTables;{$R *.res}procedure Load(Doc: TDocument); export;var i: integer; T: TTable;begin  T:=TTable.Create(nil);  try    T.DatabaseName := 'DBDEMOS';    T.IndexFieldNames := 'Company';    T.TableName := 'CUSTOMER.DB';    T.Open;    While not T.Eof do begin      Doc.Add(TDocItem.Create(T.Fieldbyname('Company').AsString));      T.Next    end;  finally T.Free end;end; exports Load; beginend. (3) uses UnitDoc; Type  TProcL = procedure(D: TDocument);  procedure TForm1.Button2Click(Sender: TObject);var i, Lib: Integer; S: String; PLoad: TProcL; Doc: TDocument;begin  Doc:=TDocument.Create;  Lib:=LoadLibrary('TestDLL2.dll'); if Lib=0 then halt;  @PLoad:=GetProcAddress(Lib,'Load'); if @PLoad=nil then Halt;  PLoad(Doc);  Button2.Caption:=IntToStr(Doc.FList.Count);  FreeLibrary(Lib);  For i:=0 to Doc.FList.Count-1 do    ListBox1.Items.add(TDocItem(Doc.FList[i]).FCpt);  Doc.Free;end;
|  |   Вопрос задал: Light007 (статус: Посетитель)Вопрос отправлен: 26 марта 2009, 18:26
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 1; последнее сообщение — 26 марта 2009, 18:49; участников в обсуждении: 1. 
|   | Вадим К (статус: Академик), 26 марта 2009, 18:49 [#1]:ещё раз повторяю, где ShareMem? Остальные ошибки я просто молчу. Крайне не рекомендую передавать класс через границу длл/приложение.
 О бде я просто молчу.
 Галочка "подтверждения прочтения" - вселенское зло. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |