AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Versionsinfo automatisch ins Programm übernehmen
Thema durchsuchen
Ansicht
Themen-Optionen

Versionsinfo automatisch ins Programm übernehmen

Ein Thema von m-werk · begonnen am 2. Aug 2002 · letzter Beitrag vom 6. Aug 2002
Antwort Antwort
Seite 1 von 3  1 23      
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#1

Versionsinfo automatisch ins Programm übernehmen

  Alt 2. Aug 2002, 09:38
Hi, noch ne Frage!

Wenn ich bei meinem Projekt bei den Projektopitionen unter Versionsinfo einen neuen Wert eingebe, kann ich dann im Programm irgendwie darauf zugreifen, so dass dann im Programm bei Version auch dieser Wert steht, damit ich nicht immer manuell die Versionsinfo eintragen muß?

Wenn ja, wie kann ich das anstellen?
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 2. Aug 2002, 12:43
Hi m-werk,

in folgendem Thread habe ich mal ein Beispiel dafür gegeben. Vielleicht hilfts weiter

http://www.delphipraxis.de/viewtopic.php?t=242
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3
  Alt 5. Aug 2002, 19:52
Einfach kopieren und ohne nachdenken benutzen:
Code:
function GetFileVersionsString(const p_sFilepath : string) : string;

const // Das Ergebnis soll ja nett formatiert sein :)
  sFixVerFormat = 'Fileversion: %d.%d.%d.%d / Productversion: %d.%d.%d.%d';

var
  dwVersionSize  : DWord;           // Buffer für die Grösse der Versionsinfo der abgefragten Datei
  dwDummy        : DWord;           // Dummy, Wert wird nicht benötigt
  pVerBuf        : Pointer;         // Buffer für die Versionsdaten
  pFixBuf        : PVSFixedFileInfo; // Buffer für die Versionsinfo fester Länge
  sReqdInfo      : string;          // Hier kommt rein, welcher Teil der Versionsinfo abgefragt werden soll

begin
  // Annahme: Die Datei hat keine Versionsinfo
  Result       := Format(sFixVerFormat,[0,0,0,0,0,0,0,0]);
  dwDummy      := 0;  // Dummy initialisieren
  sReqdInfo    := '\'; // Es soll die Versionsinfo fester Länge abgefragt werden
  // Mal sehen, wieviel Platz die Versionsinfo der Datei braucht
  dwVersionSize := GetFileVersionInfoSize(PChar(p_sFilepath),dwDummy);
  if dwVersionSize > 0 then
  begin // Wenn > 0, dann Versionsinfo vorhanden
    try
      pVerBuf := AllocMem(dwVersionSize); // Buffer initialisieren
      // Gesamte Versionsinformationen auslesen
      if GetFileVersionInfo(PChar(p_sFilepath),0,dwVersionSize,pVerBuf) then
      begin // Werte für Versionsinfo fester Länge extrahieren
        if VerQueryValue(pVerBuf,PChar(sReqdInfo),Pointer(pFixBuf),dwDummy) then
        begin
          // und als Ergebnis ausgeben
          Result := Format(sFixVerFormat,[
            (pFixBuf^.dwFileVersionMS and $FFFF0000) shr 16, // 1. Stelle HiWord, deshalb nach unten schieben
            pFixBuf^.dwFileVersionMS and $0000FFFF,
            (pFixBuf^.dwFileVersionLS and $FFFF0000) shr 16,
            pFixBuf^.dwFileVersionLS and $0000FFFF,
            (pFixBuf^.dwProductVersionMS and $FFFF0000) shr 16,
            pFixBuf^.dwProductVersionMS and $0000FFFF,
            (pFixBuf^.dwProductVersionLS and $FFFF0000) shr 16,
            pFixBuf^.dwProductVersionLS and $0000FFFF
           ]);
        end;
      end;
    finally // Resourcen wieder freigeben
      FreeMem(pVerBuf,dwVersionSize);
    end;
  end;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4
  Alt 5. Aug 2002, 20:27
Zitat von m-werk:
Hi, leider hat mir der Beitrag nicht weitergeholfen.
Eigentlich unverständlich, IMHO.

Zitat:
Ich möchte das ganz einfach gestallten.
Es ist ganz einfach, weil Luckies Funktion einen fertigen, formatierten String zurückliefert. Vielleicht gefällt dir die Art der Formatierung dieses Strings nicht, beispielsweise:
Code:
Fileversion: 3.0.0.13 / Productversion: 3.0.0.0
Aber es spricht ja nichts dagegen, die Felder zu entfernen, die du höchstwahrscheinlich nicht brauchst. Als Vorschlag:
Code:
[b]const[/b] [i]// Das Ergebnis bleibt nett ;o)[/i]
  sFixVerFormat = '%d.%d.%d.%d';

[i]{ ... }

// und als Ergebnis ausgeben [/i]
Result := Format(sFixVerFormat,[ 
  (pFixBuf^.dwFileVersionMS [b]and[/b] $FFFF0000) [b]shr[/b] 16,
   pFixBuf^.dwFileVersionMS [b]and[/b] $0000FFFF,
  (pFixBuf^.dwFileVersionLS [b]and[/b] $FFFF0000) [b]shr[/b] 16,
   pFixBuf^.dwFileVersionLS [b]and[/b] $0000FFFF]);
Damit liefert die selbe Funktion nur noch die Dateiversion als String zurück.

Zitat:
Ich habe ein Label wo die Version drinn steht. Dieses Label möchte ich immer aktalisiert haben, wenn ich es im Programm erhöhe! Geht das auch einfach mit einem kleinen Code?
Diesen String kannst du an die Caption des Labels weitergeben. Es ist ja nicht so, dass man die Beschriftung nur einmal ändern kann. Oder?

In diesem Sinne, das letzte Wort hat Luckie:
Zitat:
Einfach kopieren und ohne nachdenken benutzen
Obwohl Nachdenken manchmal ganz gut ist.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.107 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 5. Aug 2002, 20:27
Moin Luckie,

der Code kommt mir so bekannt vor

@m-werk:
Du musst doch nur die Funktion kopieren und aufrufen:

Code:
Label.Caption := GetFileVersionsString(paramstr(0));
fertig.

Sollte Dir das Ergebnis zu lang sein, dann schau Dir doch mal die Hilfe zu der Funktion Format an. Damit sollte es dann hinzubekommen sein, in der Funktion GetFileVerionsString den Rückgabewert auf das gewünscht Mass zu reduzieren.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#6
  Alt 5. Aug 2002, 20:28
Interessant. Jetzt ist meine Antwort vor m-werks Posting.
Ich bin ein Hellseher.

Daniel, Forum reparieren!


<Edit>
@Chris: Ätsch, ich war schneller ... und auch gehässiger ...
</Edit>
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#7
  Alt 5. Aug 2002, 20:32
Dies ist leider einer der Threads, die von der Zeitumstellung des Servers betroffen sind. Durch die zweimalige Zeitumstellung sind die Beiträge jetzt in der falschen Reihenfolge. Da kann ich leider nichts machen; ab morgen früh (04:00 Uhr) wird wieder alles im Lot sein. (Dafür haben wir derzeit Beiträge aus der Zukunft )

Sorry,
Daniel
Delphi-PRAXiS Administrator
Daniel R. Wolf
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.107 Beiträge
 
Delphi 11 Alexandria
 
#8
  Alt 5. Aug 2002, 20:36
Moin Mathias,

Code:
Ätsch, ich war schneller ...
wenn mich die Software nicht am Posten gehindert hätte...

Zitat:
und auch gehässiger ...
tja, hmm..., da macht Dir so leicht eh' keiner was vor
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#9
  Alt 5. Aug 2002, 20:39
Zitat von Daniel:
(Dafür haben wir derzeit Beiträge aus der Zukunft )
Ich merke schon.
Fassen wir zusammen, damit der Gag erhalten bleibt:

Zitat von MathiasSimmack:
ein gehässiges Posting, verfasst am: 05.08.02, 21:27
Zitat von ChristianSeehase:
ein netteres Posting, verfasst am: 05.08.02, 21:27
Zitat von m-werk:
der Auslöser, verfasst am: 06.08.02, 04:13
8)


@Chris: nicht traurig sein. Ich wurde letztens als "Herr der großen Worte" bezeichnet.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10
  Alt 5. Aug 2002, 20:39
Das hier Beiträge etwas durcheinander geraten sind, liegt wohl daran, dass sie es bei 1&1 jetzt endlich geschafft haben den Pendel wieder in gang zu bekommen, die Feder aufzuziehen und das Glöcken neu zu stimmen.

Es geht nun mal nicht mit einem Einzeiler. Lager das ganze in eine Unit aus und du siehst es nicht mehr. Hat noch den Vorteil, dass du beim nächsten Projekt diese Unit wiederverwenden kannst.

@Christian: Öhm, ja kann sein, dass sie von dir ist. Ich sammele solche Codeschnipsel, um sie bei Bedarf zur Hand zu haben ohne lange online in diversen Foren suchen zu müssen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 09:17 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