Einzelnen Beitrag anzeigen

jus

Registriert seit: 22. Jan 2005
344 Beiträge
 
Delphi 2007 Professional
 
#1

Bitte um Hilfe bei Übersetzung C++->Delphi mit Fremd-DLL

  Alt 4. Mär 2010, 15:20
Hallo,

Ich bin schon am verzweifeln , plage mich schon seit einigen Nächten damit, die DLL anzusprechen. Ich habe eine fremde DLL, die ich verwenden möchte. Es gibt eine Beispieldatei leider nur in VisualC++ 6.0, die die DLL anspricht. Erschwerend kommt noch hinzu, dass anscheinend in diesem Beispiel die Aufrufe in einer Klasse gekapselt sind. Meine Frage ist kann man sowas überhaupt in Delphi ansprechen? Ich habe nämlich keinen Plan wie ich diese 2 Objekte "CPrintInternal" u. "CPrintPresetInternal"in Delphi nachbauen könnte, die anscheinend die DLL verlangt.

Auszug von Header definition PrintSDK.h
Code:
typedef   long         PRINTERROR;
/* Internal Version */
#define PRINT_INTERNAL_VERSION            100      /* means Ver1.00 */

/*****************************************************************************
 *   Base class for Print SDK.
 *****************************************************************************/
class CPrintInternal;               /* Internal data of CPrint */

class PRINT_SDK_DLL_API CPrint {

protected:
   CPrintInternal         *m_pPrintInternal;
   long            m_lInternalVersion;

public:
               CPrint(const long            in_lInternalVersion = PRINT_INTERNAL_VERSION);
   virtual            ~CPrint();

   virtual      PRINTERROR   PRINT_GetData(
                        HPUTIL_STR1023         &out_AlertString,
                        PRINT_DATAINF         &out_PrintData);
};
/*****************************************************************************
 *   Interface class for PRINT SDK
 *****************************************************************************/
class CPrintPresetInternal;         /* Internal data of CPrintPreset */

class PRINT_SDK_DLL_API CPrintPreset : public CPrint {

protected:
   CPrintPresetInternal      *m_pPrintPresetInternal;

public:
                  CPrintPreset(
                        const long   in_lInternalVersion = PRINT_INTERNAL_VERSION);

   virtual               ~CPrintPreset();
};
In der Beispielanwendung wird die DLL folgendermaßen angesprochen:
Code:
#include "PRINTSDK.h"

/*****************************************************************************
 *   CPrintFunc class definition
 *****************************************************************************/
class CPrintFunc
{
private:
   CPrintPreset*         m_pPrintPreset;
   PRINT_PRESETDATA*      m_pPresetItemList;
   long            m_lPresetCount;
   PPrint_PRINTERTYPE      m_PrintPrinterType;   /* Printer Type */

   /*************************************************************************
    * Internal Methods
    *************************************************************************/
   // create CPrintPreset class object
   PRINTERROR   CreatePrintSdk();

public:
   // Constructor
   CPrintFunc();
   // Destructor
   virtual ~CPrintFunc();
        /*************************************************************************
    * Methods
    *************************************************************************/
        // get printdata from PRINT SDK
   PRINTERROR   GetData(
               HPUTIL_STR1023         &out_AlertString,
               PRINT_DATAINF         &out_DataInf);
}

/*****************************************************************************
 *   Internal Methods
 *****************************************************************************/

/*****************************************************************************
 *   ID   = CPrintFunc::CreatePrintSdk()
 *   func   = create CPrintPreset class object
 *****************************************************************************/
PRINTERROR
CPrintFunc::CreatePrintSdk()
{
   if(m_pPrintPreset) return(PRINTERROR_NOERROR);

   try {
      m_pPrintPreset = new CPrintPreset(PRINT_INTERNAL_VERSION);
      if(!m_pPrintPreset) {
         return(PRINTERROR_MEMORY);
      }
   }
   catch(...){
      return(PRINTERROR_MEMORY);
   }
   return(PRINTERROR_NOERROR);
}
/*****************************************************************************
 *   ID   = CPrintFunc::GetData()
 *   func   = get printdata from PRINT SDK
 *****************************************************************************/
PRINTERROR
CPrintFunc::GetData(
   HPUTIL_STR1023      &out_AlertString,
   PRINT_DATAINF      &out_DataInf)
{
   PRINTERROR   lPrintError = PRINTERROR_NOERROR;
   lPrintError = CreatePrintSdk();
   if(lPrintError != PRINTERROR_NOERROR) {
      return(lPrintError);
   }

   lPrintError = m_pPrintPreset->PRINT_GetData(out_AlertString, out_DataInf);
   return(lPrintError);
}
Mein bisheriger Delphi Ansatz folgt dann.
  Mit Zitat antworten Zitat