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 2 von 3     12 3      
Benutzerbild von juergen
juergen

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

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

  Alt 8. Okt 2021, 08: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.453 Beiträge
 
Delphi 12 Athens
 
#12

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

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

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

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

  Alt 8. Okt 2021, 11:24
Hallo Uwe,

erst einmal vielen Dank für dein Geduld!
Leider bekomme ich es mit
( Project.ProjectOptions AS IOTAProjectOptionsConfigurations ).ActiveConfiguration.Value[sVerInfo_Build { uses CommonOptionStrs }] := IntToStr(lw_my_Build_Number); nicht hin.
Es kommt die Fehlermeldung:
Zitat:
[Fataler Fehler] Abstrakter Fehler
Hast du da noch eine Idee?
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 juergen
juergen

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

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

  Alt 8. Okt 2021, 21:32
Hallo,

der OTAPI Expert zum Setzen der Build-Number nach meinem Schema funktioniert nun (und noch weitere Sachen )! Siehe Post #13, das ist dort korrekt.
Ich hatte an einer anderen Stellen einen Fehler eingebaut, den ich nicht auf Anhieb gefunden hatte.
Vorsichtshalber habe ich auch eigene Try-Except-Meldungen eingebaut, damit es im Falle eines Fehlers sofort ersichtlich ist, dass der Fehler aus dem OTAPI-Expert kommt und nicht aus dem eigentlichen Projekt.

Allen ein schönes Wochenende!
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 juergen
juergen

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

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

  Alt 28. Okt 2021, 23:21
Hallo zusammen,

nun habe ich noch ein Phänomen mit dem OTAPI-Experten.
- Die Build-Nr. wird *immer* mit dem OTAPI-Experten in den Projektoptionen gesetzt! Fein!
- Bei den meisten Projekten wird die Build-Nr. auch in die Exe übernommen. Aber eben nicht bei allen Projekten (gefühlt bei größeren Projekten nicht), obwohl die richtige Build-Nr. ja *immer* in den Projektoptionen steht!
- Erst wenn ich bei den Projektoptionen dort explizit auf den Button "Speichern" gehe, wird die Build-Nr. auch in die Exe übernommen.

Ich habe schon einiges versucht aber nichts hatte geholfen.


Delphi-Quellcode:
PROCEDURE TBeforeCompile.BeforeCompile( CONST Project: IOTAProject; IsCodeInsight: Boolean; VAR Cancel: Boolean );
VAR
  ls_my_Build_Number: STRING;
BEGIN
  IF NOT IsCodeInsight THEN
  BEGIN
    TRY
      ls_my_Build_Number := FormatDateTime( 'YY', Now ) + RightStr( '0' + IntToStr( WeekOfTheYear( Now ) ), 2 ) + IntToStr( DayOfTheWeek( Now ) );
      ( Project.ProjectOptions AS IOTAProjectOptionsConfigurations ).ActiveConfiguration.AsInteger[sVerInfo_Build { uses CommonOptionStrs } ] :=
        StrToIntDef( ls_my_Build_Number, 99999 );

      sleep( 2000 );{ TODO 2 -oJS -cwichtig : Test, muss entfernt werden }
      Project.Refresh (True); { TODO 2 -oJS -cwichtig : Test, muss entfernt werden }
      Project.ProjectOptions.ModifiedState := True;
      sleep( 2000 );{ TODO 2 -oJS -cwichtig : Test, muss entfernt werden }
    EXCEPT
      ShowMessage( 'Dieser Fehler kommt aus dem OTAPI-Experten für das Erstellen der Build-Nr. in den Projektoptionen!' );
    END;
  END;
END;

Hat jemand hier noch einen Ansatz woran das liegen könnte?

Vielen Dank schon mal vorab!
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.490 Beiträge
 
Delphi 7 Professional
 
#16

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

  Alt 29. Okt 2021, 10:18
Hab' mir was ähnliches für Delphi 7 gebaut.

Dort muss zusätzlich (zum eigene Beforecompileexperten) in den Projektoptionen Versionsinfo in das Projekt übernehmen und Buildnummer automatisch erhöhen aktiviert sein.

Wie das bei aktuellen Delphis aussieht, weiß ich nicht.
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

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

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

  Alt 29. Okt 2021, 15:00
Danke für den Hinweis, Delphi.Narium

Das hatte ich schon alles ausprobiert. Leider kein Erfolg, egal was ich unter "Optionen für Build-Nr." festlege. "Versionsinformationen in das Projekt übernehmen" ist angehakt.
Miniaturansicht angehängter Grafiken
projektoptionen.png  
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.490 Beiträge
 
Delphi 7 Professional
 
#18

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

  Alt 29. Okt 2021, 16:18
Wird nicht gespeichert oder wird (eventuell unbemerkt) garnicht aufgerufen?

Gibt es einen Unterschied zwischen F9 und Strg+F9?

Der IOTAModuleServices müsste eine Funktion SaveAll haben, wenn Du den Aufruf noch mit in Dein BeforeCompile hineinbringen könntest, müsste das einem Betätigen von "Alles speichern" entsprechen.

Die einzige Literatur, die das "SaveAll" erwähnt und die ich dazu gefunden habe, ist für Delphi 6 und in Spanisch: http://www.marteens.com/pdfs/TheDarkSideOfDelphi6.pdf

Oder Extending the Delphi IDE

In der (eingebetteten) PDF nach ACCESSING THE IDE suchen und dann analog zu
Delphi-Quellcode:
// check if the BorlandIDEServices global variable is assigned
if Assigned(BorlandIDEServices) then
begin
  // access the IOTAModuleServices interface implemented in BorlandIDEServices and call CloseALL to close all modules
  (BorlandIDEServices as IOTAModuleServices).CloseAll;
end;
mal mit
Delphi-Quellcode:
// check if the BorlandIDEServices global variable is assigned
if Assigned(BorlandIDEServices) then
begin
  // access the IOTAModuleServices interface implemented in BorlandIDEServices and call SaveALL to save all modules
  (BorlandIDEServices as IOTAModuleServices).SaveAll;
end;
versuchen.

Keine Ahnung, ob das was bringt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#19

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

  Alt 29. Okt 2021, 16:36
Die Versionsressource findest du in der *.res des Projekts (ich glaub in der *.dres war sie nicht nochmal drin).
Und diese Ressource ist das, was einkompiliert wird.

Kann sein, dass diese Ressource beim Ändern über die OTA nicht aktualisiert wird, wenn die "Kopie" in der .DPROJ geändert wird, was aber schon bissl buggig wäre.



Kannst ja mal nach meinen Antworten im Forum suchen .... irgendwo war da was (detailierter beschrieben)
* ich hab im Projekt die Versions-Info deaktiviert
* bei den Projekten, wo es nicht automatisch ging, mit einen Ressourcen-Editor die .RES bearbeitet und diese Ressource nochmal gelöscht
* dann wird nun eine eigene .RC erstellt, mit der Versionsressource
* diese .RC wird zur .RES kompiliert
* und am Ende mit einem {$R meine.res} ins Projekt eingebunden
* * innerhalb der DPR/DPK (niemals PAS) könnte man auch {$R meine.res meine.rc} verwenden, dann würde automatisch kompiliert (klappt aber selten/nie, wenn über MSBUILD)


RC mit aktuellen Versionsinfos zusammenbauen (bei uns inkl. der Revision vom SVN GIT)
und das Compilieren macht der FinalBuilder, aber ist ja egal wer es macht

Von Michael Puff (ehamals der Luckie im Forum) gab es auch ein Consolenprogramm, um die Version direkt in der Projekt-RES zu ändern.
http://michael-puff.de/
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (29. Okt 2021 um 16:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

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

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

  Alt 29. Okt 2021, 18:07
Hallo,

der Hinweis auf das PDF war gut, Delphi.Narium! Vielen Dank. Man findet nicht viel zum Nachlesen.
Gefühlt habe ich alles ausprobiert. Nichts hat mein Problem gelöst.

Aber:
Wenn ich das Projekt zuerst erzeuge (Umschalt+F9) und danach compiliere (Strg+F9), dann funktioniert es!
Andersrum geht es nicht oder nur compilieren.

Lässt sich daraus vllt. etwas ableiten?
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
Antwort Antwort
Seite 2 von 3     12 3      


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