KONTOPRUEF-Logo
Sehen Sie sich auch mein anderes Produkt an:
myebilanz – die Freeware-eBilanz aus MySQL und CSV!
myebilanz

KtoLibBuffer, die Alternative in Problemfällen

Zeichenketten ("Strings") aus DLLs zurückzuliefern war schon immer ein Problem, weil jede Programmiersprache Strings anders behandelt bzw. verarbeitet (inkl. dynamischer Speicherallozierung und derlei "Spezialeffekte" mehr). Normalerweise funktioniert die char *-Rückgabe problemlos (dieser "Char-Pointer" zeigt dann auf einen sicheren Speicherplatz in der DLL). Allerdings muss die DLL geladen bleiben, solange auf diesen Speicherplatz zugegriffen wird. Für die Fälle, in denen dies nicht sichergestellt werden kann, ist die Variante KtoLibBuffer enthalten, bei denen die DLL String-Ergebnisse in den Speicherbereich des aufrufenden Programms kopiert.

Der Unterschied zu den normalen Funktionen ist wie folgt:

  • Jede Funktion, die einen String als Ergebnis hat, erhält zwei weitere Aufrufparameter: aBuffer, ein Zeiger auf einen Speicherbereich, der im aufrufenden Programm liegt und genug Platz bieten muss, um das Ergebnis aufzunehmen; sowie aBufferLength, die Angabe, wieviele Bytes dieser Speicherbereich groß ist;
  • beim Aufruf der DLL-Funktion kopiert diese das Ergebnis in den angegebenen Speicherbereich (mit einem angehängten Nullbyte);
  • das Funktionsergebnis gibt die Länge des zurückgegebenen Strings an (ohne das abschließende Nullbyte);
  • ist der übergebene Buffer zu klein, um das gesamte Funktionsergebnis aufzunehmen, wird es abgeschnitten und das letzte Zeichen durch … ersetzt (drei Punkte, 0x85).

Die einzelnen Funktionsheader sind wie folgt:

function KtoUpdateGetErrorMessage(const aErrorCode: Integer;
  const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoUpdateGetLastError(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoUpdateGetCurrentFileName(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoUpdateGetNewestFileName(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoUpdateGetDataDirectory(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
procedure KtoUpdateSetDataDirectory(const aDataDirectory: PChar); stdcall;
procedure KtoUpdateSetProxy(const aHost: PChar; const aPort: Integer); stdcall;
procedure KtoUpdateSetTimeout(const aTimeout: Integer); stdcall;
function KtoUpdateServerCheck(const aUser, aPass: PChar;
  const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoUpdateServerDownload(const aUser, aPass: PChar;
  const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoUpdateUnpack(const aFileName: PChar): Integer; stdcall;
function KtoUpdateActivate(const aFileName: PChar): Integer; stdcall;

function KtoPruefGetErrorMessage(const aErrorCode: Integer;
  const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoPruefGetLastError(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoPruefGetVersion(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoPruefGetVersionExtended(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoPruefGetRule(const aBlz: PChar): Integer; stdcall;
function KtoPruefTestBlzKto(const aBlz, aKto: PChar): Integer; stdcall;
function KtoPruefTestIban(const aIban: PChar): Integer; stdcall;
function KtoPruefTestCC(const aCC: PChar): Integer; stdcall;
function KtoPruefGetIban(const aBlz, aKto: PChar;
  const aSpaceFlag: Integer; const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoPruefGetBic(const aBlz: PChar; const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoPruefGetBankName58(const aBlz: PChar; const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoPruefGetBankName20(const aBlz: PChar; const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoPruefGetBankName27(const aBlz: PChar; const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoPruefGetBankPlz(const aBlz: PChar; const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoPruefGetBankOrt(const aBlz: PChar; const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoPruefGetFirstBank(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoPruefGetNextBank(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoPruefGetFirstMatch(const aSearchString: PChar;
  const aFragmentsFlag: Integer; const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoPruefGetNextMatch(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;

function KtoReadGetErrorMessage(const aErrorCode: Integer;
  const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoReadGetLastError(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoReadReadMt940(const aDatabaseType: Integer;
  const aDatabaseName, aUsername, aPasswod, aFileName, aTranslation: PChar;
  const aUserId: Integer): Integer; stdcall;

function KtoDtausGetErrorMessage(const aErrorCode: Integer;
  const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoDtausGetLastError(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoDtausCreateFile(const aFileName, aBlz, aKto, aName, aNumber: PChar;
  const aType, aCheckFlag, aDaysAhead: Integer): Integer; stdcall;
function KtoDtausWriteFile(const aBlz, aKto, aName, aVerwend, aIntern: PChar;
  const aTS, aTSE: Integer; const aBetrag: Currency): Integer; stdcall;
function KtoDtausCloseFile: Integer; stdcall;
function KtoDtausCheckFile(const aFileName: PChar): Integer; stdcall;

function KtoSepaGetErrorMessage(const aErrorCode: Integer;
  const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoSepaGetLastError(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoSepaSetSepaVersion(const aSepaVersion: Integer): Integer; stdcall;
procedure KtoSepaSetBankDays(const aCreditBankOffset, aShortBankOffset, aLongBankOffset: Integer); stdcall;
procedure KtoSepaSetBankHour(const aHour: Integer); stdcall;
function KtoSepaGetShortDueDate(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoSepaGetLongDueDate(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoSepaGetActualDueDate(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoSepaOpenCredit(const aMsgId, aPmtInfId, aInitgPty, aCtgyPurp,
  aAuftraggeber, aIban, aBic: PChar): Integer; stdcall;
function KtoSepaWriteCredit(const aBetrag: Currency;
  const aName, aIban, aBic, aPurp, aRef, aVerwend: PChar): Integer; stdcall;
function KtoSepaCloseCredit(const aFileName: PChar): Integer; stdcall;
function KtoSepaOpenDebit(const aMandant: Integer; const aMsgId, aInitgPty, aCtgyPurp,
  aAuftraggeber, aIban, aBic, aCreditorId: PChar): Integer; stdcall;
function KtoSepaWriteDebit(const aKunde, aSeqTp: Integer; const aBetrag: Currency;
  const aName, aIban, aBic, aPurp, aRef, aVerwend, aMandatRef, aMandatDate: PChar): Integer; stdcall;
function KtoSepaCloseDebit(const aFileName: PChar): Integer; stdcall;
function KtoSepaSetDbDirectory(const aDbDirectory: PChar): Integer; stdcall;
function KtoSepaGetDbDirectory(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoSepaTestDbDirectory: Integer; stdcall;
function KtoSepaGetTempList(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoSepaDeleteTemp(const aMandant: Integer): Integer; stdcall;
function KtoSepaMergeTemp(const aMandant: Integer): Integer; stdcall;
function KtoSepaExportToFile(const aMandant: Integer; const aFileName: PChar): Integer; stdcall;
function KtoSepaImportFromFile(const aMandant: Integer; const aFileName: PChar): Integer; stdcall;
function KtoSepaSepaCommand(const aCommand: PChar; const aPar1, aPar2, aPar3: Integer;
  const aPar4, aPar5, aPar6: PChar): Integer; stdcall;

function KtoSwiftGetErrorMessage(const aErrorCode: Integer;
  const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoSwiftGetLastError(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
procedure KtoSwiftSetProxy(const aHost: PChar; const aPort: Integer); stdcall;
procedure KtoSwiftSetTimeout(const aTimeout: Integer); stdcall;
function KtoSwiftTestBic(const aBic: PChar): Integer; stdcall;

function KtoArbeitGetErrorMessage(const aErrorCode: Integer;
  const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoArbeitGetLastError(const aBuffer: Pointer; const aBufferLength: Integer): Integer; stdcall;
function KtoArbeitArbeitstage(const aYear, aMonth,
  aSaturdaysFlag, aFeiertageSet: Integer): Integer; stdcall;
Sehen Sie sich auch mein anderes Produkt an:
myebilanz – die Freeware-eBilanz aus MySQL und CSV!
myebilanz