![]() |
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
Viele Grüße, Florian |
AW: Träume, Wünsche und Wahnvorstellungen...
Helper für einfache Typen/Interfaces
und Operatoren/Generics für Helper ... das wäre mal geil |
AW: Träume, Wünsche und Wahnvorstellungen...
Zitat:
|
AW: Träume, Wünsche und Wahnvorstellungen...
doppelt geil? :oops:
|
AW: Träume, Wünsche und Wahnvorstellungen...
Es wird Zeit, dass mal wieder jemand Wahnvorstellungen äußert: :stupid:
Delphi-Quellcode:
{$IFDEF standard OR professional}
FormSchedule.ManualDock(TabSheetSchedule, nil, alNone); FormSchedule.Align := alClient; FormSchedule.Show; {$ENDIF}
Delphi-Quellcode:
EDIT: Und Projektgruppen-Bedingungen, die dann für alle Projekte einer Gruppe gelten.
{$IFDEF (NOT standard) AND (NOT professional)}
FormSchedule.ManualDock(TabSheetSchedule, nil, alNone); FormSchedule.Align := alClient; FormSchedule.Show; {$ENDIF} |
AW: Träume, Wünsche und Wahnvorstellungen...
Da kann Dir der Osterhase ganz schnell helfen:
Delphi-Quellcode:
Zum zweiten Wunsch:
const
Standard = true; Professional = false; [...] {$IF Standard or Professional} ShowMessage('Gute Wahl!'); {$ELSE} ShowMessage('Pech gehabt...'); {$IFEND} [...] {$IF (NOT standard) AND (NOT professional)} ShowMessage('Geizhals!'); {$IFEND} Weshalb packst Du die Bedingungen nicht in eine zentrale pas- oder was-auch-immer-Datei und lädst sie in jedem Projekt (der Gruppe) per {$INCLUDE ...}-Anweisung? |
AW: Träume, Wünsche und Wahnvorstellungen...
Gibt es, zumindestens hatte ich sowas mal im D7 gesehn (glaub ich).
Ich find's nur nicht mehr. :cry: Das war eine Funktion/Prozedur, welche aus 3 oder 4 DWORD-Werten die Personality bestimmt. Wurde/wird von Features geprüft, welche für höhere Personalities bestimmt war, also erst bei Nutzung dieses Features, im laufenden Programm. z.B. man kompiliert irgend ein Datenbankfeature ein, welches erst ab der Enterprise möglich ist, aber man nutzt nur 'ne Personal/Standard. Eventuell wurde es ja ausgebaut und man löst das nun anders. :gruebel: constants: RTLVersion CompilerVersion GPL (Programm wurde so kompiliert, daß die DelphiRTL/VCL mit der GPL kompatibel ist ... stammt wohl irgendwie vom Kylix) compiler switches: UNICODE PUREPASCAL MSWINDOWS POSIX (MACOSX or LINUX) MACOSX LINUX TRIAL_EDITION (k.A. ob das jetzt auch noch gesetzt wird) {$IFDEF TRIAL_EDITION} or {$IF Declared(System._Expired)} _Expired; // show the state of trial licence [edit] ups falsch verstanden.
Delphi-Quellcode:
Es gibt auch noch Declared, für Variablen, Konstanten, Typen und Funktionen/Prozeduren.
{$DEFINE Standard}
{$IF Defined(Standard) or Defined(Professional)} ShowMessage('Gute Wahl!'); {$ELSE} ShowMessage('Pech gehabt...'); {$IFEND} [...] {$IF NOT Defined(Standard) AND NOT Defined(Professional)} ShowMessage('Geizhals!'); {$IFEND}
Delphi-Quellcode:
{$IF not Declared(MyProc)}
procedure MyProc; begin end; {$IFEND} |
AW: Träume, Wünsche und Wahnvorstellungen...
Sagt mal, liebe Leute, gibt es eigentlich inzwischen in Delphi ein {$IFDEF}DelphiXUp{$ENDIF}, das Delphi direkt unterstützt?
Dieses DelphiXUp ist nach meiner Beobachtung immer eine "zurechtgebastelte" Variable, die mit jeder neuen Delphiversion immer wieder aktualisiert werden muß (mit dem Hinzufügen eines neuen, weiteren VERXXX). Schön wäre es (gewesen), wenn jedes Delphi von sich aus erkennen würde, ob die Version(snummer) des Compilers für den Quelltext ausreicht, anhand einer Variablen, die die Mindestvoraussetzung (ab welcher Versionsnummer) des Compilers beinhaltet. Vielleicht gibt es das alles auch schon längst, keine Ahnung. |
AW: Träume, Wünsche und Wahnvorstellungen...
Oh, ich wusste nicht, dass man auch Konstanten auswerten kann...
Thom hat mir schon alle meine Träume erfüllt. :thumb:
Delphi-Quellcode:
const // global definiert, aber gut praktikabel so
CompileModeFree = 0; CompileModeLight = 1; CompileModeStandard = 2; CompileModeProfessional = 3; CompileMode = CompileModeLight; ... procedure TdmlStahliSport.MIPlayerStatistcsClick(Sender: TObject); {$IF CompileMode > CompileModeFree} var PanelPlayer: TodPanelPlayer; {$IFEND} begin {$IF CompileMode > CompileModeFree} if PopupMenuPlayer.PopupComponent is TodPanelPlayer then begin PanelPlayer := PopupMenuPlayer.PopupComponent as TodPanelPlayer; PanelPlayer.odPlayer.Person.ExportVPEGamesOpen; PanelPlayer.odPlayer.Person.ExportVPEGames; PanelPlayer.odPlayer.Person.ExportVPEGamesClose; end; {$IFEND} end; |
AW: Träume, Wünsche und Wahnvorstellungen...
@Delphi-Laie:
Na ja - das "Erkennen", ob ein Feature zur Verfügung steht, besteht ja darin, daß der Compiler anfängt, mehr oder weniger lange Fehlerlisten zu produzieren. Viel schlimmer ist meines Erachtens der Umstand, daß manche Dinge bei älteren Compilerversionen anders oder (noch) fehlerhalft implementiert ist. Das betrifft zum Beispiel die richtige Auswahl überladenen Methoden oder die Behandlung von Variant-Werten. Will (oder muß) man abwärtskompatibel sein, führt meiner Meinung nach nichts am exzessiven Gebrauch von Compilerschaltern vorbei, wobei ja leider nicht alle älteren Versionen die Variable CompilerVersion unterstützen. Damit wäre es dann einfach, Delphi XE4 schon jetzt zu erkennen:
Delphi-Quellcode:
{$IF CompilerVersion=25.0}
ShowMessage('Jetzt habe ich es endlich!'); {$IFEND} @stahli: Das freut mich! :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz