![]() |
Compiler Switch
Hallo,
Ich habe bisher wenige Erfahrungen mit Compiler Switches Delphi, aber ich möchte folgendes realisieren: Während der Entwicklung nutze ich FastMM4 zum MemoryLeaks identifizieren, dazu muss ich die beiden Units FastMM4 und FastMM4Messages einbinden. Ich möchte aber dass die Units nur eingebunden werden wenn ich das Programm in der IDE starte. Gibt es das einen Switch der rausfindet ob das Programm in der IDE gestartet wird oder extern? gruss |
Re: Compiler Switch
Hallo SyntaxError,
Was Du willst geht so nicht! Auch wenn Du "ein Programm in der IDE startest" wir zunächst eine EXE-Datei erstellt, in der alle vorhandenen Units eingebunden sind, und das beinahe unabhäng von der IDE ist. (Noch gibts richtige Programme und nicht dieses Interpreterfutter) Aber Du könntest z.B. so etwas nutzen:
Delphi-Quellcode:
(Ein Blick ins Handbuch kann da nicht schaden)
{$DEFINE TESTUMGEBUNG}
{$IFDEF TESTUMGEBUNG} uses FastMM4,unit1; {$ELSE} uses unit1; {$ENDIF} Gruß K-H |
Re: Compiler Switch
Compilerswitches sind zur Kompilierungszeit aktiv, und da ist es (besser sollte es) egal sein, ob in der IDE oder via DCC32 kompiliert wird.
Eine einfache Abfrage, ob ein Programm in der IDE läuft, kann man über DebugHook>0 durchführen, allerdings sind die Units dann natürlich schon eingebunden. Andererseits kannst Du zB einen Conditional define IN_IDE in den IDE-Projektoptionen definieren und im Source benutzen, mußt dann aber darauf achten, daß die Release- bzw. die DCC32-Version IN_IDE nicht definert. Gruß Gammatester Edit: Wieso erzeugt die Rote Warnung einen leeren Beitrag, der wenn editiert wird nicht leer is?? |
Re: Compiler Switch
Hallo,
Danke für die Antworten! Stimmt, da hab ich mich wohl falsch ausgedrückt, sorry! Das mit dem Conditional ist das was ich meinte, also dass ich das Programm compilieren kann mit und ohne diese Units! |
Re: Compiler Switch
FastMM4 hat eigentlich immer Vorteile, nicht nur zum Debuggen. Der Dreh- und Angelpunkt ist das Configfile von FastMM4, und genau da hab ich angesetzt: Für die Debugversion aktiviere ich die Option "Stackframes erzeugen", und in FastMM4.pas binde ich in Abhängigkeit dieses Compilerswitches dann entweder das Configfile für die Debugkonfiguration ein (mit Memleak-Diagnose usw.) oder das für die Releasekonfiguration, in der FastMM4 einfach nur brav ein flotter Memorymanager ist. Funktioniert wunderbar.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 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