Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TUTIL32.PAS mit dynamischer DLL Einbindung (https://www.delphipraxis.net/30018-tutil32-pas-mit-dynamischer-dll-einbindung.html)

Stephan 18. Sep 2004 14:13


TUTIL32.PAS mit dynamischer DLL Einbindung
 
Hi,

Ich habe folgende Unit:

Code:
unit TUtil32;

interface

uses Bde, DbiTypes;

{ TUtility (TUVerifyTable) Session Options }
const
  TU_Append_Errors = 1;
  TU_No_Secondary = 2;
  TU_No_Warnings  = 4;
  TU_Header_Only  = 8;
  TU_Dialog_Hide  = 16;
  TU_No_Lock      = 32;

{ TUtility type definitions }
type
  hTUses = Word;
  phTUses = ^hTUses;
  { Verify Callback processes }
  TUVerifyProcess = (TUVerifyHeader, TUVerifyIndex, TUVerifyData, TUVerifySXHeader,
                     TUVerifySXIndex, TUVerifySXData, TUVerifySXIntegrity,
                     TUVerifyTableName, TURebuild);
  { Call back info for Verify Callback function }
  TUVerifyCallBack = record
    PercentDone: word;
    TableName: DBIPath;
    Process: TUVerifyProcess;
    CurrentIndex: word;
    TotalIndex: word;
  end;

{ TUtility functions }
function TUInit(var hTUSession: hTUses): DBIResult; stdcall;

function TUVerifyTable(hTUSession: hTUses;
                       pszTableName,
                       pszDriverType,
                       pszErrTableName,
                       pszPassword: PChar;
                       iOptions: integer;
                       var piErrorLevel: Integer): DBIResult; stdcall;

function TURebuildTable(hTUSession: hTUses;
                        pszTableName,
                        pszDriverType,
                        pszBackupTableName,
                        pszKeyviolName,
                        pszProblemTableName: PChar;
                        pCrDesc: pCRTblDesc): DBIResult; stdcall;

function TUGetCRTblDescCount(hTUSession: hTUses;
                             pszTableName: PChar;
                             var iFldCount,
                             iIdxCount,
                             iSecRecCount,
                             iValChkCount,
                             iRintCount,
                             iOptParams,
                             iOptDataLen: word): DBIResult; stdcall;

function TUFillCRTblDesc(hTUSession: hTUses;
                         pCrDesc: pCRTblDesc;
                         pszTableName,
                         pszPassword: PChar): DBIResult; stdcall;

function TUFillCURProps(hTUSession: hTUses;
                        pszTableName: PChar;
                        var tblProps: CURProps): DBIResult; stdcall;

function TUGetExtTblProps(hTUSession: hTUses;
                          pszTableName: PChar;
                          var pTS: TimeStamp;
                          var pbReadOnly: Boolean): DBIResult; stdcall;

function TUExit(hTUSession: hTUses): DBIResult; stdcall;

function TUGetErrorString(iErrorcode: DBIResult;
                          pszError: PChar): DBIResult; stdcall;

implementation

const
  TU32 = 'TUTIL32.DLL';

function TUInit;             external TU32 name 'TUInit';
function TUVerifyTable;      external TU32 name 'TUVerifyTable';
function TURebuildTable;     external TU32 name 'TURebuildTable';
function TUGetCRTblDescCount; external TU32 name 'TUGetCRTblDescCount';
function TUFillCRTblDesc;    external TU32 name 'TUFillCRTblDesc';
function TUFillCURProps;     external TU32 name 'TUFillCURProps';
function TUGetExtTblProps;   external TU32 name 'TUGetExtTblProps';
function TUExit;             external TU32 name 'TUExit';
function TUGetErrorString;   external TU32 name 'TUGetErrorString';

end.
diese Unit ruft die TUTIL32.DLL statisch auf. Allerdings benötige ich hierfür unbedingt eine dynamische Einbindung. Leider beendet sich mein Programm mit der staatischen Einbindung sofort wenn das Formular in dem die Unit genutzt wird beim Start erstellt wird.

Was muss ich hier genau ändern? Ein kleines Beispiel anhand einer dieser Funktionen wär sehr hilfreich. Dann kann ich die anderen ja dementsprechend abändern.

Stephan 18. Sep 2004 14:32

Re: TUTIL32.PAS mit dynamischer DLL Einbindung
 
Hi,

hat sich erledigt. Hab ein Tutorial unter: http://www.delphi-source.de/tutorials/dlls/?page=8 gefunden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz