Entwickler-Ecke

Windows API - Compilerwarnung bei @-Operator


C++arsten - Fr 26.10.07 21:26
Titel: Compilerwarnung bei @-Operator
So bestimme ich die Druckerränder:


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 - 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 - 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:

Delphi-Quelltext
1:
2:
3:
4:
{$WARNINGS OFF}
Escape ...
Escape ...
{$WARNINGS ON}


C++arsten - Fr 26.10.07 21:44

Danke schön für eure Antworten!


Bernhard Geyer - 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 - 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 - 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 - Sa 27.10.07 11:51

Es reicht meist zu, folgende 3 Zeilen in seinem Source einzubinden.


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
http://omorphia.svn.sf.net/svnroot/omorphia/trunk/omorphia/source/library/Omorphia.config.inc
http://omorphia.svn.sf.net/svnroot/omorphia/trunk/omorphia/source/library/Omorphia.version.inc
http://omorphia.svn.sf.net/svnroot/omorphia/trunk/omorphia/source/library/Omorphia.verify.inc
und mit

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.