Drucker setzen crasht ~.~
-
ahoi.
Ich habe eine TListBox wo alle installierten Drucker aufgelistet werden.
Ich wähle jetzt einen der Einträge aus und drücke einen Button zum setzen des Druckersvoid __fastcall TForm1::Button1Click(TObject *Sender) { try { char p_drv[MAX_PATH], p_port[MAX_PATH]; THandle devm; Printer()->GetPrinter( ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(), p_drv, p_port, devm ); Printer()->SetPrinter( ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(), p_drv, p_port, devm ); } catch(...) { ShowMessage("Error"); } }In der ListBox stehen 3 Einträge:
\\Nicht_mehr_existierende_Netzwerk\\Fritzfax Drucker
\\Netzwerk\hp deskjet 990c series
\\Anderes_Netzwerk\hp deskjet 5100 seriesSo ich markiere nun Index 1 und drücke Button1, dann crasht er mit Zugriffsverletzung. Wieso ich habe doch das in einer try

Markiere ich Index 2 und drücke Button1, dann funzt es...
...markiere ich anschliessend Index 3 und drücke Button1 funktioniert es auch.Markiere ich aber anschliessend Index 2 so crasht er anschliessend wieder mit Zugriffsverletzung

Das es funktioniert sehe ich daran das im DruckerDialog der jeweilige Drucker ausgewählt wurde.
Das er bei Index 1 einen Fehler geben muss verstehe ich, aber wieso trotz try abstürz?
Und wieso kommt ein Fehler wenn ich von Index 3 auf Index 2 zurück gehe?
-
Hi,
das mit dem try funtzt wenn du deine anwendung außerhalb der ide ausführst.
kevin
-
Stimmt^^.
Aber er beendet dann auch das ganze Programm ... verschwindet einfach.
Und warum von Index 3 auf Index 2 es abstürzt erlärt das nun auch nicht.
-
argh! Kann nicht editieren

Es kommt beim absturz KEINE ShowMessage()! Das sollte doch aber wohl oder nicht?
-
Wo knallt er denn?
Codezeile?
-
Ich setze nur Printer()->Printerindex=[i]ListenIndex[/i];
Der Index kommt aus der Liste - da les ich beim Start alle Drucker ein.