Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

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

AW: unit von Delphi 2005 nach RIO

  Alt 1. Nov 2020, 10:06
Hallo und willkommen!

Die erste Zeile, die auskommentiert ist, ist korrekt:
Delphi-Quellcode:
if not OpenPrinter(PChar(DeviceName), hPrinter, nil) then
begin
Alternativ ginge es auch so:
Delphi-Quellcode:
if not OpenPrinter(@DeviceName[1], hPrinter, nil) then
begin
Hintergrund ist, dass DeviceName ein Pointer auf den String mit dem Druckernamen ist. Wenn du nun einen Pointer auf DeviceName nimmst, hast du die Adresse des Pointers auf den Druckernamen. Du musst aber die Adresse des Druckernamens übergeben. Deshalb kannst du den Pointer auf das erste Zeichen übergeben.

Es geht daher auch so:
Delphi-Quellcode:
if not OpenPrinter(Pointer(DeviceName), hPrinter, nil) then
begin
Am sinnvollsten ist aber die erste Variante mit dem Cast auf PChar, weil man dann direkt sieht was gemeint ist.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat