AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte RedeemerQR: QR-Code-Encoder-Klasse für Delphi

RedeemerQR: QR-Code-Encoder-Klasse für Delphi

Ein Thema von Redeemer · begonnen am 17. Jan 2020 · letzter Beitrag vom 28. Aug 2020
Antwort Antwort
Seite 2 von 2     12
Redeemer
Registriert seit: 19. Jan 2009
Nach diesem Thread hab ich mir überlegt, dass es seltsam ist, dass Leute 3 Seiten mit DLLs rumeiern, statt so'n Ding einfach mal eben selbst zu schreiben. Also hab ich Donnerstag und Freitag nach Feierabend mal schnell eine nahezu komplette Klasse aus dem Boden gestampft. 100% Delphi. Es fehlt an sich nichts Wichtiges:
  • Kanji werden nicht unterstützt, braucht in Europa keiner. Könnte man mal irgendwann nachtragen, dafür müsste ich mich aber mit Shift JIS auseinandersetzen, was dem zugrundeliegt.
  • ECI (Extended Channel Interpretation) fehlt, gibt kaum Decoder dafür. Gehört zudem nicht unbedingt in die Klasse, da man die ECI-Daten auch als Eingabe übergeben kann.
  • Automatische Aufteilung der Eingabe auf mehrere Streams mit jeweils unterschiedlicher Kodierung ist nicht implementiert. Bringt was, wenn abschnittsweise nur Ziffern oder abschnittsweise nur
Zugrunde liegt meine TRedeemerInheriablePNG, die ich gerne für neue Grafikformate nutze (sie teilt TPNGImage.CreateFromBlank in die Methoden Create und den Rest). LoadFromStream hätte man durch etwas Sinnvolles überschreiben können, am Ende sorgt das wohl für mehr Probleme mit Zeichensätzen. Die Klasse akzeptiert als Eingabedaten ausschließlich einen RawByteString, der Nutzer muss sich über die Daten also selbst Gedanken machen. Nach dem Standard von 2005 soll man Latin-1 nutzen, UTF-8 ist nicht offiziell unterstützt.

Delphi-Quellcode:
var
  QR: TRedeemerQR;
begin
  QR := TRedeemerQR.Create();
  try
    QR.LoadFromString(AnsiString(Edit1.Text), TQRECLevel(ComboBox1.ItemIndex));
    Image1.Picture.Assign(QR);
  finally
    QR.Free();
  end;
Es ist auch eine Klasse enthalten, mit der man allgemein Bitfelder zeichnen kann.

Zur Implementation genutzte Informationen:
- http://www.swetake.com/qrcode/qr1_en.html (allgemeines Verfahren)
- https://www.thonky.com/qr-code-tutorial/introduction (Maskenbewertung und die meisten Konstanten)
- https://en.wikiversity.org/wiki/Reed...al_information (einige weitere Konstanten und Infos über das Interleaving mehrerer auch unterschiedlich großer Reed-Solomon-Blöcke)

DOWNLOAD (enthält auch eine EXE-Demo und deren Sourcecode)
Miniaturansicht angehängter Grafiken
qr.png  
2005 PE, 2009 PA, XE2 PA
 
Benutzerbild von bernau
bernau

 
Delphi 10.3 Rio
 
#11
  Alt 27. Aug 2020, 21:49
Hi Redeemer,


ich habe mir die QR-Code-Komponente angeschaut und muss sagen....... Respekt.

Funktioniert super.

Danke für deine Arbeit.


Gerd
  Mit Zitat antworten Zitat
Rolf Frei

 
Delphi 10.3 Rio
 
#12
  Alt 28. Aug 2020, 15:14
Ja möchte ich nur bestätigen! Wir nutzen die Konponente nun für unserere Swiss-QR Rechnungen und das funktioniert bestens.
  Mit Zitat antworten Zitat
TurboMagic

 
Delphi 10.3 Rio
 
#13
  Alt 28. Aug 2020, 16:22
Hallo Redeemer,

danke für dieses tolle Projekt.
Könntest du uns aber noch einen kleinen Gefallen tun?
Könntest du das bitte bei Github oder einer anderen Open Source Plattform einstellen?
Es scheint ja, dass du das bisher als Open Source veröffentlicht hast.

Dadurch wird das nämlich noch sichtbarer und evtl. können andere Leute Erweiterungen etc. beitragen.

Wenn du Lust hast krame ich auch das Formular reus, mittels dem man es bei GetIt einreichen könnte...

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf