Kann es sein, daß in RAVE ein Fehler ist, oder bin ich einfach nur zu dumm?????
In Printer.printers; sind doch die dem System bekannten Drucker (auch Netzwerkdrucker) verzeichnet.
In der Dokumentation steht, daß es eine Funktion geben soll, die den Drucker setzen kann.
"Diese Methode setzt den aktuellen Drucker auf den ersten drucker in Printer.printers, der den angegebenen Substring in seinem Namen hat.
"ExactMatch" bestimmt weiterhin, ob eine genaue Übereinstimmung des Substrings mit dem Druckernamen vorliegen muß, oder nicht.
Wenn kein Drucker mit dem Namen (oder Namensteil) gefunden wurde, so wird der aktuelle Drucker nichte geändert und "false" zurück gegeben." (Von mir frei übersetzt, ich hoffe aber, dem Sinn gemäß richtig.)
function SelectPrinter(SubStr: string; ExactMatch: Boolean): Boolean;
--- demnach müßte folgender Code laufen: ----
Delphi-Quellcode:
RVProject1.Open;
if RvSystem1.BaseReport.SelectPrinter('\\Server1\HPLaser') then //<-- Ist der Netzwerkdrucker "\\Server1\HPLaser da?
begin
RvSystem1.DefaultDest:=rdPrinter; //wenn ja, sofort auf diesen Drucker drucken
RvSystem1.SystemSetups := RvSystem1.SystemSetups - [ssAllowSetup];
end
else
begin
RvSystem1.DefaultDest:=rdPreview; // wenn nein, Auswahl und Preview anzeigen
RvSystem1.SystemSetups := RvSystem1.SystemSetups + [ssAllowSetup];
end;
If RvProject1.Active then
begin
RvProject1.ExecuteReport('Buchungen');
RVProject1.Close;
end;
Delphi compiliert das auch ohne Meldung, aber zur Laufzeit bekomme ich eine Fehlermeldung:
EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 005b3358 in Modul 'Projekt1.Exe'.
Lesen von Adresse 00000025D' aufgetreten
Was zum Kuckuk mache ich falsch????
Kann mir jemand einen Rat geben?