Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas (https://www.delphipraxis.net/208972-projekt-optionen-build-nr-autom-setzen-anhand-eines-schemas.html)

juergen 6. Okt 2021 22:18

Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas
 
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!

Uwe Raabe 6. Okt 2021 23:54

AW: Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas
 
Mit Bordmitteln geht das zumindest nicht.

hoika 7. Okt 2021 05:07

AW: Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas
 
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.

juergen 7. Okt 2021 08:42

AW: Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas
 
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! :dp:

Delphi.Narium 7. Okt 2021 09:32

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

Zitat von Uwe Raabe (Beitrag 1495794)
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.

Uwe Raabe 7. Okt 2021 10:12

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

Zitat von Delphi.Narium (Beitrag 1495801)
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.

juergen 7. Okt 2021 20:05

AW: Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas
 
Liste der Anhänge anzeigen (Anzahl: 1)
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?

Uwe Raabe 7. Okt 2021 21:14

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

Zitat von juergen (Beitrag 1495812)
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
Delphi-Quellcode:
(Project.ProjectOptions as IOTAProjectOptionsConfigurations).ActiveConfiguration
auf die richtigen Werte zugreifen.

juergen 7. Okt 2021 23:50

AW: Projekt -> Optionen: Build-Nr. autom. setzen anhand eines Schemas
 
Vielen Dank, Uwe!
Ich hatte es nun probiert mit
Delphi-Quellcode:
( 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! :dp:

jaenicke 8. Okt 2021 06:02

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

Zitat von juergen (Beitrag 1495815)
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?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:35 Uhr.
Seite 1 von 3  1 23      

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