Übersetzungsfrage Delphi -> Builder
-
Hallo,
könnte mir jemand sagen, wie ich die in Delphi geschriebenen unten stehenden Zeilen in C++ übertragen kann? Vor allem die Variablendeklarationen erzeugen bei mir immer wieder Fehlermeldungen, so als wenn es z. B. PDevMode nicht geben würde. Auch das ^. bereitet mir Schwierigkeiten.Kriege das leider einfach nicht hin.

Hier der Code:
procedure TForm1.Button1Click(Sender: TObject); var device,driver,port : array [0..255] of Char; hdmode : THandle; pdmode : PDevMode; begin Printer.PrinterIndex := -1; Printer.GetPrinter(device, driver, port, hdmode); if hdmode <> 0 then begin pdmode := GlobalLock(hdmode); if pdmode <> nil then begin pdmode^.dmFields := pdmode^.dmFields or dm_PaperSize; //Werte gültig für HP LaserJet 2100 PCL6. Schacht 1 = 260 Printer.Orientation := poPortrait; pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize; pDmode^.dmPaperSize := dmPaper_A4; pDMode^.dmDefaultSource := 260; Printer().BeginDoc(); Printer().Canvas.TextOut(100, 100, "Hallo"); Printer().EndDoc(); end; GlobalUnlock(hdmode); end; end;Ich danke für jede Antwort!!!
-
Hallo,
PDevMode ist halt ein irgendwo definierter Typ (wahrscheinlich Pointer auf DevMode). Schau doch mal nach ob du die Deklaration dafür findest. Es scheint mir auf jeden Fall kein Standard zu sein. Das ^ ist die Pascal-Variante einer Pointer-Dereferenzierung.
also mal als BeispielpDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;müsste wohl so aussehen
pDMode->dmFields = pDMode->dmFields | dm_PaperSize;[edit]
Ich hab noch etwas nachgeschaut und den Typen DEVMODE in der WinAPI gefunden. Ich vermute mal das PDevMode ein typedef auf einen Pointer auf DEVMODE ist.
[\edit]Ciao
-
http://www.marquardtnet.info/cecke/quickies.1/1_quicky_30.html
Könnte als Grundlage bessere Dienste leisten