AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tprinter ist NIL, warum?

Ein Thema von khh · begonnen am 2. Jun 2011 · letzter Beitrag vom 2. Jun 2011
Antwort Antwort
Seite 1 von 2  1 2      
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#1

Tprinter ist NIL, warum?

  Alt 2. Jun 2011, 10:47
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
Karl-Heinz
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Tprinter ist NIL, warum?

  Alt 2. Jun 2011, 10:52
Guten Morgen,

ich bin mir nicht sicher, aber sollte der printer nicht vor Benutzung initialisiert werden?
printer :=TPrinter.create; Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Tprinter ist NIL, warum?

  Alt 2. Jun 2011, 10:56
nee, eben nicht
das ist bei Printers nicht nötig, und wird ja auch im funktionierenden Prog nicht gemacht.
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Tprinter ist NIL, warum?

  Alt 2. Jun 2011, 11:21
Darum
Delphi-Quellcode:
// Auszug aus der Unit Printers

function Printer: TPrinter;
begin
  if FPrinter = nil then
    FPrinter := TPrinter.Create;
  Result := FPrinter;
end;
Jetzt kann ich mir nur noch vorstellen, dass printer.printers.indexof (DefaultPrnt) -1 zurückliefert

Edit: Nö, auch nicht ... denn wenn Printer.Index auf -1 gesetzt wird, dann wird automatisch der DefaultPrinter ausgewählt.
Somit lässt sich dein Code darauf reduzieren, dass du einfach schreibst
Printer.PrinterIndex := -1; Sind überhaupt Drucker installiert und ist auch ein Drucker als Standard gewählt?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 2. Jun 2011 um 11:29 Uhr)
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Tprinter ist NIL, warum?

  Alt 2. Jun 2011, 11:51
Darum
Delphi-Quellcode:
// Auszug aus der Unit Printers

function Printer: TPrinter;
begin
  if FPrinter = nil then
    FPrinter := TPrinter.Create;
  Result := FPrinter;
end;

Sind überhaupt Drucker installiert und ist auch ein Drucker als Standard gewählt?
ja, den Index direkt zuweisen geht natürlich.
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.
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Tprinter ist NIL, warum?

  Alt 2. Jun 2011, 11:59
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.592 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Tprinter ist NIL, warum?

  Alt 2. Jun 2011, 12:21
Ich schätze einmal du hast irgendwo selbst oder in einer Unit eine gleichnamige Variable, Property, ... drin.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Tprinter ist NIL, warum?

  Alt 2. Jun 2011, 12:39
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
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Tprinter ist NIL, warum?

  Alt 2. Jun 2011, 12:43
Vieleicht hätte ich noch sagen sollen, dass es sich um Lazarus handelt.
Wenn du dein Profil entsprechend bestücken würdest, dann könntest du das nicht mehr vergessen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Tprinter ist NIL, warum?

  Alt 2. Jun 2011, 12:50

Wenn du dein Profil entsprechend bestücken würdest, dann könntest du das nicht mehr vergessen.
umgehend erledigt
Karl-Heinz
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz