![]() |
Tprinter ist NIL, warum?
hallo zusammen,
mit : DefaultPrnt:=GetDefaultPrinter; printer.printerindex := printer.printers.indexof (DefaultPrnt); benutze ich den Standarddrucker zur Druckausgabe ohne Printdialog. Bei der Zuweisung des Index schmiert das Programm mit SIGSEGV ab. Mit dem Mauszeiger über printers wird dieser als NIL angezeigt. Aber warum? Der gleiche Code in einem anderen Testprogamm funktioniert. Dort wird printer NICHT als NIL angezeigt. Die Unit die verwendet wird ist in beiden Programmen die gleiche. Gruss KH |
AW: Tprinter ist NIL, warum?
Guten Morgen,
ich bin mir nicht sicher, aber sollte der printer nicht vor Benutzung initialisiert werden?
Delphi-Quellcode:
Grüße
printer :=TPrinter.create;
Klaus |
AW: Tprinter ist NIL, warum?
nee, eben nicht :-(
das ist bei Printers nicht nötig, und wird ja auch im funktionierenden Prog nicht gemacht. |
AW: Tprinter ist NIL, warum?
Darum
Delphi-Quellcode:
Jetzt kann ich mir nur noch vorstellen, dass
// Auszug aus der Unit Printers
function Printer: TPrinter; begin if FPrinter = nil then FPrinter := TPrinter.Create; Result := FPrinter; end;
Delphi-Quellcode:
-1 zurückliefert
printer.printers.indexof (DefaultPrnt)
Edit: Nö, auch nicht ... denn wenn
Delphi-Quellcode:
auf -1 gesetzt wird, dann wird automatisch der DefaultPrinter ausgewählt.
Printer.Index
Somit lässt sich dein Code darauf reduzieren, dass du einfach schreibst
Delphi-Quellcode:
Sind überhaupt Drucker installiert und ist auch ein Drucker als Standard gewählt?
Printer.PrinterIndex := -1;
|
AW: Tprinter ist NIL, warum?
Zitat:
Das ändert aber nix daran, dass Printer immer noch NIL istund das Prog daher bei der Zuweisung abschmiert. Und eben nur in einem Prog, im anderen funktionierts ja :-( Und beide laufen auf der selben Maschine, sprich ein Standarddrucker ist gesetzt. |
AW: Tprinter ist NIL, warum?
Dann mit DebugDCUs das Projekt nochmal erzeugen und einen Haltepunkt auf die function Printer setzen.
Dann kannst du sehen, wann die aufgerufen wird und ob da was zugewiesen wird. |
AW: Tprinter ist NIL, warum?
Ich schätze einmal du hast irgendwo selbst oder in einer Unit eine gleichnamige Variable, Property, ... drin.
|
AW: Tprinter ist NIL, warum?
Problem gelöst :-)
Vieleicht hätte ich noch sagen sollen, dass es sich um Lazarus handelt. Da sind dann wohl in der printers einige Unterschiede :-( Ursache des Fehlers war die Unit printer4lazarus. Diese war im funktionierenden Projekt eingebunden, im fehlerhaften nicht. Ist aber zwingend notwendig, damit das Objekt printer ohne explizites create erstellt wird. ich danke euch für eure Hilfe. Gruss KHH |
AW: Tprinter ist NIL, warum?
Zitat:
|
AW: Tprinter ist NIL, warum?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:54 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 by Thomas Breitkreuz