Autor Beitrag
C++arsten
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 79



BeitragVerfasst: Fr 26.10.07 21:26 
So bestimme ich die Druckerränder:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure DruckerraenderFestlegen;
var
    PixelsPerInch, PhysPageSize, OffsetStart, PageRes: TPoint;
begin
    Printer.PrinterIndex := Printer.Printers.IndexOf(druckername);
    PixelsPerInch.y := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
    PixelsPerInch.x := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
    Escape(Printer.Handle, GETPHYSPAGESIZE, 0nil, @PhysPageSize);
    Escape(Printer.Handle, GETPRINTINGOFFSET, 0nil, @OffsetStart);
    PageRes.y := GetDeviceCaps(Printer.Handle, VERTRES);
    PageRes.x := GetDeviceCaps(Printer.Handle, HORZRES);
    drucker_oberer_rand := OffsetStart.y / PixelsPerInch.y * 2.54;
    drucker_linker_rand := OffsetStart.x / PixelsPerInch.x * 2.54;
    //drucker_unterer_rand := ((PhysPageSize.y - PageRes.y) / PixelsPerInch.y) - (OffsetStart.y / PixelsPerInch.y) * 2.54;
    //drucker_rechter_rand := ((PhysPageSize.x - PageRes.x) / PixelsPerInch.x) - (OffsetStart.x / PixelsPerInch.x) * 2.54;
end;


Erhalte aber in den Escape-Zeilen immer die Warnung: Unsicherer Code '@-operator'. Kann man das umschreiben?
Danke und Gruß
Carsten
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Fr 26.10.07 21:34 
user profile iconC++arsten hat folgendes geschrieben:
Erhalte aber in den Escape-Zeilen immer die Warnung: Unsicherer Code '@-operator'. Kann man das umschreiben?

Solange du den Code nicht 1:1 in .NET verwenden willst kannst du die Meldung ignorieren. Für Win32 ist die Meldung ohne Bedeutung da es nicht anders geht.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Fr 26.10.07 21:39 
Falls du, um mehr übersichtlichkeit zu bekommen, in dieser Prozedur keine Warnungen mehr sehen willst, kannst du dies über den Compilerschalter "WARNINGS" einstellen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
{$WARNINGS OFF}
Escape ...
Escape ...
{$WARNINGS ON}

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
C++arsten Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 79



BeitragVerfasst: Fr 26.10.07 21:44 
Danke schön für eure Antworten!
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Fr 26.10.07 21:55 
user profile iconJayEff hat folgendes geschrieben:
Falls du, um mehr übersichtlichkeit zu bekommen, in dieser Prozedur keine Warnungen mehr sehen willst, kannst du dies über den Compilerschalter "WARNINGS" einstellen:

Ab D7 kann man das Projektweit über die Projektoptionen gezielt für diese Meldung abschalten.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Fr 26.10.07 22:06 
user profile iconBernhard Geyer hat folgendes geschrieben:
Ab D7 kann man das Projektweit über die Projektoptionen gezielt für diese Meldung abschalten.
Warnungen haben meist Gründe, wesshalb ich dazu tendiere, explizit nur einzelne, unumgängliche Warnungen auszuklammern... Ich denke, eine Warnung einmal zur Kenntnis genommen zu haben ist erstmal kein Fehler ;)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Sa 27.10.07 11:44 
user profile iconJayEff hat folgendes geschrieben:
user profile iconBernhard Geyer hat folgendes geschrieben:
Ab D7 kann man das Projektweit über die Projektoptionen gezielt für diese Meldung abschalten.
Warnungen haben meist Gründe, wesshalb ich dazu tendiere, explizit nur einzelne, unumgängliche Warnungen auszuklammern... Ich denke, eine Warnung einmal zur Kenntnis genommen zu haben ist erstmal kein Fehler ;)

Für alle anderen Warnungen geb ich dir recht. Aber die Warnungen die nur für den VCL-Port relevant sind würde ich erst bei einem Port nach .NET angehen. Aber dort stellt sich eh die Frage was man macht. VCL.NET oder gleich komplett neu WinForms/WPF? Aber das ist ein anderes Thema.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 27.10.07 11:51 
Es reicht meist zu, folgende 3 Zeilen in seinem Source einzubinden.

ausblenden Delphi-Quelltext
1:
2:
3:
            {$WARN UNSAFE_CODE OFF}     // Disable Unsafe Code Warning Messages.
            {$WARN UNSAFE_TYPE OFF}     // Disable Unsafe Type Warning Messages.
            {$WARN UNSAFE_CAST OFF}     // Disable Unsafe TypeCast Warning Messages.


Alternativ: Folgende Dateien herunterladen
omorphia.svn.sf.net/.../Omorphia.config.inc
omorphia.svn.sf.net/...Omorphia.version.inc
omorphia.svn.sf.net/.../Omorphia.verify.inc
und mit
ausblenden Delphi-Quelltext
1:
2:
// Include the Compiler Version and Options Settings
{$I 'Omorphia.config.inc'}

einbinden. Da werden neben den Type-Warnungen noch ein paar andere Dinge eingestellt und zusätzliche Infos (z.B. Compiler, Platform und Bibliothek) aufbereitet.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.