![]() |
Testversion mit Bedingter Compilierung?
Hallo!
Ich will von einem Programm eine Testversion mit eingeschränktem Funktionsumfang erstellten. Die eingeschränkten funktionen sollen dabei in der Testversion nicht enthalten sein, damit diese nicht per Crack, etc. freigeschaltet werden können:
Delphi-Quellcode:
Da das Programm aus etlichen Dateien besteht habe ich "Vollversion Ja/Nein" ({$DEFINE vollversion}) in einer zentralen Datei definiert und binde diese in alle Dateien des Projektes ein:
{$DEFINE vollversion}
... {$IFDEF vollversion} TuWasTolles(); {$ELSEIF} ShowMessage('Nur in Vollversion'); {ENDIF}
Delphi-Quellcode:
Soweit funktioniert das prima, ABER:
{$I info.inc}
Ich verwende in dem Programm auch eigene Funktionssammlungen, Classen, etc. die ich auch für andere Projekte benutze. Diese Programmteile sollen ebenfalls je nach Voll-/Testversion anders arbeiten. Dabei will ich in jedem Projekt angeben können, ob dieses als Voll- oder als Testversion erstellt werden soll. Also:
Delphi-Quellcode:
unit AllgemeineFunktionen.pas
... procedure MachWasTolles(); begin {$IFDEF vollversion} TuWasTolles(); {$ELSEIF} MachNichts(); {ENDIF} end;
Delphi-Quellcode:
unit ProgrammA.pas
{$DEFINE vollversion} ... uses AllgemeineFunktionen; ... procedure Arbeite(); begin MachWasTolles(); end;
Delphi-Quellcode:
Wie schaffe ich es hier, dass in ProgrammA MachWasTolles() mit alles Funktionen compiliert wird und in ProgrammB ohne die Vollversions-Funktionen?
unit ProgrammB.pas
{$DEFINE testversion} ... uses AllgemeineFunktionen; ... procedure Arbeite(); begin MachWasTolles(); end; Habt ihr hierfür eine Idee? Besten Dank Ares |
Re: Testversion mit Bedingter Compilierung?
Leg Deinen Define TESTVERSION in den Projektoptionen an, dann gilt dieser projektweit.
Hope it helps |
Re: Testversion mit Bedingter Compilierung?
Danke, das werde ich mal versuchen.
Weißt du vielleich schon, ob dass dann nur für Dateien gilt die dem Projekt hinzugefügt wurden oder auch für solche die nur per uses Referenziert sind? In welcher Datei speichert Delphi die Projekt-Optionen ab? Dann könnte ich mir ggf. ein Tool zum schnellen Umschalten basteln. |
Re: Testversion mit Bedingter Compilierung?
Delphi speichert das in der .cfg Datei ab. Liegt im Projektverzeichnis und heißt bis auf die andere Extension wie das Projekt.
Ob nur referenzierte Units, die aber nicht ins Projekt eingefügt wurden, von dieser Einstellung auch betroffen sind, weiß ich nicht. Ein Tip noch zu bedingter Kompilierung: Stell sicher, dass auch wirklich alle Units neu kompiliert werden, da sonst u. U. DCUs eingelint werden, die zuvor mit einem nicht zum Projekt passenden Define kompiliert wurden. Hope it helps |
Re: Testversion mit Bedingter Compilierung?
Zitat:
|
Re: Testversion mit Bedingter Compilierung?
Zitat:
|
Re: Testversion mit Bedingter Compilierung?
Also die Änderung der Optionen wirkt sich auf ALLE Dateien aus die verwendet werden. Egal ob diese zum Projekt gehören oder nur per Uses Referenziert wurden. Soweit so gut.
Besten Dank! |
Re: Testversion mit Bedingter Compilierung?
du könntest in den Funktionssammlungen auch mehrere Versionen der Funktionen bereitstellen
Funktion ABC; Funktion ABC_Test; welche dann passend von deinem Programm aus aufgerufen werden. wenn dann das DEFINE in einer Include-Datei im Programmverzeichnis liegt und diese .INC geändert wird, dann werden automatisch alle davon abhängigen Daeien neu kompiliert. und Da so automatisch die anderen Funktionen in der Sammlungen verwendet werden, wäre ein neukompilieren der Smmlung unnötig. und wie schon gesagt, bei der Variante mit mit DEFINE in den Projektoptionen ... immer schön alles neu erzeugen lassen, damit sich diese Option auch überall auswirkt. nja und als Non-Plus-Ultra ... mir fällt zwar grad nicht der Name ein, aber man kann Delphi(die IDE) erweitern und z.B. über einen Code vorm Compilieren die alten DCUs löschen lassen, dann würde bei DEFINE in Projektoptionen auch immer das aktuelle DEFINe verwendet :angel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 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