![]() |
TXPrint
Ich verwende seit Jahren die Komponente TXPrint aus der Zeitschrift Toolbox. Bis jetzt hat sie beste Dienste geleistet. Jetzt will ich die Komponente mit XE6 verwenden. Die Komponente wird in der Tool-Palette angezeigt. Sobald ich aber die Komponente auf meine Form ziehe erscheint die Meldung: Listenindex außerhalb des gültigen Bereichs (-1).
Kann mir bitte wer weiter helfen?? |
AW: TXPrint
Hast du einen Standard-Drucker auf deinem Entwicklungsrechner angelegt?
Hast du einen Link auf den Sourcecode von TXPrint damit man mal einen Blick druaf werfen kann? |
AW: TXPrint
Es sind mehrere Drucker installiert und ein HP-Drucker ist als Standarddrucker definiert
Hier ein Link zum Quellcode der Komponente ![]() |
AW: TXPrint
Es gibt verschiedene Wege den Bug aufzuspüren.
Du erstellst ein neues Projekt und kopierst die Unit XPRINTER.PAS in das Projektverzeichnis und fügst es zum Projekt hinzu. Einen Button auf das Formular setzen und dann:
Delphi-Quellcode:
Mit dem Debugger kannst du dann in TXPrint.Create() hineinsteppen und schauen an welcher Stelle die Exception ausgelöst wird.
procedure TForm1.Button1OnClick(Sender:TObject);
var test : TXPrint; begin test := TXPrint.Create(self); // Breakpoint auf dieser Zeile setzen ShowMessage(test.Printers.Text); test.Free; end; Sollte so der Bug nicht reproduziert werden können, dann kann man die Komponente mit OutputDebugString() präparieren:
Delphi-Quellcode:
Bei jeder Änderung am Sourcecode der Komponente muss man das Package neu kompilieren und installieren.
constructor TXPrint.Create;
begin inherited Create(AOwner); OutputDebugString('Create #0'); DummyCreated:=false; UnrotatedFont:=0; fPrintersInstalled:=PrintersInstalled; OutputDebugString('Create #1'); if fPrintersInstalled>0 then begin Canvas:=Printer.Canvas; Printer.PrinterIndex:=-1; OutputDebugString('Create #2'); end else begin Canvas:=TCanvas.Create; DummyCreated:=true; OutputDebugString('Create #3'); end; PrintOpened:=false; pLogPixelsX:=300; { angenommene Werte als Default } pLogPixelsY:=300; k:=1; OutputDebugString('Create #4'); end; Die Debugmeldung sieht man im Ereignisprotokoll (Strg+Alt+V) oder man verwendet das Tool ![]() So kann man Schritt für Schritt das Problem immer mehr einkreisen. |
AW: TXPrint
Danke für den Tipp
Ich habe das kleine Programm geschrieben und im Debugmodus laufen lassen. Nach einigen Minuten auf der F7 Taste kam der Fehler EStringListError in WindowsAPIs.inc Die Komponente hat die Prozeduren Create, PrintersInstalled und Destroy fehlerfrei durchgeführt. Unmittelbar nach Beendigung der Destroy-proc kommt der Fehler ohne eine weitere Procedure aufzurufen. Vielleicht kannst du mir noch weiterhelfen Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:16 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