Probleme mit openbarcodes.dll

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • Probleme mit openbarcodes.dll

      Hallo,
      mit dem Benutzen von API und Dll- Funktionen bin ich leider nicht ganz fit und hoffe Ihr könnt mir etwas auf die Sprünge helfen.
      Für die Erstellung von Barcode möchte ich die openbarcodes.dll nutzen, meine Barcodes können bis 15 Zeichen lang sein. Das Erstellen von Code39-Barcodes funktioniert, da aber auch Leerzeichen enthalten sein können, ist das nicht meine erste Wahl. Beim Erstellen von Code128-Barcodes meldet aber die DLL das der Ausgabepuffer zu klein ist, egal wie groß ich den dimensioniere. Ich denke ich habe irgendwo einen Denkfehler, aber wie gesagt ich bin auf dem Gebiet neu.
      Die readme habe ich mal angefügt:

      Quellcode

      1. *** OPENBARCODES DLL ***
      2. // V 1.0.0
      3. // Copyright (C) 2006 (Grandzebu)
      4. // Cette bibliothèque est libre, vous pouvez la redistribuer et/ou la modifier
      5. // selon les termes de la Licence Publique Générale Amoindrie GNU (GNU LGPL)
      6. // Veuillez charger une copie de la license à l'adresse : http://www.gnu.org/licenses/lgpl.html
      7. // Une traduction non officielle se trouve à l'adresse : http://www.linux-france.org/article/these/licence/lgpl/lgpl_monoblock.html
      8. // This library is free, you can redistribute it and/or
      9. // modify it under the terms of the GNU Lesser General Public License (GNU LGPL)
      10. // Please download a license copy at : http://www.gnu.org/licenses/lgpl.html
      11. *** Functions définitions for Visual Basic / Définitions des fonctions pour Visual Basic ***
      12. Private Declare Function Code39 Lib "openbarcodes" (ByVal BufIn As String, ByVal SizeIn As Long, ByVal BufOut As String) As Long
      13. Private Declare Function Ean13 Lib "openbarcodes" (ByVal BufIn As String, ByVal BufOut As String) As Long
      14. Private Declare Function AddOn Lib "openbarcodes" (ByVal BufIn As String, ByVal SizeIn As Long, ByVal BufOut As String) As Long
      15. Private Declare Function Ean8 Lib "openbarcodes" (ByVal BufIn As String, ByVal BufOut As String) As Long
      16. Private Declare Function Code25I Lib "openbarcodes" (ByVal BufIn As String, ByVal SizeIn As Long, ByVal Key As Boolean, ByVal BufOut As String) As Long
      17. Private Declare Function Code128 Lib "openbarcodes" (ByVal BufIn As String, ByVal SizeIn As Long, ByRef SizeOut As Long, ByVal BufOut As String) As Long
      18. *** Functions définitions for C / Définitions des fonctions pour C ***
      19. DWORD Code39(LPCTSTR BufIn, DWORD SizeIn, LPTSTR BufOut);
      20. DWORD Ean13(LPCTSTR BufIn, LPTSTR BufOut);
      21. DWORD AddOn(LPCTSTR BufIn, DWORD SizeIn, LPTSTR BufOut);
      22. DWORD Ean8(LPCTSTR BufIn, LPTSTR BufOut);
      23. DWORD Code25I(LPCTSTR BufIn, DWORD SizeIn, BOOL Key, LPTSTR BufOut);
      24. DWORD Code128(LPCTSTR BufIn, DWORD SizeIn, LPWORD SizeOut, LPTSTR BufOut);
      25. *** Parameters / Paramètres ***
      26. BufIn : Pointer to a string to convert / Pointeur sur une chaine à convertir
      27. SizeIn : Length of the BufIn string / Longueur de la chaine BufIn
      28. BufOut : Pointer to the result string / Pointeur sur la chaine résultat
      29. Key : Add a checksum if true / Ajoute une somme de contrôle si vrai
      30. SizeOut : Pointer to the length of the result string / Pointeur sur la longueur de la chaine résultat
      31. *** Return values / Valeur de retour ***
      32. -1 : Buffer for output string too small - Give to the buffer the size SizeOut and call again the function / Tampon pour la chaine de sortie trop petit - Donner au tampon la taille SizeOut et rappeler la fonction
      33. 0 : No error / Pas d'erreur
      34. 1 : Input string not allowed / Chaine d'entrée non permise
      Alles anzeigen


      mein script geht in kürze so:

      Quellcode

      1. Var bc_in$ ="Eingabe"
      2. Var bc_out$ =""
      3. Var bc_s_in% =Len(bc_in$)
      4. Var bc_s_out% =0
      5. Var erfolg% =0
      6. Declare bereich1#, bereich2#
      7. Dim bereich1#,4
      8. Dim bereich2#,400
      9. Def @bauCode39(3) !"openbarcodes.dll","Code39" // DWORD Code39(LPCTSTR BufIn, DWORD SizeIn, LPTSTR BufOut);
      10. Def @bauCode128(4) !"openbarcodes.dll","Code128" // DWORD Code128(LPCTSTR BufIn, DWORD SizeIn, LPWORD SizeOut, LPTSTR BufOut);
      11. erfolg%=@bauCode39(@Addr(bc_in$),bc_s_in%,bereich2#)
      12. // läuft ohne Probleme
      13. erfolg%=@bauCode128(@Addr(bc_in$),bc_s_in%,bereich1#,bereich2#)
      14. // sagt das der Buffer zu klein ist
      15. Dispose bereich1#
      16. Dispose bereich2#
      Alles anzeigen
    • Die Funktion Code128 erwartet im 3. Parameter einen Zeiger auf die maximal zulässige Länge des Ausgabepuffers. Da Du den Ausgabepuffer mit 400 Bytes gedimmt hast, muß hier auf einen Wert von 400 verwiesen werden. Der Fehler "Puffer zu klein" ist hier also korrekt, da Du nur einen leeren Bereich übergibst. Der hat den Inhalt 0, zeigt also auf nichts und nicht, wie verlangt auf die reale Pufferlänge.

      Quellcode

      1. Entweder:
      2. Long Bereich1#, 0 = 400
      3. erfolg%=@bauCode128(@Addr(bc_in$),bc_s_in%,bereich1#,bereich2#)


      Oder:

      Quellcode

      1. Declare OutLen&
      2. OutLen& = 400
      3. erfolg%=@bauCode128(@Addr(bc_in$),bc_s_in%,Addr(OutLen&),bereich2#)


      Gruß Volkmar
    • Interessant.

      Würdest du vielleicht noch ein Komplettpaket für andere zur Verfügung stellen?
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/65TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 7 8GB/256GB
      jacdelad.bplaced.net