AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Testversion mit Bedingter Compilierung?

Ein Thema von Ares · begonnen am 4. Mär 2008 · letzter Beitrag vom 5. Mär 2008
Antwort Antwort
Ares

Registriert seit: 5. Dez 2002
269 Beiträge
 
#1

Testversion mit Bedingter Compilierung?

  Alt 4. Mär 2008, 16:47
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:
{$DEFINE vollversion}

...

{$IFDEF vollversion}
  TuWasTolles();
{$ELSEIF}
  ShowMessage('Nur in Vollversion');
{ENDIF}
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:

{$I info.inc} Soweit funktioniert das prima, ABER:
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:
unit ProgrammB.pas
{$DEFINE testversion}
...
uses AllgemeineFunktionen;
...
procedure Arbeite();
begin
  MachWasTolles();
end;
Wie schaffe ich es hier, dass in ProgrammA MachWasTolles() mit alles Funktionen compiliert wird und in ProgrammB ohne die Vollversions-Funktionen?

Habt ihr hierfür eine Idee?

Besten Dank
Ares
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.889 Beiträge
 
Delphi 12 Athens
 
#2

Re: Testversion mit Bedingter Compilierung?

  Alt 4. Mär 2008, 17:03
Leg Deinen Define TESTVERSION in den Projektoptionen an, dann gilt dieser projektweit.

Hope it helps
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Ares

Registriert seit: 5. Dez 2002
269 Beiträge
 
#3

Re: Testversion mit Bedingter Compilierung?

  Alt 4. Mär 2008, 17:32
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.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.889 Beiträge
 
Delphi 12 Athens
 
#4

Re: Testversion mit Bedingter Compilierung?

  Alt 4. Mär 2008, 17:45
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
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Testversion mit Bedingter Compilierung?

  Alt 4. Mär 2008, 18:09
Zitat von onlinekater:
Delphi speichert das in der .cfg Datei ab. Liegt im Projektverzeichnis und heißt bis auf die andere Extension wie das Projekt.
Falsch. Dort wird es unter anderem abgelegt, aber das ist nur ein Nebenprodukt und wird soweit nur vom Kommandozeilen Pascal Compiler benutzt. Die Optionen stehen im projectname.dof (bis Delphi 7) und danach in der projectname.bdsproj.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.889 Beiträge
 
Delphi 12 Athens
 
#6

Re: Testversion mit Bedingter Compilierung?

  Alt 4. Mär 2008, 18:15
Zitat von Muetze1:
Dort wird es unter anderem abgelegt, aber das ist nur ein Nebenprodukt
Hupps, da hast DU allerdings recht. Bin in dem Fall auch nur durch den dcc auf die cfg-Datei gekommen
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Ares

Registriert seit: 5. Dez 2002
269 Beiträge
 
#7

Re: Testversion mit Bedingter Compilierung?

  Alt 5. Mär 2008, 11:44
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!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#8

Re: Testversion mit Bedingter Compilierung?

  Alt 5. Mär 2008, 12:17
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:07 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