Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   {CONDITIONALS} nach methoden namen (https://www.delphipraxis.net/209731-%7Bconditionals%7D-nach-methoden-namen.html)

KodeZwerg 15. Jan 2022 04:36

Delphi-Version: 10.3 Rio

{CONDITIONALS} nach methoden namen
 
Hallo, ich habe mal zwei Fragen

Ist es legitim wenn man conditionals so einsetzt?
Delphi-Quellcode:
function Foobar: Boolean;
{$IF (DEFINED(WIN32) or DEFINED(WIN64) or DEFINED(MSWINDOWS)) AND NOT DEFINED(WINDOWS)}
  {$DEFINE WINDOWS}
{$ENDIF}
begin
  Result := {$IF DEFINED(WINDOWS}}True{$ELSE}False{$ENDIF};
end;
falls dies legitim ist hier die zweite Frage,
ist es dann nur lokal innerhalb der methode?

himitsu 15. Jan 2022 08:05

AW: {CONDITIONALS} nach methoden namen
 
Legitim .... njoar,

aber warum nicht "sicher" machen?
Wenn hier von irgendwas Anderem vorher WINDOWS definiert ist, auch wenn es kein WIN32/WIN64/MSWINDOWS ist, dann bliebe es dennoch WINDOWS, weil kein UNDEF vorhanden.

Delphi-Quellcode:
//{$IF (DEFINED(WIN32) or DEFINED(WIN64) or DEFINED(MSWINDOWS))}
//{$IF DEFINED(MSWINDOWS)}
{$IFDEF MSWINDOWS}
  {$DEFINE WINDOWS}
{$ELSE}
  {$UNDEF WINDOWS}
{$ENDIF}
Wenn WIN32 oder WIN64, dann ist es eh immer MSWINDOWS.


Natürlich ist sowas immer nur lokal (bis zum Ende der Unit),

aber warum "WINDOWS" nicht direkt mit MS?

OK, fand es auch immer nervig ... es heißt ja auch nicht GGANDROID oder APMACOS :freak:

Uwe Raabe 15. Jan 2022 09:36

AW: {CONDITIONALS} nach methoden namen
 
Legitim ist das auf jeden Fall. Gültig ist es, wie Frank schon erwähnt hat, bis zum Ende der Unit oder bis es explizit wieder abgeschaltet wird. Im Gegensatz zu lokalen Variablen gibt es bei Conditionals keinen Scope auf Methoden.

KodeZwerg 15. Jan 2022 12:01

AW: {CONDITIONALS} nach methoden namen
 
Delphi-Quellcode:
function Foobar: Boolean;
{$IF DEFINED(WINDOWS)}{$DEFINE RESTORE}{$ENDIF}
{$IF (DEFINED(WIN32) or DEFINED(WIN64) or DEFINED(MSWINDOWS)) AND NOT DEFINED(WINDOWS)}
  {$DEFINE WINDOWS}
  {$ELSE}
  {$UNDEF WINDOWS}
{$ENDIF}
begin
  Result := {$IF DEFINED(WINDOWS}}True{$ELSE}False{$ENDIF};
  {$IF DEFINED(RESTORE) AND NOT DEFINED(WINDOWS)}{$DEFINE WINDOWS}{$ELSE}{$UNDEF WINDOWS}{$ENDIF}
  {$IF DEFINED(RESTORE)}{$UNDEF RESTORE}{$ENDIF}
end;
In diese Richtung wird es sich bewegen.
Danke für Eure Hilfe!!

KodeZwerg 15. Jan 2022 12:05

AW: {CONDITIONALS} nach methoden namen
 
Zitat:

Zitat von himitsu (Beitrag 1500619)
aber warum "WINDOWS" nicht direkt mit MS?

Weil ich dieses define in sehr vielen meiner methoden verwende. Auch wenn es doppelt gemoppelt ausschaut (:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz