![]() |
XE7 - ZintBarcode Exception
Hallo zusammen,
ich habe folgendes Problem: Ich Verwende in zwei Projekten die ZintBarcode - Komponente. In einem der Projekte lässt sich ein Barcode ohne Fehler erstellen, im anderen Fall kommt es zu einer Exception ("Systemressourcen erschöpft"). Bei der Fehlersuche habe ich den Code auf ein minimum reduziert und die entsprechende dll sowie die nötigen Units direkt aus dem funktionierenden Projektverzeichnis kopiert. Die "Hauptform" enthält nichts weiter als den angefügten Code. Die Exception tritt beim Aufruf von MyBarcode.GetBarcode() auf.
Delphi-Quellcode:
Die Frage ist nun: Wie kann das sein? :-D
procedure THauptForm.FormCreate(Sender: TObject);
var MyBitmap :TBitMap; MyBarcode :TZintBarcode; begin //BarCode zeichnen *********************************************************** MyBarcode := TZintBarcode.Create; MyBarcode.Clear; MyBarcode.Data := '00340311640213278478'; MyBarcode.BarcodeType := tBARCODE_CODE128; MyBarcode.Option3 := 100; MyBarcode.Scale := 1; MyBarcode.GetBarcode(MyBitmap); // MyCanvas.Draw(0,0,MyBitmap); //**************************************************************************** end; Für Tipps wäre ich sehr Dankbar! :) Danke im Voraus canoniac |
AW: XE7 - ZintBarcode Exception
Kann es sein das es daran liegt dass das TBitmap nicht erzeugt ist ?
Delphi-Quellcode:
Rollo
procedure ZeichneBarcode;
var myBmp :TBitMap; myZintBarcode :TZintBarcode; begin myZintBarcode := TZintBarcode.Create; myBmp := TBitmap.Create; myZintBarcode.Clear; myZintBarcode.Data := '00340311640213278478'; myZintBarcode.BarcodeType := tBARCODE_CODE128; myZintBarcode.Option3 := 100; myZintBarcode.Scale := 1; myZintBarcode.GetBarcode(myBmp); Form1.Canvas.Draw(0,0,myBmp); myBmp.Free; myZintBarcode.Free; end; |
AW: XE7 - ZintBarcode Exception
Au...in meinen Projekten ist es natürlich erzeugt.
Delphi-Quellcode:
procedure THauptForm.FormCreate(Sender: TObject);
var MyBitmap :TBitMap; MyBarcode :TZintBarcode; begin //BarCode zeichnen *********************************************************** MyBarcode := TZintBarcode.Create; MyBitmap := TBitMap.Create; MyBarcode.Clear; MyBarcode.Data := '00340311640213278478'; MyBarcode.BarcodeType := tBARCODE_CODE128; MyBarcode.Option3 := 100; MyBarcode.Scale := 1; MyBarcode.GetBarcode(MyBitmap); // MyCanvas.Draw(0,0,MyBitmap); //**************************************************************************** end; |
AW: XE7 - ZintBarcode Exception
Hallöle...:P
Delphi-Quellcode:
...wie es schon Rollo62 sagte. (:wink: erinnert mich immer an
myBmp.Free;
myZintBarcode.Free; ![]() |
AW: XE7 - ZintBarcode Exception
Die Objekte müssen freigegeben werden. Das ist schon klar.
Aber dennoch muss sich ja ein Bitmap erstellen lassen BEVOR das Objekt zerstört wird. Ich habe das an der Stelle dann mal eingefügt - an dem beschriebenen Verhalten ändert sich jedoch nichts... |
AW: XE7 - ZintBarcode Exception
So ungefähr funktioniert es bei mir.
Vielleicht liegts am .Refresh ?
Delphi-Quellcode:
procedure TForm1.ActionQrGenerateSingleExecute;
var bmpQr: TBitmap; picQr: TJpegImage; begin ZintBarcodeComponent1.Barcode.Scale := SpinEditScale.Value / 100.0; ZintBarcodeComponent1.Barcode.Data := strX; ZintBarcodeComponent1.Refresh; // // Get Barcode // bmpQr := TBitmap.Create; picQr := TJpegImage.Create; try ZintBarcodeComponent1.Barcode.GetBarcode(bmpQr); picQr.Assign(bmpQr); picQr.CompressionQuality := 80; picQr.SaveToFile( strFile + '.jpg'); // Save as JPEG finally FreeAndNil(picQr); FreeAndNil(bmpQr); end; end; |
AW: XE7 - ZintBarcode Exception
Danke für den Tipp, leider verursacht der Aufruf von GetBarcode() immernoch eine Exception.
Ist es möglich dass -wie auch immer- unterschiedliche Projekteinstellungen vorliegen? Und wenn das eine Möglichkeit ist, wo finde ich die betreffenden Einstellungen? |
AW: XE7 - ZintBarcode Exception
Könnte das Problem an dem Aufruf im FormCreate-Event liegen?
|
AW: XE7 - ZintBarcode Exception
Das sind die Einstellungen in der Form dazu ...
Bei mir gehts aber um QR-Code.
Delphi-Quellcode:
Rollo
object ZintBarcodeComponent1: TZintBarcodeComponent
Left = 0 Top = 73 Width = 653 Height = 519 Align = alClient Barcode.BarcodeType = tBARCODE_QRCODE Barcode.Data = 'http://example.de' Barcode.Height = 25 Barcode.BorderWidth = 1 Barcode.OutputOptions = [] Barcode.FGColor = clBlack Barcode.BGColor = clWhite Barcode.Option1 = -1 Barcode.Option2 = 0 Barcode.Option3 = 928 Barcode.Rotation = r0 Barcode.ShowHumanReadableText = True Barcode.Stacked = False ExplicitLeft = 232 ExplicitTop = 176 ExplicitWidth = 100 ExplicitHeight = 41 end |
AW: XE7 - ZintBarcode Exception
Vielen Dank, für die Rückmeldungen.
Leider wird mir trotz alle dem immernoch nicht klar wieso der gleiche Code in zwei unterschiedlichen Projekten nicht gleich gut / schlecht funktioniert. Das Problem ließ sich jetzt "lösen" oder eher gesagt umgehen indem ich ein komplett neues Projekt erstellt habe.:gruebel: Könnte mir jemand erläutern wo ich beispielsweise Einstelllungen und Eigenschaften die beim Compilieren, Linken und Erstellen des Projekts zum tragen kommen finde? Ich vermute das die Ursache in einer fehlerhaften oder inkompatiblen Einstellung liegen könnte. Kann das evtl. jemand, im Zusammenhang mit anderen Komponenten, bestätigen? |
AW: XE7 - ZintBarcode Exception
Da drehe ich möglichst wenig dran rum.
In der Hoffnung das Emba schon die perfekten Settings eingestellt hat. Hier und da finde ich mal ein paar Hinweise das man doch etwas optimieren kann, aber selten. Rollo |
AW: XE7 - ZintBarcode Exception
Ich vertrau da auch ebenfalls den Voreinstellungen. Aber die Tatsache, dass das Problem nach der Erstellung eines neuen Projektes verschwindet deutet zumindest darauf hin das irgendwo Unterschiede bestehen müssen. Da aber die Optionen sehr sehr vielfältig sind und ich die meisten nicht kenne dachte ich ihr könntet mir auf die Sprünge helfen...
|
AW: XE7 - ZintBarcode Exception
So ein kleines Update.
Nach einigem Suchen bin ich auf folgendes gekommen: Das Problem hängt mit der Ausrichtung von Records zusammen: Projekt -> Optionen -> Compilieren -> Record Felder Ausrichten dort kann vom einfachen Byte (funktionierte bei mir nicht) bis zum Quad-Word alles mögliche ausgewählt werden. Die beiden Projekte unterschieden sich nur in diesem einen Punkt. Die Einstellung Byte führte dazu, dass die beschriebene Exception auftrat, mit der Einstellung Quad-Word funktionierte dann alles. Es besteht die Möglichkeit diese Ausrichtung für einzelne Abschnitte der Deklaration zu verändern. Eine wirklich praktikable Lösung ist dabei jedoch noch nicht herausgekommen. Vielleicht hilfts ja dem ein oder anderen ;) Canoniac |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:31 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