Thema: TXPrint

Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: TXPrint

  Alt 20. Dez 2014, 20:24
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:
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;
Mit dem Debugger kannst du dann in TXPrint.Create() hineinsteppen und schauen an welcher Stelle die Exception ausgelöst wird.

Sollte so der Bug nicht reproduziert werden können, dann kann man die Komponente mit OutputDebugString() präparieren:
Delphi-Quellcode:
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;
Bei jeder Änderung am Sourcecode der Komponente muss man das Package neu kompilieren und installieren.
Die Debugmeldung sieht man im Ereignisprotokoll (Strg+Alt+V) oder man verwendet das Tool DebugView.
So kann man Schritt für Schritt das Problem immer mehr einkreisen.
fork me on Github
  Mit Zitat antworten Zitat