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

KtoLibBstr, die Alternative für .NET-Anwendungen

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 KtoLibBstr enthalten, bei denen die DLL String-Ergebnisse als "BSTR" im letzten Aufruf-Parameter zurückliefert; ein Funktionsergebnis gibt es dann nicht mehr.

Der Unterschied zu den normalen Funktionen ist wie folgt:

  • Jede Funktion, die einen String als Ergebnis hat, erhält einen weiteren Aufrufparameter: aResult, ein BSTR, der als Referenz übergeben werden muss und der von der DLL gemäß dem Funktionsergebnis befüllt wird;
  • ein Funktionsergebnis im eigentlichen Sinn gibt es nicht ("void").

Es muss wohl so ähnlich ausschauen wie (leider bin ich kein .NET-Experte):

[DllImport(@"KtoLibBstr30.dll", CallingConvention=CallingConvention.StdCall)]
public static extern void KtoPruefGetBankName27(Bankleitzahl mit Marshalling
Informationen; [MarshalAs(UnmanagedType.BStr)]ref string aResult);

Die einzelnen Funktionsheader sind wie folgt ("WideString" = "BSTR"):

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

procedure KtoPruefGetErrorMessage(const aErrorCode: Integer; var aResult: WideString); stdcall;
procedure KtoPruefGetLastError(var aResult: WideString); stdcall;
procedure KtoPruefGetVersion(var aResult: WideString); stdcall;
procedure KtoPruefGetVersionExtended(var aResult: WideString); 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;
procedure KtoPruefGetIban(const aBlz, aKto: PChar;
procedure KtoPruefGetBic(const aBlz: PChar; var aResult: WideString); stdcall;
procedure KtoPruefGetBankName58(const aBlz: PChar; var aResult: WideString); stdcall;
procedure KtoPruefGetBankName20(const aBlz: PChar; var aResult: WideString); stdcall;
procedure KtoPruefGetBankName27(const aBlz: PChar; var aResult: WideString); stdcall;
procedure KtoPruefGetBankPlz(const aBlz: PChar; var aResult: WideString); stdcall;
procedure KtoPruefGetBankOrt(const aBlz: PChar; var aResult: WideString); stdcall;
procedure KtoPruefGetFirstBank(var aResult: WideString); stdcall;
procedure KtoPruefGetNextBank(var aResult: WideString); stdcall;
procedure KtoPruefGetFirstMatch(const aSearchString: PChar;
  const aFragmentsFlag: Integer; var aResult: WideString); stdcall;
procedure KtoPruefGetNextMatch(var aResult: WideString); stdcall;

procedure KtoReadGetErrorMessage(const aErrorCode: Integer; var aResult: WideString); stdcall;
procedure KtoReadGetLastError(var aResult: WideString); stdcall;
function KtoReadReadMt940(const aDatabaseType: Integer;
  const aDatabaseName, aUsername, aPasswod, aFileName, aTranslation: PChar;
  const aUserId: Integer): Integer; stdcall;

procedure KtoDtausGetErrorMessage(const aErrorCode: Integer; var aResult: WideString); stdcall;
procedure KtoDtausGetLastError(var aResult: WideString); 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;

procedure KtoSepaGetErrorMessage(const aErrorCode: Integer; var aResult: WideString); stdcall;
procedure KtoSepaGetLastError(var aResult: WideString); stdcall;
function KtoSepaSetSepaVersion(const aSepaVersion: Integer): Integer; stdcall;
procedure KtoSepaSetBankDays(const aCreditBankOffset, aShortBankOffset, aLongBankOffset: Integer); stdcall;
procedure KtoSepaSetBankHour(const aHour: Integer); stdcall;
procedure KtoSepaGetShortDueDate(var aResult: WideString); stdcall;
procedure KtoSepaGetLongDueDate(var aResult: WideString); stdcall;
procedure KtoSepaGetActualDueDate(var aResult: WideString); 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;
procedure KtoSepaGetDbDirectory(var aResult: WideString); stdcall;
function KtoSepaTestDbDirectory: Integer; stdcall;
procedure KtoSepaGetTempList(var aResult: WideString); 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;

procedure KtoSwiftGetErrorMessage(const aErrorCode: Integer; var aResult: WideString); stdcall;
procedure KtoSwiftGetLastError(var aResult: WideString); stdcall;
procedure KtoSwiftSetProxy(const aHost: PChar; const aPort: Integer); stdcall;
procedure KtoSwiftSetTimeout(const aTimeout: Integer); stdcall;
function KtoSwiftTestBic(const aBic: PChar): Integer; stdcall;

procedure KtoArbeitGetErrorMessage(const aErrorCode: Integer; var aResult: WideString); stdcall;
procedure KtoArbeitGetLastError(var aResult: WideString); 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