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

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
Benutzerbild von Uwe Raabe
Uwe Raabe

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

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

  Alt 7. Okt 2021, 10: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.176 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 7. Okt 2021, 20: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?
Angehängte Grafiken
Dateityp: jpg Projekt-Optionen.jpg (112,4 KB, 13x aufgerufen)
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 20:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

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

  Alt 7. Okt 2021, 21: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.176 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 7. Okt 2021, 23: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.961 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 8. Okt 2021, 06: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
Benutzerbild von juergen
juergen

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

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

  Alt 8. Okt 2021, 07:46
Zitat:
Dass du mit einer zweiten Instanz von Delphi deinen Experten debuggen kannst, weißt du?
Das wusste ich nicht. Danke für den Hinweis.

Ich bekomme es aber leider nicht hin über SetValues() die Build-Nummer zu setzen.
( Project.ProjectOptions AS IOTAProjectOptionsConfigurations ).ActiveConfiguration.SetValues( 'VerInfo_Build', s ) Ich bin mir ziemlich sicher, dass ich SetValues() falsch anwende/ verstehe.
Ich finde aber auch nichts zum Nachlesen.
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

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

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

  Alt 8. Okt 2021, 09:18
SetValues ist für Properties gedacht, die eine Stringlist repräsentieren. In deinem Fall solltest du Value[sVerInfo_Build] oder AsInteger[sVerInfo_Build] zuweisen (die Stringkonstanten stehen in CommonOptionStrs).
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12: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