Welcome, Guest
Username: Password: Remember me
Hier wird Deutsch gesprochen

TOPIC:

Gma.QrCodeNet.Encoding.dll 22 Feb 2022 11:42 #21633

  • lagraf
  • lagraf's Avatar
  • Topic Author


  • Posts: 310
  • Hi Chris
    now I added a reference (like Wolfgang says with right-click) to System.Drawing and placed the USING to another position. A reference to Gma.QrCodeNet.Encoding.dll already is in project. So the errors were reduced to 6.

    I'm using XIDE!

    I installed the X# Plugin for ILSpy, so I can do a X# look at the code inside my Dll. If I cannot deal with this and it's necessary to get some code from it, I would be glad if I can send you this Dll. This time it's only for learning not for a customer project.

    Is it possible to compile and run such a translated C# to X# Dll like the original one? And then make changes in the X# Code? The question is because the vendor no more exists and if the legislator demands changes I could do this by myself instead of throwing it away and implementing a new one in my apps.

    Thank you for your answers!

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 22 Feb 2022 11:45 #21634

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 310
  • Hi Fabrice
    thank you for your example, I will take a look at it!

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 22 Feb 2022 12:30 #21636

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 310
  • Hallo Wolfgang,
    die doppelte Definition von stream und die Referenz bei FileStream{@.. sind klar. Bei den Fehlern XS0120 bin ich davon ausgegangen, dass qrCode := qrEncoder.Encode("Hello World!") ein Object rückliefert.

    Bei deinem Verdacht muss ich dir Recht geben: das liegt daran dass ich bisher allen Produkten von M$ aus dem Weg gegangen bin (mit Ausnahme OS) und hoffe dass ein Befassen damit auch nicht mehr notwendig sein wird. Leider gibt es aber VO Programme von mir, wo eine Einbindung dieser C# Dll notwendig war, weil sich diverse Notwendigkeiten nicht mit VO lösen ließen. Ich hoffe, dass der Gesetzgeber seine Vorgaben an diese Dll nicht ändert, denn dann muss ich mich mit .NET auch nicht befassen.

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 23 Feb 2022 06:17 #21643

    • wriedmann
    • wriedmann's Avatar


  • Posts: 3195
  • Hallo Franz,
    daß man mittlerweile mit VO an viele Grenzen stößt, ist schon klar, und auch erwartbar - schließlich ist das System als solches bereits mehr als 20 Jahre alt, und auch das Win32-API, auf dem VO fusst, ist schon sehr lange nur mehr im Instandhaltungs-Modus.
    Das geht aber bei allen anderen Entwicklungsumgebungen auch nicht anders, siehe Delphi, C++ oder Visual Basic (nicht .NET). So gesehen hält sich VO nicht schlecht.
    Wir haben halt den Vorteil, mit X# die Sprache weitgehend beibehalten zu können.
    Sobald es aber an die Nutzung von .NET DLLs aus anderen Sprachen geht (die von den Tricks der X#--Entwickler wie dem Ignorieren-Können von Namespaces oder statischen Methoden nichts wissen), dann muss man sich unweigerlich auch mit den Konzepten von .NET befassen.
    So im Rückblick war für mich der Plattformwechsel (der dritte in meinem Programmierleben) sicher der herausfordernste, aber IMHO auch der, wo ich am meisten gelernt habe (und immer noch jede Menge zu lernen habe).
    Und da ich der Meinung bin, dass Lernen flexibel erhält, plane ich auch gar keinen Abschied davon, solange ich dazu in der Lage bin.
    Abgesehen davon denke ich, ich muss im X#-Wiki mal eine leichtverdauliche Zusammenfassung der Konzepte für VO-Programmierer schreiben.....
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 23 Feb 2022 06:44 #21644

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 310
  • Hallo Wolfgang,
    mit 3 Plattformwechsel komme ich nicht aus, angefangen habe ich mit Maschinensprache und Assembler auf Computern mit Magnetkonten und 4K Hauptspeicher. Danach CPM, DOS, Unix, VMS, Win mit unterschiedlichen Programmiersprachen und Datenbanken.

    Ich hätte mir für mich halt noch eine Verbesserung an VO gewünscht (ohne .NET), da ich nicht mehr viel auf diesem Gebiet mache und sich daher der Umstellungsaufwand für mich nicht rechnet.

    Das Problem ist nur, dass ich Programme draußen habe, die eine bestimmte C# DLL einsetzen, weil diese aufgrund der Registrierkassenverordnung gesetzlich notwendig war. Solange der Gesetzgeber nichts ändert und VO noch auf irgendwelchen Win Versionen läuft, muss ich mich mit X# daher nicht befassen. Blöd wirds nur, wenn sich da was ändert, denn die Herstellerfirma dieser DLL existiert nicht mehr und kann also nicht nachbessern und dann muß ich entscheiden:
    - die Kunden im Regen stehen lassen, weils Programm nicht mehr einsetzbar ist
    - die Programme umbauen auf eine Schnittstelle eines anderen Herstellers und die DLL damit ersetzen
    - selber in die DLL eingreifen was wegen C# nicht geht, aber ev. mit X# machbar wäre
    LG Franz

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 23 Feb 2022 07:19 #21645

    • wriedmann
    • wriedmann's Avatar


  • Posts: 3195
  • Hallo Franz,
    als Plattform-Wechsel habe ich "nur" den Sprung vom IBM-kompatiblen Mainframe und Cobol zur DOS-Plattform mit C und Clipper gerechnet, dann den Sprung mit VO nach Windows (samt Objekt-Orientierung und Eventsteuerung), und dann eben den Wechsel nach .NET.
    Kleinere Plattformen, mit denen ich mich im auch noch beschäftigt habe, wie HP MPE (Cobol), HP-UX, SCO Unix und Novell Netware (immer C) und ein bisschen HTML und PHP, sowie meine Ausflüge in die System-Administration sind einfach nicht wichtig genug....
    Was die Unterstützung Deiner Kunden betrifft, sehe ich halt zwei Möglichkeiten: entweder Du kniest Dich da selber rein, mit der Bereitschaft, Zeit und Energie ins Lernen zu investieren, oder Du lässt Dir da helfen - diesbezüglich ist das X#-Team definitiv auch "bestechlich", d.h. sie machen auch (bezahlte) Projekt-Arbeiten (und das ist definitiv gut investiertes Geld). Aber es gibt auch sonst genügend Leute hier, die Dir ein paar Stunden weiterhelfen können.
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 23 Feb 2022 07:28 #21646

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 310
  • Hallo Wolfgang,
    ich schau mir demnächst mal das X# Plugin für ILSpy an. Wenn man damit die DLL wirklich so decompilieren kann, dass ein X# Code rauskommt, den man abändert, neu kompiliert und wieder einsetzen kann, dann wäre das ideal. In dem Fall könnte ich dies dann ja als Auftragsarbeit an das X# Team vergeben, sollte sich gesetzlich was ändern.

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 23 Feb 2022 11:44 #21652

    • ic2
    • ic2's Avatar


  • Posts: 1555
  • Hallo Franz,

    lagraf wrote: ich schau mir demnächst mal das X# Plugin für ILSpy an. Wenn man damit die DLL wirklich so decompilieren kann, dass ein X# Code rauskommt, den man abändert, neu kompiliert und wieder einsetzen kann, dann wäre das ideal.


    Ohne ausreichende Kenntnisse von .Net/X#/C# würde ich mich darauf nicht verlassen.

    Dick

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 23 Feb 2022 11:54 #21654

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 310
  • Hallo Wolfgang,
    wenn du was schreiben willst: wie wäre es mit einem X# Buch von Hello World langsam hoch bis zu komplexen Lösungen (so eine Art Cookbook)?
    LG Franz

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 23 Feb 2022 11:58 #21656

    • wriedmann
    • wriedmann's Avatar


  • Posts: 3195
  • Hallo Franz,
    da habe ich gleich mehrere Probleme damit:
    - ich habe nicht die Qualifikation, ein Buch zu schreiben
    - habe ich echt keine Zeit dafür
    - gibt es keinen ausreichenden Markt dafür, um auch nur die Kosten reinzuspielen
    - habe ich auch nicht genug Fachwissen dafür
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 10 Mar 2022 09:33 #21858

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 310
  • Ich habe mir jetzt eine X# Klasse erstellt, die einen QRCode mit der Gma.QrCodeNet.Encoding.dll erstellt und als File speichert:
    USING Gma.QrCodeNet.Encoding
    USING Gma.QrCodeNet.Encoding.Windows.Render
    USING System.IO
    USING System.Drawing
    USING System.Drawing.Imaging
    CLASS TestQrCode
    METHOD Generate(cText AS STRING, nSize AS WORD, cType AS STRING, cFile AS STRING) AS LOGIC PASCAL CLASS TestQrCode
    	// cText		Zu codierender Text
    	// nSize		QRCode Größe 1-255
    	// cType		Output Filetyp PNG, BMP, JPEG
    	// cFile		Output Filename inkl. Pfad ohne Extension
    	// Return	true/false
    	LOCAL qrEncoder AS QREncoder
    	LOCAL qrCode AS QrCode
    	LOCAL renderer AS GraphicsRenderer
    	LOCAL format AS ImageFormat
    	LOCAL cOutput AS STRING
    
    	IF Empty(cText) .or. nSize < 1
    		RETURN FALSE
    	ENDIF
    	
    	DO CASE
    	CASE Lower(cType) == "png"
    		format := ImageFormat.Png
    		cOutput := cFile + ".png"
    	CASE Lower(cType) == "bmp"
    		format := ImageFormat.Bmp
    		cOutput := cFile + ".bmp"
    	OTHERWISE
    		format := ImageFormat.Jpeg
    		cOutput := cFile + ".jpg"
    	ENDCASE
    
    	FErase(cOutput)
    	
    	qrEncoder := QrEncoder{ErrorCorrectionLevel.H}
    	qrCode := qrEncoder:Encode(cText)
    	renderer := GraphicsRenderer{FixedModuleSize{nSize, QuietZoneModules.Two}, System.Drawing.Brushes.Black, System.Drawing.Brushes.White}
    	BEGIN USING VAR stream := FileStream{cOutput, FileMode.Create}
    		renderer:WriteToStream(qrCode:Matrix, format, stream)
    	END USING
    	
    	RETURN iif(File(cOutput), TRUE, FALSE)
    
    END CLASS
    Wie kann ich aus dieser Klasse eine X# DLL erstellen, die ich dann aus VO nutzen kann?

    Please Log in or Create an account to join the conversation.

    Last edit: by lagraf.

    Gma.QrCodeNet.Encoding.dll 10 Mar 2022 10:43 #21863

    • wriedmann
    • wriedmann's Avatar


  • Posts: 3195
  • Hallo Franz,
    siehe hier:
    docs.xsharp.it/doku.php?id=com_module_sample
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 10 Mar 2022 15:44 #21870

    • g.bunzel@domonet.de's Avatar


  • Posts: 83
  • Hallo Franz,

    in dieser FoxPro-Klasse wird eine freie DLL zur Erstellung von QR-Barcodes verwendet:
    github.com/VFPX/FoxBarCodeQR

    Du kannst diese DLL aus der ZIP-Datei einfach mit VO benutzen. Es ist keine Registrierung der DLL erforderlich - einfach die DLL-Datei in das Programmverzeichnis kopieren.

    Wrapper für VO:
    _DLL FUNCTION GenerateFile (cData AS PSZ, cFileName AS PSZ) AS INT PASCAL:BarCodeLibrary.GenerateFile
    _DLL FUNCTION SetConfiguration (nSize AS INT, nImageType AS INT) AS INT PASCAL:BarCodeLibrary.SetConfiguration
    _DLL FUNCTION LibraryVersion () AS PSZ PASCAL:BarCodeLibrary.LibraryVersion


    Die Erstellung eines QR-Codes als Bildatei mit VO ist ein Zweizeiler:

    SetConfiguration (4, 1))
    GenerateFile (String2Psz("Das ist ein Mustertext mit QR-Code"), String2Psz("QR_Muster.jpg"))

    /****
    tnSize: The size of the generated image. Receives an integer between 2 and 12
    2 = 66 x 66 (in pixels)
    3 = 99 x 99
    4 = 132 x 132
    5 = 165 x 165
    6 = 198 x 198
    7 = 231 x 231
    8 = 264 x 264
    9 = 297 x 297
    10 = 330 x 330
    11 = 363 x 363
    12 = 396 x 396

    tnType: The type of the generated image file. Receives an integer between 0 and 2.
    0 = BMP
    1 = JPG
    2 = PNG
    ********/

    HTH

    Gerhard Bunzel

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 11 Mar 2022 06:12 #21874

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 310
  • Gerhard:
    danke für die Info, aber die FoxPro Klasse kenne ich und habe sie testweise auch bereits ausprobiert. Bei meinen X# Versuchen zum Thema QR Code geht es darum, dass die dabei entstehende DLL schrittweise um weitere Funktionen ausgebaut werden soll, die in VO nicht machbar sind.

    Wolfgang:
    Danke, ich schau mir das Beispiel heute noch an.

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 11 Mar 2022 06:25 #21875

    • wriedmann
    • wriedmann's Avatar


  • Posts: 3195
  • Hallo Franz,
    auch wenn die Sache mit dem COM-Objekt nicht sofort klappt: ich ärgere mich hier auch jedes Mal, wenn ich eine neue Bibliothek implementieren muss. Eine bestehende erweitern ist meistens Sache von ein paar Minuten.
    Am besten startest Du mit einem simplen Objekt wie das beschriebene, und baust die QR-Funktion erst ein, wenn das funktioniert.
    Und sonst: einfach melden.
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 11 Mar 2022 08:44 #21876

    • g.bunzel@domonet.de's Avatar


  • Posts: 83
  • Hallo Franz,

    hier gibt es auch noch eine andere DLL - u.a. mit Funktionen zur Rechnungsverwaltung und -validierung:
    www.validacfd.com/

    Gerhard

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 13 Mar 2022 09:51 #21909

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 310
  • Hallo Wolfgang,
    ich habe mir das com_module_sample angesehen, verstehe aber nicht, warum das so aufwändig ist.

    Wenn ich die FoxPro BarCodeLibrary.dll hernehme, dann definiere ich nur 3 externe Functions
    _DLL FUNCTION LibraryVersion () AS PSZ PASCAL:BarCodeLibrary.LibraryVersion
    _DLL FUNCTION GenerateFile (cData AS PSZ, cFileName AS PSZ) AS INT PASCAL:BarCodeLibrary.GenerateFile
    _DLL FUNCTION SetConfiguration (nSize AS INT, nImageType AS INT) AS INT PASCAL:BarCodeLibrary.SetConfiguration
    kopiere die DLL ins Programmverzeichnis und kann diese Funktionsaufrufe direkt verwenden.

    Ist der Unterschied deshalb, weil es in dem einen Fall um Funktionen geht, im anderen um Methoden einer Klasse? Oder ist der Aufwand notwendig, damit ich das tlb File erhalte, mit dem ich mit die Methoden in VO autom. generieren kann?

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 13 Mar 2022 16:05 #21910

    • wriedmann
    • wriedmann's Avatar


  • Posts: 3195
  • Hallo Franz,
    wenn es Dir nur um die Nutzung der DLL für die QR-Codes geht, bist Du mit der Foxpro-Library sicher schneller.
    Wenn es Dir aber darum geht, eine DLL zu schaffen, die im Moment "nur" die QR-Codes erzeugt, aber nach und nach um weitere .NET-Funktionen erweitert werden kann, bzw. die bereits eigenen X#-Code enthält, ist wahrscheinlich die COM-Library besser und den größeren Aufwand wert.
    Das mit der COM-Library ist deswegen komplexer, weil zum eine COM-DLL erzeugt wird, die dann auch noch ohne explizite Registrierung in VO verwendet werden kann (also ohne das entsprechende Modul auf jedem PC, auf dem es verwendet werden soll, zu registrieren).
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 13 Mar 2022 18:48 #21914

    • lagraf
    • lagraf's Avatar
    • Topic Author


  • Posts: 310
  • Hallo Wolfgang,
    grundsätzlich sollte es eine DLL werden die mehr als nur QR Codes enthält.
    Warum muß die Foxpro DLL nicht registriert werden, warum genügt es die Funktionsaufrufe als externe Aufrufe (_DLL Function) in VO zu definieren? Geht das in X# bzw. in .NET nicht?

    Please Log in or Create an account to join the conversation.

    Gma.QrCodeNet.Encoding.dll 13 Mar 2022 18:55 #21915

    • wriedmann
    • wriedmann's Avatar


  • Posts: 3195
  • Hallo Franz,
    klar geht das auch über Funktionsaufrufe, aber da kannst Du keine Objekte erstellen/abfragen, sondern bist auf eine funktionsbasierte Schnittstelle angewiesen, während über die COM-Schnittstelle Objekte "übertragen" werden können, ihre Eigenschaften gesetzt und abgefragt und ihre Methoden aufgerufen werden können.
    Das ist ungefähr so, als gäbe es in den VO-Libraries nur Funktionen, aber keine Klassen.
    Wolfgang
    Wolfgang Riedmann
    Meran, South Tyrol, Italy

    www.riedmann.it - docs.xsharp.it

    Please Log in or Create an account to join the conversation.

    Last edit: by wriedmann.
    Moderators: wriedmann