/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
compiler directives?
Fra : Thomas Eg Jørgensen


Dato : 22-08-07 08:59

Hej,

Jeg vil gerne gøre det nemt for mig at skifte mellem en "debug build" og
en "release build". Idag går jeg ind i project-->options og slår f.eks.
TD32 debug info til eller fra alt afhængig af om det er til release
eller til debug...oveni udkommentere jeg kode som jeg udelukkende bruger
i debug-øjemed, f.eks. memcheck og andre værktøjer. Men det er
omstændigt og det hænder, desværre, at jeg glemmer et flag eller en
stump kode et sted...og det er uholdbart når programmet sendes ud til
mange brugere....

Jeg tænkte derfor at jeg ville lave noget i retning af

{$define release}

{$ifdef Release}
{$L-}
{$D-}
etc....
{$else}
{$L+}
{$D+}
etc....
{$endif}

.....i starten af min projekt fil. Når jeg så vil debugge så udkommentere
jeg release-definitionen...MEN, det virker ikke? Er de compiler
directives(f.eks. $L og $D) "lokale" for hver unit? Altså virker de kun
i den unit hvor man skriver dem? Jeg har vel 100+ units i dette projekt
og det vil være et temlig omfattende arbejde at skulle skrive(og
vedligeholde!) dette i samtlige units...

En alternativ metode kunne være at anvende forskellige config-filer til
projektet. Men fidus'en med compiler-direktiverne er at jeg også kan slå
ting som memcheck til og fra ved at modificere en enkelt linje
kode({$define Release} vs. {.$define Release})...og jeg vil meget gerne
nøjes med EN løsning...hvis det da overhovedet er muligt?

Hvordan gør i andre? Er der gode fifs?

Jeg bruger D7 pro hvis det har nogen betydning...

På forhånd tak...

MVH
Thomas


 
 
Uffe Kousgaard (22-08-2007)
Kommentar
Fra : Uffe Kousgaard


Dato : 22-08-07 10:42

"Thomas Eg Jørgensen" <thomas@hest.notaplan.com> wrote in message
news:46cbecbf$0$90264$14726298@news.sunsite.dk...
>
> ....i starten af min projekt fil. Når jeg så vil debugge så udkommentere
> jeg release-definitionen...MEN, det virker ikke? Er de compiler
> directives(f.eks. $L og $D) "lokale" for hver unit? Altså virker de kun i
> den unit hvor man skriver dem?

Ja, gem dine defines i en include fil og skriv øverst i hvert unit:

{$INCLUDE devx.inc}

Min devx.inc ser således:

{$DEFINE Release} // development or release

{$IFDEF Release}
// Compiler Directives for Release Version
{$DebugInfo OFF}
{$LocalSymbols OFF}
{$ReferenceInfo OFF}
{$RangeChecks OFF}
{$OverflowChecks OFF}
{$Optimization ON}
{$ELSE}
// Compiler Directives for Development
{$DebugInfo ON}
{$LocalSymbols ON}
{$ReferenceInfo ON}
{$RangeChecks ON}
{$OverflowChecks ON}
{$Optimization OFF}
{$ENDIF}
{$IOChecks ON}



Thomas Eg Jørgensen (22-08-2007)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 22-08-07 12:55

"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:46cc050a$0$2098$edfadb0f@dtext02.news.tele.dk...
>> ....i starten af min projekt fil. Når jeg så vil debugge så
>> udkommentere jeg release-definitionen...MEN, det virker ikke? Er de
>> compiler directives(f.eks. $L og $D) "lokale" for hver unit? Altså
>> virker de kun i den unit hvor man skriver dem?
>
> Ja, gem dine defines i en include fil og skriv øverst i hvert unit:
>
> [SNIP]
> // Compiler Directives for Development
> {$DebugInfo ON}
> {$LocalSymbols ON}
> {$ReferenceInfo ON}
> {$RangeChecks ON}
> {$OverflowChecks ON}
> {$Optimization OFF}
> {$ENDIF}
>

Super! Havde ikke lige tænkt over at gøre det på denne måde...takker og
bukker!

Et sidespørgsmål: Er det muligt at slå "Include TD32 debug info" til/fra
på samme måde? Synes ikke jeg kan finde noget herom hverken i hjælp
eller via min bedste ven(google)...?

På forhånd tak...

MVH
Thomas


Søg
Reklame
Statistik
Spørgsmål : 177417
Tips : 31962
Nyheder : 719565
Indlæg : 6407866
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste