AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi kein Standarddrucker ausgewählt - was tun?
Thema durchsuchen
Ansicht
Themen-Optionen

kein Standarddrucker ausgewählt - was tun?

Ein Thema von moelski · begonnen am 17. Feb 2006 · letzter Beitrag vom 17. Feb 2006
Antwort Antwort
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

kein Standarddrucker ausgewählt - was tun?

  Alt 17. Feb 2006, 07:42
Moin !

Mir haben nun schon ein paar Leute berichtet, dass sie mit unserer Soft folgenden Fehler bekommen:
Zitat:
Zur Zeit ist kein Standard-Drucker gewählt.
Exception class: EPrinter
Soweit sogut, man installiert einen Drucker und die Sache ist durch.

Aber wie kann ich nuun verhindern, dass die Anwendung ins Nirvana geht?

Any hints!?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: kein Standarddrucker ausgewählt - was tun?

  Alt 17. Feb 2006, 07:47
wer verursacht denn den Fehler? Eine Fremdkomponente oder Eurer eigener Code?
Sven Harazim
--
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#3

Re: kein Standarddrucker ausgewählt - was tun?

  Alt 17. Feb 2006, 07:51
Moin !

Tja, gute Frage. Die Stacklist schaut so:
Zitat:
Stack list, generated 15/02/2006 17:04:09
[00435B31] Printers.RaiseError + $11
[00436BA6] Printers.TPrinter.SetToDefaultPrinter + $1BA
[004028AD] System.SysFreeMem + $199
[004028D5] System.SysFreeMem + $1C1
[00402014] System.InternalFreeMem + $1C
[004029B1] System.ResizeInPlace + $C5
[00402C19] System.@ReallocMem + $D
[004028AD] System.SysFreeMem + $199
[004028D5] System.SysFreeMem + $1C1
[004028AD] System.SysFreeMem + $199
[004028D5] System.SysFreeMem + $1C1
[00402BF1] System.@FreeMem + $5
[0040458C] System.TObject.FreeInstance + $C
[00404996] System.@ClassDestroy + $2
[0041E55C] Classes.TList.Destroy + $18
[004045D4] System.TObject.Free + $8
[0058022B] WPRTEDefs.TWPRTFDataBlock.Reformat + $903
[005818BA] WPRTEDefs.TWPRTFStyleCollection.SetOptimizedSearch + $16
[005804C6] WPRTEDefs.TWPRTFDataBlock.Reformat + $B9E
[004028AD] System.SysFreeMem + $199
[004028D5] System.SysFreeMem + $1C1
[00402014] System.InternalFreeMem + $1C
[004029B1] System.ResizeInPlace + $C5
[005F1B09] WPCTRMemo.TWPCustomRtfEdit.StartUpdate (Line 12422, "WPCTRMemo.pas" + 6) + $3
[005E4F1C] WPCTRMemo.TWPCustomRtfEdit.DoBroadcastMsg (Line 4432, "WPCTRMemo.pas" + 42) + $C
[005D1C6E] WPRTEPaint.TWPRTFEnginePaint.BroadcastEvent + $1E
[005D1B35] WPRTEPaint.TWPRTFEnginePaint.ReorderPaintPages + $EB5
[005D1D53] WPRTEPaint.TWPRTFEnginePaint.BroadcastMsg + $DB
[004028AD] System.SysFreeMem + $199
[004028D5] System.SysFreeMem + $1C1
[0040250E] System.TryHarder + $EE
[004026DB] System.SysGetMem + $173
[004026FE] System.SysGetMem + $196
[004366F7] Printers.TPrinter.GetPrinterIndex + $B
[00435FC8] Printers.TPrinter.SetState + $98
[004364DB] Printers.TPrinter.GetHandle + $7
[006541B5] LabelDrucken.TLabelDruckenForm.FormCreate (Line 263, "LabelDrucken.pas" + 11) + $5
[00488701] Forms.TCustomForm.DoCreate + $31
[004883E1] Forms.TCustomForm.AfterConstruction + $11
[004049A3] System.@AfterConstruction + $7
[004883B8] Forms.TCustomForm.Create + $174
[00401599] System.AddBlockAfter + $9
[00401691] System.MergeBlockAfter + $71
[00402364] System.MergeCommit + $68
[0040250E] System.TryHarder + $EE
[004026DB] System.SysGetMem + $173
[004026FE] System.SysGetMem + $196
[0048FCA9] Forms.TApplication.CreateForm + $31
[006A6BCB] LogView.LogView (Line 65, "C:\Delphi\Logview\LogView.dpr" + 20) + $E
Demnach wird es entweder von den WPTools erzeugt, oder von der Unit Printers!?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: kein Standarddrucker ausgewählt - was tun?

  Alt 17. Feb 2006, 07:57
Wenn Du vor dem Zugriff auf einen Drucker prüfst, ob überhaupt einer installiert ist (printers.count = 0), dann kannst Du das Problem abfangen.

meistens geht es ja um Druckvorschausachen (nehm ich mal an). Wenn also kein Drucker installiert ist, dann nimm die Bildschirmauflösung für die Vorschau.

wenn natürlich die WPTools so etwas nicht prüfen, dann muss ich sagen : WPTools -Hausaufgaben nicht gemacht.
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: kein Standarddrucker ausgewählt - was tun?

  Alt 17. Feb 2006, 08:43
Vielleicht hilft folgender Code, den Standarddrucker selbst auszulesen und zur Not auch wieder zu setzen:

Delphi-Quellcode:
unit PrinterSettings;

interface
uses windows, sysutils, classes, dialogs, messages ;

function GetDefaultPrinterA(prnName : PAnsiChar; var bufSize : DWORD ) : BOOL; stdcall;
       external 'winspool.drvname 'GetDefaultPrinterA';

type
 TMyPrinterSettings = class
  private
    function getDefaultPrinterName: string;
    procedure SetDefaultPrinterName(const Value: string);
 public
       property DefaultPrinterName : string read GetDefaultPrinterName write SetDefaultPrinterName ;
 end ;

var
 PS : TMyPrinterSettings ;

implementation
uses printers ;

function TMyPrinterSettings.getDefaultPrinterName:string;
var
  lprnName: PAnsiChar;
  lBufSize: DWord;
begin
  GetMem(lprnName, 1000);
  try
     GetDefaultPrinterA(lprnName, lBufSize);
     Result := lprnName;
  finally
     FreeMem(lprnName);
  end;
end;

procedure TMyPrinterSettings.SetDefaultPrinterName(const Value: string);
var
  Device: array[0..255] of char;
  Driver: array[0..255] of char;
  Port: array[0..255] of char;
  hDeviceMode: THandle;
begin
  if Printer.Printers.IndexOf (Value) >= 0 then begin
      Printer.PrinterIndex := Printer.Printers.IndexOf (Value) ;
      Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
      StrCat( Device, ',');
      StrCat( Device, Driver );
      StrCat( Device, ',');
      StrCat( Device, Port );
      WriteProfileString( 'windows', 'device', Device );
      StrCopy( Device, 'windows' );
      SendMessage( HWND_BROADCAST, WM_WININICHANGE, 0, longint( @Device ));
      sleep (300) ;
  end else begin

  end ;
end;

initialization
   PS := TMyPrinterSettings.create ;
finalization
   PS.free ;
end.
  Mit Zitat antworten Zitat
Antwort Antwort


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:

(?)

LinkBack to this Thread

Erstellt von For Type Datum
Metacrawler - Die Metasuchmaschine. Post #0 Refback 15. Nov 2010 07:24

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:19 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