![]() |
Unterschiedliche Units für Debug und Release
Kennt jemand einen Weg wie unterschiedliche Units für das Release und Debug zu händeln ist?
Zur erklärung: Ich habe einen Updater geschrieben in dem eine Unit vorkommt die unterschiedliche Werte (bsp.pfadangaben) zum auslesen hat. Dieses Projekt wird in das jeweilige Hauptprojekt(app), der upzudatenden Application, neu erstellt. (updater für proj X) Beide Projecte sind bis auf eine Unit identisch. -> variable_datas.pas Jedes Hauptprojekt(app) erhält somit seinen eigenen (updater für proj X) mit nur unterschiedlicher variable_datas.pas. Per Knöpfchen im Updater werden die Quellcodedateien, ausser die variable_datas.pas, vom Updater zu (updater für proj X) überschrieben, schreibgeschützt und das (updater für proj X) Projekt mit eigener variable_datas.pas compiliert. Struktur: Updater -- (updater für proj X) mit eigener variable_datas.pas -- (updater für proj Y) mit eigener variable_datas.pas -- (updater für proj Z) mit eigener variable_datas.pas Hauptprojekt(app X ) -- -- (updater für proj X) mit eigener variable_datas.pas Hauptprojekt(app Y ) -- -- (updater für proj Y) mit eigener variable_datas.pas Hauptprojekt(app Z ) -- -- (updater für proj Z) mit eigener variable_datas.pas Ausschnitt Updater variable_datas.pas
Delphi-Quellcode:
unit variable_datas;
interface function give_DATA( s1, s2 :string; i1, i2 :integer ):string; //umgelenkte proceduren und functionen -- diese codes sind nur für den HAUPTUPDATER verfügbar procedure refresh_UPDATERcodes_Link( func, selected_entry, sender_button_number : string); implementation uses unit1; function give_DATA( s1, s2 :string; i1, i2 :integer ):string; begin reult := 'hier mein wert nur für updater' end; refresh_UPDATERcodes( func, selected_entry, sender_button_number ); begin dateien vergleichen, schreibschutz raus, dateien kopieren, schreibschutz rein, projektdatei suchen, compilieren end; procedure refresh_UPDATERcodes_Link( func, selected_entry, sender_button_number : string); begin refresh_UPDATERcodes( func, selected_entry, sender_button_number ); end; end. Ausschnitt updater für proj Y variable_datas.pas
Delphi-Quellcode:
unit variable_datas;
interface function give_DATA( s1, s2 :string; i1, i2 :integer ):string; //umgelenkte proceduren und functionen -- diese codes sind nur für den HAUPTUPDATER verfügbar procedure refresh_UPDATERcodes_Link( func, selected_entry, sender_button_number : string); implementation uses unit1; function give_DATA( s1, s2 :string; i1, i2 :integer ):string; begin reult := 'hier mein wert nur für updater für proj Y' end; procedure refresh_UPDATERcodes_Link( func, selected_entry, sender_button_number : string); begin //nix end; end. Etwas ähnliches schwebt mir nun für die Debugversion und Releaseversion vor. Codes die ich im Debugmodus brauche möchte ich im Releasemodus ins leere laufen lassen. |
AW: Unterschiedliche Units für Debug und Release
Delphi-Quellcode:
oder auch
{$IFDEF DEBUG}
uses MyDebugUnit; {$ELSE} uses MyReleaseUnit; {$ENDIF}
Delphi-Quellcode:
Kann man natürlich auch alles in derselben Unit machen und dort nur die Funktionen unterschiedlich implementieren und in dieselben IFDEFs packen.
uses SomeUnit
{$IFDEF DEBUG} , MyDebugUnit {$ELSE} , MyReleaseUnit {$ENDIF} , SomeOtherUnit; Oder denke ich zu einfach? Grüße Dalai |
AW: Unterschiedliche Units für Debug und Release
ging ja schnell :)
Hab n bissel rumgewürgt aber es scheinbar so hier hinbekommen.
Delphi-Quellcode:
uses .. ..JvExExtCtrls, JvExtComponent, JvCaptionPanel,
//unterschiedliche pas dateien im Debugmodus / releaseModus Release_codes {$IFDEF DEBUG} , Debug_codes {$ELSE} {$ENDIF} ;
Delphi-Quellcode:
unit Release_codes;
interface function release_debug:string; implementation function release_debug:string; begin result := 'kommt von a release unit' end; end.
Delphi-Quellcode:
unit Debug_codes;
interface function release_debug:string; implementation function release_debug:string; begin result := 'kommt von a debug unit' end; end. in der unit1 beim start dann ...
Delphi-Quellcode:
//Form ausrichten
Form1.Width := GetDPI(1200); Form1.Height := GetDPI(800); Form1.Left := Screen.Width - Form1.Width; Form1.Top := screen.Height - (screen.Height - screen.WorkAreaHeight) - form1.Height; tempS := release_debug; form1.Caption := tempS; exit; |
AW: Unterschiedliche Units für Debug und Release
Durch das IFDEF wird ja schon quasi ausgeschlossen, dass die jeweiligen Units direkt in das Projekt aufgenommen werden, sondern lediglich über diese uses-Anweisung eingebunden werden.
In dem Fall lässt sich das auch ohne IFDEF realisieren, in dem man in den Build-Konfigurationen unterschiedliche Suchpfade einträgt und dort jeweils passende Units ablegt, die aber gleich heißen (hier z.B. codes.pas). Natürlich sollte auch sichergestellt werden, dass der DCU-Ausgabepfad für Release und Debug unterschiedlich ist, was aber per Default mit .\$(Platform)\$(Config) ja schon gewährleistet wäre. Das hätte den Vorteil, dass die verwendenden Units beim Wechsel zwischen Debug und Release nicht jedes mal neu übersetzt werden müssen. |
AW: Unterschiedliche Units für Debug und Release
Zitat:
Besser ist
Delphi-Quellcode:
uses .. ..JvExExtCtrls, JvExtComponent, JvCaptionPanel
//unterschiedliche pas dateien im Debugmodus / releaseModus {$IFDEF DEBUG} , Debug_codes {$ELSE}, Release_codes {$ENDIF} ; [EDIT] Ich ziehe IFDEFs den Suchpfaden vor, weil beim Lesen des reinen Codes sofort klar wird, aus welcher Unit der Code kommt. Bei Verwendung von Suchpfaden muss man sich selbige ebenfalls anschauen, um einen Gesamtüberblick des Codes zu bekommen. Gerade ohne IDE ist das eher lästig, in der .dproj rumzugraben. [/EDIT] Grüße Dalai |
AW: Unterschiedliche Units für Debug und Release
@Uwe Raabe , das habe ich schon probiert jedoch ohne erfolg.
@Dalai Ich hab mich schon gewundert warum die IFDEF danach stehen. so richtig versteh ich das nicht. Es funktioniert nur wenn ich das Komma nach JvCaptionPanel wegnehme. {$IFDEF DEBUG} hat doch aber nichts mit dem CaptionPanel zu tun ???
Delphi-Quellcode:
uses ..
JvExExtCtrls, JvExtComponent, JvCaptionPanel //unterschiedliche pas dateien im Debugmodus / releaseModus {$IFDEF DEBUG} , Codes_Debug {$ELSE}, Codes_Release {$ENDIF} ; |
AW: Unterschiedliche Units für Debug und Release
Zitat:
Zitat:
Grüße Dalai |
AW: Unterschiedliche Units für Debug und Release
Ahhh , die Syntax beginnt mit nem Komma oder vor dem Komma steht {} .
Hab ichs jetzt verstanden ? :) Auf jedem danke ich dir. Das werde ich auch für meine anderen Projekte nutzen in dem Tonnen von Test-Proceduren stehen. Die Anwendungen sind dann dementsprechend gross. Die Codes so sauberer zu halten und die Stunden zur Quellcodesäuberung sind damit hinfällig. Angenehmen Sonntag dir :hi: |
AW: Unterschiedliche Units für Debug und Release
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 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