AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Versionsinformationen werden nicht mit in die Exe übernommen
Thema durchsuchen
Ansicht
Themen-Optionen

Versionsinformationen werden nicht mit in die Exe übernommen

Ein Thema von jensw_2000 · begonnen am 30. Okt 2014 · letzter Beitrag vom 6. Sep 2024
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Versionsinformationen werden nicht mit in die Exe übernommen

  Alt 20. Aug 2024, 12:39
Delphi-Quellcode:
Function test(a:boolean):string;
Begin
  If a then
    result := 'yo'
  else
    result := 'no';
end;
"Das Ergebnis der Funktion ist möglicherweise undefiniert"
Kann man diese Meldung verhindern ohne result zu intialisieren?
Gerade dieses Beispiel erzeugt eben keine Warnung, da ein string-Result immer initialisiert ist. Aber auch mit einem Integer als Rückgabe kommt zumindest unter Delphi 12 keine.

Es gibt aber schon eine Möglichkeit, eine solche Warnung lokal zu unterdrücken ohne die gleich ganz abzuschalten:
Delphi-Quellcode:
{$WARN NO_RETVAL OFF}
Function test(a:boolean):Integer;
Begin
  If a then
    result := 1;
end;
{$WARN NO_RETVAL DEFAULT}
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Versionsinformationen werden nicht mit in die Exe übernommen

  Alt 20. Aug 2024, 14:14
Wobei der Integer in dem Fall des Integers halt wirklich nicht initialisiert sein kann
und beim nichtvorhandenen ELSE zufällig sein kann.

Andersrum ist es schlimmer.
Per se ist der Result als String immer initialisiert, aber nicht in der Funktion, sondern beim Aufrufer, wo er dann z.B. in einer Schleife initial nicht '' sein kann.
Bei gemanagten Typen wird "intern" aus dem Result ein OUT- VAR-Parameter und außerdem sind gemangte Typen immer mit "0" initialisiert. (WideString, LongString, Variant, dynamische Array, Interface und ordentlich geschriebene Custom-Managed-Records)
Delphi-Quellcode:
function Test(a: Boolean): String;
// wird zu
procedure Test(a: Boolean; var Result: String);

Wir hatten im XE einen Fall, wo sich der Compiler in einer Verschachtelung aus Try-Finally, Try-Except, If-Then-Else-If-Then-Else-If-Then-Else-... und Case mit Exit und Abort/Raise durcheinander kam
und nachfolgend meinte die lokale Integervariable könne uninitialisiert sein, drum wurde dort ein :=0 am Anfang eingefügt, was dann D10+ aber anders sah und richtig erkannte, dass bis zur Auswertung es in allen Pfaden gesetzt wird, oder es via Exit/Raise vorher rausspringt.


Im Windows64-Compiler gibt es jetzt teilweise Zustände, wo ein Boolean-Result immer automatisch initialisiert ist scheint ... nja, wenn du schaust immmer, aber eigentlich fast immer, weil du zufällig den einen Abweichenden von Tausenden/Millionen Durchgängen nicht siehst.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (20. Aug 2024 um 14:25 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#33

AW: Versionsinformationen werden nicht mit in die Exe übernommen

  Alt 20. Aug 2024, 14:45
Es gibt aber schon eine Möglichkeit, eine solche Warnung lokal zu unterdrücken ohne die gleich ganz abzuschalten:
Delphi-Quellcode:
{$WARN NO_RETVAL OFF}
Function test(a:boolean):Integer;
Begin
  If a then
    result := 1;
end;
{$WARN NO_RETVAL DEFAULT}
OMG
danke.
außer NORETVAL gibts sicher für jede warnung einen wert oder? Weißt du wo die liste zu finden ist?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Versionsinformationen werden nicht mit in die Exe übernommen

  Alt 20. Aug 2024, 15:04
Stehen alle in der Hilfe.

Und wie gesagt, ist DAS hier auch keine Lösung.
Die Lösung ist den Wert zu initialisieren, entweder vorher oder im Else, da die Funktion sonst mehr dem Russisch Roulette entspricht.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.605 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#35

AW: Versionsinformationen werden nicht mit in die Exe übernommen

  Alt 20. Aug 2024, 15:49
Stehen alle in der Hilfe.

Und wie gesagt, ist DAS hier auch keine Lösung.
Die Lösung ist den Wert zu initialisieren, entweder vorher oder im Else, da die Funktion sonst mehr dem Russisch Roulette entspricht.
Naja, es gibt halt Fälle, bei denen der Compiler zu Unrecht mosert. Das ist ganz "toll", wenn sich das von Version zu Version ändert, man also z.B. bei der einen Compiler-Version eine eigentlich unnötige Zuweisung braucht, damit der nicht rummosert, die bei einer anderen Compiler-Version dann aber als unnötig angemosert wird. Innerhalb eines Projekts kann man noch den Code für eine bestimmte Compilerversion "optimieren", aber spätestens bei einer Unit in einer Library, die von mehreren Projekten verwendet wird, ist das nicht mehr so einfach.

Zum Glück sind diese Fälle einigermaßen selten.
Thomas Mueller
  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
 
#36

AW: Versionsinformationen werden nicht mit in die Exe übernommen

  Alt 20. Aug 2024, 16:13
Weißt du wo die liste zu finden ist?
Steht direkt in der Hilfe zu {$WARN...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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
 
#37

AW: Versionsinformationen werden nicht mit in die Exe übernommen

  Alt 20. Aug 2024, 16:15
Und wie gesagt, ist DAS hier auch keine Lösung.
Die Lösung ist den Wert zu initialisieren, entweder vorher oder im Else, da die Funktion sonst mehr dem Russisch Roulette entspricht.
Der Code ist absichtlich so gestaltet, dass er definitiv eine Warnung auslöst, die man mit der Direktive abschalten kann.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
omnibrain

Registriert seit: 11. Nov 2022
72 Beiträge
 
Delphi 11 Alexandria
 
#38

AW: Versionsinformationen werden nicht mit in die Exe übernommen

  Alt 24. Aug 2024, 12:43
In anderen Sprachen gibt es dafür Pragmas, die man einem "angemeckerten" Statement einfach als Art Kommentar nachstellt. Aber mit einem relativ doofen Single Pass Compiler geht das halt nicht.
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
313 Beiträge
 
Delphi 12 Athens
 
#39

AW: Versionsinformationen werden nicht mit in die Exe übernommen

  Alt 6. Sep 2024, 10:02
Bitte nochmal zurück zum Thema.

Ich habe hier mit Delphi 12.1P1 gerade das gleiche Problem, daß die Versionsinformation nicht korrekt übernommen wird.

Es gibt ja die Auswahl für "debug", für "release" und "für alle Konfigurationen"!
Ich habe sie auf "für alle" eingestellt, Dateiversion und Produktversion auf den selben Wert gesetzt (nur zur Sicherheit), und bei der Ausführung lese ich dann im Programm diesen Wert ein... - da steht dann nur "1.0.0.0", das steht so aber nicht in der eingestellten Konfiguration!

Im Projekt steht das {$R *.res} drin und im Pfad ist nur 1 .res-Datei, die vom Delphi beim compilieren aktuell angelegt wurde (hab sie extra zuvor gelöscht).

Manifest hab ich "Automatisch erzeugen" (für alle Konfigurationen) eingestellt.

Und warum ist die Sprach-ID eigentlich immer auf $409 English eingestellt?
Windows ist Deutsch, IDE ist deutsch, meine Programme sind für deutsche Nutzer - also stelle ich es hier auch deutsch $407 ein.

Aktuell builde ich es als Debug ("alle Konfigurationen" sollte ja trotzdem klappen!?).

Wie bringe ich jetzt Athens dazu, diese in den Projektoptionen wichtigen Daten auch in die Exe hineinzuschreiben?
Oder liegt hier ein weiterer Bug (Feature) vor, weil es durch einen Schalter an irgendeiner irreführend schlecht übersetzen Stelle einen Schalter dafür gibt, zusätzlich zu dem aktivierten "Versionsinformationen in das Projekt übernehmen"??

Geändert von SearchBot ( 6. Sep 2024 um 10:07 Uhr) Grund: Doch ein Manifest, builden..
  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
 
#40

AW: Versionsinformationen werden nicht mit in die Exe übernommen

  Alt 6. Sep 2024, 10:25
Es gibt ja die Auswahl für "debug", für "release" und "für alle Konfigurationen"!
Ich habe sie auf "für alle" eingestellt
Sobald du in den Versionsinformationen die Debug- oder Release-Konfiguration öffnest, übernimmt die IDE die Einstellungen aus der Alle-Konfiguration, verfolgt aber keine weiteren Änderungen in dieser.

Genau dafür gibt es eine Einstellung im Project Magician, die alle Werte in den abgeleiteten Konfigurationen löscht und die Vererbung damit wieder instand setzt.
Miniaturansicht angehängter Grafiken
06-09-2024_10-23-51.png  
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 06:08 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