AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas
Thema durchsuchen
Ansicht
Themen-Optionen

Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas

Ein Thema von juergen · begonnen am 6. Okt 2021 · letzter Beitrag vom 29. Okt 2021
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#1

Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas

  Alt 6. Okt 2021, 23:18
Hallo zusammen,

Uwe Raabe hatte im engl. Forum eine mir unbekannte Funktion aufgezeigt. Im Projekt Manager eine Build-Gruppe anlegen um dann z.B. ein 32 Bit- und ein 64 Bit-Compilat mit nur einem Mausklick zu erzeugen. Cool! Siehe hier

Was ich jetzt noch suche, dass die Build-Nummer aus den Projekt-Optionen per Code oder "irgendwie" anders autom. anhand eines Schemas (2stelliges Jahr, 2stellige Kalenderwoche, Wochentag) erzeugt wird. Für heute also 21403.
Das würde meinen Ablauf einfacher und sicherer machen.
Gibt es da eine Möglichkeit?

Vielen Dank im Voraus!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

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

AW: Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas

  Alt 7. Okt 2021, 00:54
Mit Bordmitteln geht das zumindest nicht.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas

  Alt 7. Okt 2021, 06:07
Hallo,
du könntest dir ein kleines Programm schreiben, das deine dproj-Datei entsprechend ändert.
Das bindest Du dann als Prebuild ein.

https://wiert.me/2014/11/20/delphi-p...tbuild-events/

Wie IDE damit klarkommt, wirst Du ja dann sehen.

Du könntest dir auch Batch-Datei schreiben,
die Bildnummer setzt und danach Delphi startet.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas

  Alt 7. Okt 2021, 09:42
Hallo,

wenn man den richtigen Such-Begriff serviert bekommt, könnte ich wohl eine Lösung finden
Mit den Build-Events hatte ich mich noch gar nicht beschäftigt. Muss heute Abend mal schauen ob sich hoika's Vorschlag umsetzen lässt. Das wäre ja super.

Vielen Dank!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#5

AW: Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas

  Alt 7. Okt 2021, 10:32
Mit Bordmitteln geht das zumindest nicht.
Das würde ich so allgemein nicht stehen lassen.

Mit einem BeforeCompileExperten für die IDE lässt sich das mit Sicherheit machen. Mit dem kann man die entsprechenden Infos in die .dof schreiben und der Compiler kann dann die gewünschten Infos in die Exe übernehmen.

Grundgerüst dazu siehe hier: Before- und Aftercompileexperte

Im BeforeCompile kommt man an die Projektoptionen, sowas in der Art:
Delphi-Quellcode:
  Project.ProjectOptions.Values['Build'] := Project.ProjectOptions.Values['Build'] + 1;
  if Project.ProjectOptions.Values['Build'] > 999 then begin
    Project.ProjectOptions.Values['Build'] := 0;
    Project.ProjectOptions.Values['Release'] := Project.ProjectOptions.Values['Release'] + 1;
  end;
  if Project.ProjectOptions.Values['Release'] > 999 then begin
    Project.ProjectOptions.Values['Release'] := 0;
    Project.ProjectOptions.Values['MinorVersion'] := Project.ProjectOptions.Values['MinorVersion'] + 1;
  end;
  if Project.ProjectOptions.Values['MinorVersion'] > 999 then begin
    Project.ProjectOptions.Values['MajorVersion'] := Project.ProjectOptions.Values['MajorVersion'] + 1;
    Project.ProjectOptions.Values['MinorVersion'];
  end;
  Project.ProjectOptions.ModifiedState := True;
Zumindest unter Delphi 7 funktioniert das. Neuer Delphis? Ausprobieren

Die entsprechenden Werte nun nach der gewünschten Logik dort einzufügen, dürfte kein (unlösbares) Problem sein.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

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

AW: Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas

  Alt 7. Okt 2021, 11:12
Mit einem BeforeCompileExperten für die IDE lässt sich das mit Sicherheit machen.
Ein neues Plugin für die IDE rechne ich jetzt nicht wirklich zu den Bordmitteln. Aber ja, mit der OTAPI lässt sich sowas wohl realisieren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas

  Alt 7. Okt 2021, 21:05
Hallo,

so, ich habe den spannenden Ansatz von Delphi.Narium versucht umzusetzen.

Delphi-Quellcode:
PROCEDURE TBeforeCompile.BeforeCompile( CONST Project: IOTAProject; IsCodeInsight: Boolean; VAR Cancel: Boolean );
VAR
  // sl: TStringList;
  lw_my_Build_Number: Word;
BEGIN
  IF NOT IsCodeInsight THEN
  BEGIN
    lw_my_Build_Number := StrToIntDef( FormatDateTime( 'YY', Now ) + RightStr( '0' + IntToStr( WeekOfTheYear( Now ) ), 2 ) + IntToStr( DayOfTheWeek( Now ) ), 11111 );
    Project.ProjectOptions.Values['Build'] := lw_my_Build_Number;
    Project.ProjectOptions.ModifiedState := True;

    ShowMessage( 'Before_Compile_erfolgreich ' + IntToStr( lw_my_Build_Number ) );
  END;
END;
Package installiert. Alles OK.

Wenn ich jetzt ein Projekt compiliere, schlägt auch die Message "Before_Compile_erfolgreich 21404" auf! Bis hierhin sieht für mich also alles in Ordnung aus.
Leider steht in der Build-Nummer nicht mein Wert, sondern noch der zu vorige, alte Wert.

Hat da noch jemand eine Idee warum das Setzen der Build-Number nicht funktioniert?
Miniaturansicht angehängter Grafiken
projekt-optionen.jpg  
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)

Geändert von juergen ( 7. Okt 2021 um 21:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

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

AW: Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas

  Alt 7. Okt 2021, 22:14
Hat da noch jemand eine Idee warum das Setzen der Build-Number nicht funktioniert?
Ja. ProjectOptions ist eine Sammlung aller Optionen des gesamten Platform/Konfigurationsbaums - es gibt also mehrere Einträge für jeden Values[<Name>], auf die man mit diesem Ansatz nicht herankommt.

Du kannst aber mit (Project.ProjectOptions as IOTAProjectOptionsConfigurations).ActiveConfiguration auf die richtigen Werte zugreifen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas

  Alt 8. Okt 2021, 00:50
Vielen Dank, Uwe!
Ich hatte es nun probiert mit ( Project.ProjectOptions AS IOTAProjectOptionsConfigurations ).ActiveConfiguration.SetValues( 'VerInfo_Build', s ); Hab aber nicht verstanden, warum SetValue() als 2. Parameter ein TString erwartet. Ich hätte eher gedacht ein String oder Word.

Ich musste nun aber auch feststellen, dass wenn in diesem OTAPI-Experten ein Fehler auftritt, es dann richtig "kracht" und es wird sehr schwer für mich diesen Fehler dann im Projekt zu finden. (Abstrakter Fehler)

Daher werde ich wohl morgen eher hoika's Vorschlag folgen.

Vielen Dank nochmal an alle!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.649 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas

  Alt 8. Okt 2021, 07:02
Ich musste nun aber auch feststellen, dass wenn in diesem OTAPI-Experten ein Fehler auftritt, es dann richtig "kracht" und es wird sehr schwer für mich diesen Fehler dann im Projekt zu finden. (Abstrakter Fehler)
Dass du mit einer zweiten Instanz von Delphi deinen Experten debuggen kannst, weißt du?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 10:32 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