AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Zugriff auf Environmental-Variablen mit compiler directives (Pre-Compile-Script) ?
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf Environmental-Variablen mit compiler directives (Pre-Compile-Script) ?

Ein Thema von Rollo62 · begonnen am 29. Apr 2020 · letzter Beitrag vom 30. Apr 2020
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.995 Beiträge
 
Delphi 12 Athens
 
#11

AW: Zugriff auf Environmental-Variablen mit compiler directives (Pre-Compile-Script)

  Alt 29. Apr 2020, 17:30
Sowas naheliegendes "Const User = '$(MyVar)';" hatte ich schon probiert, geht leider nicht.
Was soll denn dabei herauskommen? Der User, der den Compiler angeworfen hat, oder der User, der das Programm gestartet hat?

Ersteres wäre wohl in vielen Fällen der User unter dem der Build-Server läuft.

Solche Pre-Compiler Wünsche müsste doch fast jeder IDE-Nutzer haben.
Scheint nicht wirklich verbreitet zu sein. Vielleicht fehlt mir auch nur das Verständnis mangels eines konkreten Anwendungsfalls.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.901 Beiträge
 
Delphi 12 Athens
 
#12

AW: Zugriff auf Environmental-Variablen mit compiler directives (Pre-Compile-Script)

  Alt 29. Apr 2020, 18:16
Sowas naheliegendes "Const User = '$(MyVar)';" hatte ich schon probiert, geht leider nicht.
Was soll denn dabei herauskommen? Der User, der den Compiler angeworfen hat, oder der User, der das Programm gestartet hat?
Das war ja nur ein Beispiel aus einem FPC Dokument, wie man irgendwelche Werte da rausholt.
http://www.math.uni-leipzig.de/pool/...00000000000000

Zitat:
Write ('This program was compiled at ',{$I %TIME%});
Writeln (' on ',{$I %DATE%});
Writeln ('By ',User);
Writeln ('Compiler version : ',{$I %FPCVERSION%});
Writeln ('Target CPU : ',{$I %FPCTARGET%});

Zitat:
Zitat:
Solche Pre-Compiler Wünsche müsste doch fast jeder IDE-Nutzer haben.
Scheint nicht wirklich verbreitet zu sein. Vielleicht fehlt mir auch nur das Verständnis mangels eines konkreten Anwendungsfalls.
Mit einem richtigen PreCompiler oder PreCompile-Script wäre manches möglich.

Ein Beispiel s.u. von Delphi.Narium, um Version Info settings zu holen und auch für externe Setup-Tools zu setzen.

Ausserdem könnte ein solches Tool einen Versionszähler bauen der wirklich funktioniert.

Bei mehreren Platformen, Konfigurationen kommt bei der Version Info manchmal was Durcheinander.
Das könnte ein PreCompile-Script womöglich setzen und korrigieren.

Auch könnte ein PreCompile-Script vorhandene Konfigurations-Vorlagen mit in die Options und Includes einbinden, und zwar fehlerfrei.
Zum Beispiel nur die Versions-Nummer, die man bei mehreren Konfigurationen mehrfach setzen muss.
Das könnte ein Script womöglich einmalig, und dann für Alle gleich übernehmen.

Es könnte auch Testen ob noch Alle settings richtig sind, oder ob ein Permission-Schalter fehlt,
besser noch setzt er das fehlene gleich.

Es könnte das Signieren und die erforderlichen Key's und so weiter erzeugen, verwalten, setzen.

Ich meine die ganze Handarbeit in den Optionen könnte größtenteils automatisiert werden.

Ich weiss das Du die OptionSets benutzt, das ist auch OK, mir felt da aber das sichere Automatisieren und Konfigurieren von mehreren OptionSets.
Z.B. würde ich gerne OptionsSets für Features anlegen,
OptionSet-Camera : setzt alles Notwendige für Camera in Win/iOS/Android/...
OptionSet-Location: setzt alles Notwendige für Camera in Win/iOS/Android/...
OptionSet-Maps : setzt alles Notwendige für Camera in Win/iOS/Android/...
....

Diese OptionSets wären dann erstmal wiederverwendbar, ich mus mir mein neues Projekt aber von Hand zusammenklicken.

OptionSet-Maps käme s.o. auch schon an eine Grenze, weil zwei individuelle API-Keys (DEBUG/RELEASE) benötigt werden.

Sowas würde ich gerne in einer Projektvorlage unterbringen (mehr oder weniger eine komprimierte .dproj Vorlage), welche dann die ganze .dproj konfiguriert, und bei Bedarf auch Includes o.ä. anpassen kann.

Was ein solches System noch leisten könnte wäre die einfache Migration von einem Projekt zu einem anderen Kunden, indem alle Settings, Zertifikate, API-Keys, etc. umgeschaltet werden.

Von den gefühlt 500 Parameter ändern sich in der Praxis wohl nur 10-20, und genau die wären meine ideale Projekt-Vorlage.

Geändert von Rollo62 (29. Apr 2020 um 18:20 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#13

AW: Zugriff auf Environmental-Variablen mit compiler directives (Pre-Compile-Script)

  Alt 30. Apr 2020, 08:18
Bin mir fast sicher, dass alle Deine Wünsche per Experten erfüllt werden können.

Die Versionsnummer wird bei mir immer per Experte gesetzt und das funktioniert seit Jahren fehlerfrei.

Auch wenn ich meine Exen nicht signiere (für die Hobbyprogrammierung mit Delphi 7 wohl nicht nötig) hab' ich mal 'nen eigenen "Schutzmechanismus" eingebaut. Nach dem Kompilieren wird die fertige Exe um die MD5-Checksumme ihrer Selbst erweitert. Beim Start prüft sie, ob diese MD5-Checksumme noch stimmt. Änderungen durch Viren, Resourceeditoren ... werden so zuverlässig erkannt.

Im BeforeCompile kannst Du eigentlich alle Quelltexte des Projektes parsen, ergänzen, Dateien verändern, Includes einfügen, sofern nicht vorhanden, die Projektoptionen prüfen, anpassen, erweitern, ...
Genaugenommen kannst Du dort wohl so ziemlich alles machen, was Du auch durch "Klickerei" in der IDE erreichen kannst.

Im AfterCompile kannst Du dann alles erledigen, was eben mit einem fertig kompilierten Projekt noch zu "veranstalten" ist.

Klar: Wenn Du per Script und Kommandozeilencompiler, in 'nem Buildprozess ..., Deine Projekte erstellst, sind diese Möglichkeiten nicht gegeben.

Aber ein neues Projekt nach Deinen Wünschen per Experte zu erstellen, die Einstellungen eines vorhanden Projektes zu prüfen, zu korrigieren, zu erweitern ..., sollte durchaus im Rahmen des Möglichen sein.

Wenn man sich mal so anschaut, was z. B. GExperts so alles kann, sieht man, wie Leistungsfähig der Umgang mit Experten ist. Und ich bin mir sicher, dass da die Möglichkeiten von Experten noch bei weitem nicht ausgereizt sind.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 23:40 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