![]() |
freie QR-Code Komponente mit Error Correction Level M
Hallo,
ich suche eine freie QR-Code Komponente, die auch wie ![]() Lg, jus |
AW: frei QR-Code Komponente mit Error correction level M
hallo jus,
ich benutze die ZintLibrary ![]() zusammen mit der Komponenten von TheUnknownOnes ![]() EDIT: Hier noch ein paar interessante Daten zu Correction Level ![]() Das funktioniert super bei mir. Aber was meinst du mit dem M-Code genau ? Ich kenne mich mit den Besonderheiten im Code nicht so aus, vielleicht kannst du mich aufklären. Jedenfalls funktioniert auch die Fehlercorrection gut, wenn du das meinst, und man kann die Qualität einstellen. Rollo |
AW: freie QR-Code Komponente mit Error Correction Level M
@Rollo: zintbarcode schaut sehr interessant aus. Kannst du bitte ein kurzes Code-Beispiel geben, wie man die Bibliothek benutzt, damit ein QR-Code generiert wird?
Lg, jus |
AW: freie QR-Code Komponente mit Error Correction Level M
Hallo jus,
das ist nur ein QuickandDirsty Test, funktioniert aber. Der Barcode wird mit GetBarcode ausgelesen, und dann als JPG ausgegeben, wichtig war dabei die DPI anzugeben, damit es im richtigen Masstab gedruckt wird. Ich habe gesehen das die QR-Code Größe (W x H) sprunghaft anwächst, nicht linear, wenn der Text größer wird. Innerhalb der Sprünge scheint eine feste Größe stehen zu bleiben. Deshalb habe ich meine Links versucht kurz zu halten, um unterschiedliche Codegrößem zu Vermeiden.
Code:
procedure TForm1.ActionQrGenerateSingleExecute(Sender: TObject);
var strX: string; strB: String; strX1: string; iPos: Integer; strL: String; bmpQr: TBitmap; picQr: TJpegImage; begin // ZintBarcodeComponent1.Barcode.Scale := SpinEditScale.Value / 100.0; if FSelected < 0 then FSelected := 0; // Start if FLang < 0 then FLang := 0; // Start strB := EditBaseFolder.Text; if strB <> '' then S4Str_LastChar_Force(strB, '/'); strX1 := MemoQrList.Lines.Strings[FSelected]; strX := strX1; strL := S4Str_Extract( EditLanguages.Text, FLang); // Get Language if (Length(strX) > 0) and ((strX[1] = '\') or (strX[1] = '/')) then Delete(strX, 1, 1); // Remove 1st strX := strB + strX + strL; MemoQrList.SelStart := Pos(strX1, MemoQrList.Text) - 1; MemoQrList.SelLength := Length(strX1); if strX <> '' then S4Str_LastChar_Force(strX, '/'); if (Pos('.htm', strX) <> 0) or (Pos('.html', strX) <> 0) and (S4Str_LastChar(strX) = '/') then begin // S4Str_LastChar_Set; iPos := Length(strX); if iPos <> 0 then Delete(strX, iPos, 1); end; LabelQRCode.Caption := 'QR-Code: ' + strX; ZintBarcodeComponent1.Barcode.Data := strX; ZintBarcodeComponent1.Refresh; // // Get Barcode // bmpQr := TBitmap.Create; picQr := TJpegImage.Create; try strX := S4Str_EndsForce(SaveDialog1.InitialDir, '\'); ZintBarcodeComponent1.Barcode.GetBarcode(bmpQr); picQr.Assign(bmpQr); picQr.CompressionQuality := 80; picQr.SaveToFile( strX + strX1 + strL + '.jpg'); // Save as JPEG finally FreeAndNil(picQr); FreeAndNil(bmpQr); end; if CheckBoxGenAll.Checked then begin JvTimerList1.Events[0].Enabled := True; // Enable Automatic Animate end; Inc(FLang); strL := S4Str_Extract( EditLanguages.Text, FLang); // Get Language if strL = '' then begin FLang := -1; // Start Languages from begin Inc(FSelected); if FSelected < MemoQrList.Lines.Count then Exit; FSelected := -1; JvTimerList1.Events[0].Enabled := False; // Stop Automatic Animate end; end; |
AW: freie QR-Code Komponente mit Error Correction Level M
Liste der Anhänge anzeigen (Anzahl: 3)
@Rollo62: Danke für den Code.
Ich habe da ein mysteriöses Problem und zwar erkennt meine e-banking app von meinem Iphone die von Zint erzeugten QR-Codes nicht. Sehr wohl erkennt es die von Google erzeugten QR-Codes und den QR-Code von der Referenzimplementierung Stuzza. Und zwar geht es um folgenden Text/Payload:
Code:
Ich erzeuge den QR-Code mit Zint mit folgenden Code:
BCD
001 1 SCT ABCDATWW Example with fictive data AT611904300234573201
Delphi-Quellcode:
Wenn ich an Google den QR-Code erzeugen lassen möchte, so schicke ich:
procedure TForm1.Button2Click(Sender: TObject);
var zb : TZintBarcode; bmp : TBitmap; s: String; i: Integer; begin Repaint; bmp := TBitmap.Create; s:=''; for i := 0 to Memo1.Lines.Count - 1 do begin s:=s+Memo1.Lines.Strings[i]+#10; end; SetLength(s,Length(s)-1); zb := TZintBarcode.Create; zb.BarcodeType := tBARCODE_QRCODE; zb.Scale:=3; zb.Option1:=2; // <---Error Correction Level M zb.Option2:=5; // <---Version 5 zb.Data := s; zb.GetBarcode(bmp); Canvas.Draw(10, 10, bmp); bmp.Free; zb.Free; end;
Code:
Hat jemand eine Idee woran es scheitern könnte? :gruebel:
http://chart.apis.google.com/chart?chs=300x300&cht=qr&chld=M&chl=BCD%0A001%0A1%0ASCT%0AABCDATWW%0AExample+with+fictive+data%0AAT611904300234573201&chof=gif
Lg, jus |
AW: freie QR-Code Komponente mit Error Correction Level M
Alle Daten sind in einem Wert kodiert.
Versuche statt
Delphi-Quellcode:
for i := 0 to Memo1.Lines.Count - 1 do
begin s:=s+Memo1.Lines.Strings[i]+#10; end;
Delphi-Quellcode:
s := Memo1.Lines.Text;
|
AW: freie QR-Code Komponente mit Error Correction Level M
Ist verlustbehaftetes JPG nicht das falsche Format für einen Barcode? Wäre komprimiertes BMP oder GIF nicht besser, da verlustfrei? Auch PNG kommt mit scharfen Kanten besser zurecht. Gerade beim skalieren könnte es zu Leseproblemen wegen der Artefakte kommen.
|
AW: freie QR-Code Komponente mit Error Correction Level M
Das kommt nach dazu, aber das Hauptproblem ist das fehlenden Trennkennzeichen.
IM QR-Code mit Zint ist
Code:
kodiert.
BCD0011SCTABCDATWWExample with fictive dataAT611904300234573201
in den anderen
Code:
BCD
001 1 SCT ABCDATWW Example with fictive data AT611904300234573201 |
AW: freie QR-Code Komponente mit Error Correction Level M
Vielleicht kannst du die C++ Zeichen statt LF ausprobieren: also '\n'
Siehe unten der Auszug von hier ftp://ftp.heanet.ie/mirrors/sourcefo...manual_242.pdf (sorry für die schlechte Formatierung, das war Copy-aus-PDF, damits schnell geht). Rollo Zitat:
|
AW: freie QR-Code Komponente mit Error Correction Level M
Das wird ihm hier nichts helfen
Zitat:
|
AW: freie QR-Code Komponente mit Error Correction Level M
Hallo kinzler,
ich hab schon Pferde kxxxxn sehen. Die DLL ist in C/C++ geschrieben, wer weiss wie ZINT das intern interpretiert ? Man könnte natürlich in die Sourcen schauen, wenn man Zeit dafür hat. Aber einen Versuch wär es do Wert stat #0A '≠n' zu schreiben, oder nicht ? Rollo |
AW: freie QR-Code Komponente mit Error Correction Level M
\n ist aber nicht #a sondern #d#a. Das ist vermutlich auch das Problem bei seinem Code
|
AW: freie QR-Code Komponente mit Error Correction Level M
Zitat:
'\n' = $0A = LF '\r' = $0D = CR '\r\n' = $0D$0A = CRLF Weil das schon in den C Libraries so vorhanden ist glaube ich nicht das ein ZINT Programmierer diesen Parser unbedingt selber nachentwicklen wird. Rollo |
AW: freie QR-Code Komponente mit Error Correction Level M
Zint interpretiert schon das #10 Zeichen. Wenn man den erzeugten QR-Code wieder mit einer anderen App einscanne, so bleiben die Umbrüche erhalten. Ich denke, das Problem liegt eher woanders.
Lg, jus |
AW: freie QR-Code Komponente mit Error Correction Level M
Was erwartet den die Bankingsoftware
LF oder CRLF oder nur CR? Mavarik PS: QR-Code Erzeugung ist doch nicht der Faktor... Das lesen ist schon schwieriger... |
AW: freie QR-Code Komponente mit Error Correction Level M
Laut Spezifikation sind LF und CRLF zugelassen.
Code:
Wie schon gesagt, die E-Banking App kann ohne Probleme den von Google erzeugten QR-Code lesen, das auch mit #10 getrennt ist, nur leider nicht von Zint. Kann es irgendwie auch an UTF8 Einstellungen in Zint liegen, wo könnte man da ansetzen? Auf der
Felder werden mit Zeilenschaltung getrennt, wobei die Varianten Lf und CrLf zugelassen sind. Die direkt nach der Servicekennung BCD gefundene Zeilenschaltung muss in allen Zeilen gleich sein.
![]() ![]() |
AW: freie QR-Code Komponente mit Error Correction Level M
Man kann ja auch noch das codeformat angeben
Zeichen/Ziffern/Byte |
AW: freie QR-Code Komponente mit Error Correction Level M
Liste der Anhänge anzeigen (Anzahl: 1)
Heureka ich habs, es lag an "InputMode" den mußte man unbedingt auf UNICODE_MODE umstellen.
Delphi-Quellcode:
Ich habe mal eine Demo Anwendung angehängt. Für den Fall, dass jemand das mal auch benötigt. :-D Funktioniert zumindest mit meiner österreichischen E-Banking App. Interessant wäre, ob es auch in Deutschland funktioniert. Vielleicht kann jemand dazu auch mal ein Feedback geben.
procedure TForm1.Button1Click(Sender: TObject);
var zb : TZintBarcode; s: String; i: Integer; begin s:=''; for i := 0 to Memo1.Lines.Count - 1 do begin s:=s+Memo1.Lines.Strings[i]+#10; end; SetLength(s,Length(s)-1); zb := TZintBarcode.Create; zb.BarcodeType := tBARCODE_QRCODE; zb.Scale:=3; zb.Option1:=2; zb.InputMode:=UNICODE_MODE; //<----sehr wichtig!!! zb.Data := s; zb.GetBarcode(image1.Picture.Bitmap); zb.Free; image1.Refresh; end; Danke nochmals für eure Hilfe. Lg, jus |
AW: freie QR-Code Komponente mit Error Correction Level M
Zitat:
|
AW: freie QR-Code Komponente mit Error Correction Level M
Hallo,
ich muss für ein Delphi 6 - Projekt ebenfalls QR-Codes für SEPA-Zahlungsverkehr erstellen. Der Link zum Delphi-Wrapper für zint von "TheUnknownOnes" funktioniert leider nicht mehr. Weiß jemand wo ich den Wrapper noch downloaden kann bzw. ob er mit Delphi 6 überhaupt funktioniert? Danke! |
AW: freie QR-Code Komponente mit Error Correction Level M
|
AW: freie QR-Code Komponente mit Error Correction Level M
|
AW: freie QR-Code Komponente mit Error Correction Level M
Eigentlich brauchst du nur mein angehängtes Projekt von meinem vorigen
![]() Lg, jus |
AW: freie QR-Code Komponente mit Error Correction Level M
Hallo,
danke für die schnellen Antworten! @Steku: Danke für den Link! @mkinzler: Den Zint Barcode Generator hab ich schon probiert, läuft erst mal nicht mit Delphi 6 @jus: Das hab ich dann auch festgestellt... :-) Danke! LG, Don |
AW: freie QR-Code Komponente mit Error Correction Level M
Übrigens gibt es meines Wissens keine Banking-App, die die Fehlerkorrekturstufe interessiert. Da ist jeweils ein generischer Decoder drin.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz