Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mit version und Buildnummer arbeiten (https://www.delphipraxis.net/147391-mit-version-und-buildnummer-arbeiten.html)

DelTurbo 7. Feb 2010 13:53


Mit version und Buildnummer arbeiten
 
Hi,

ich habe möchte gerne innerhalb des programms die daten der Versionskontrolle auslesen. Und zwar wollte ich das so ausgeben.

Version 1.1.0 {build 4444} wobei 4444 die compilierungsnummer ist. Die zählt er ja beim erstellen selber hoch. Nun zur frage, kann ich das innerhalb des programms abrufen ob muss man wirklich den umweg über die .exe nehmen?? Alles was ich gefunden habe (bestimmt wieder falsch gesucht) geht diesen umweg.

Danke im voraus

daywalker9 7. Feb 2010 14:00

Re: Mit version und Buildnummer arbeiten
 
Meinst du sowas?

Damit kannst du dir die Versionsinformationen aus der Datei holen, die du mit fileName übergibst.

Delphi-Quellcode:
type tFileVersionRec = record Fixed : TVSFixedFileInfo;
                              hauptversion,
                              nebenversion,
                              Ausgabe    ,
                              Compilierung:word;
                              BetaVersion : boolean;
                       end;

function GetVersionInfo (filename : shortstring;var fw : tFileVersionRec ) : boolean;
var dw,size,len : longword;
    p : par64;
    s : string[10];
    p2 : pointer;
    ok : boolean;
begin result:=false;
      filename:=filename+#0;
      dw:=1;
      size:=GetFileVersionInfoSize(@filename[1],dw);
      if (size=0) or (dw<>0) then exit;
      getmem(p,size);
      ok:=GetFileVersionInfo(@filename[1],dw,size,p);
      if ok then
        begin s:='\'+#0;
              ok:=VerQueryValue(p,@s[1],p2,len);
              move(p2^,fw.fixed,maximum(len,sizeof(fw.fixed)));
              fw.hauptversion:=hiword(fw.fixed.dwFileVersionMS);
              fw.nebenversion:=loword(fw.fixed.dwFileVersionMS);
              fw.Ausgabe    :=hiword(fw.fixed.dwFileVersionLS);
              fw.Compilierung:=loword(fw.fixed.dwFileVersionLS);
              fw.betaversion :=(fw.fixed.dwfileflags and $2)>0;
        end;
      freemem(p);
      result:=ok;
end;

himitsu 7. Feb 2010 14:02

Re: Mit version und Buildnummer arbeiten
 
http://www.delphipraxis.net/internal...093232#1093232
und
http://www.delphipraxis.net/internal...t.php?p=659907

DelTurbo 7. Feb 2010 14:06

Re: Mit version und Buildnummer arbeiten
 
Ja sowas in der art. Aber halt OHNE diesen "umweg" über das exe-file. Ich will ja kein anderes prg abfragen sondern nur den kram von meinem prg wissen. Ich dachte das kann man "intern" ermitteln.

daywalker9 7. Feb 2010 14:08

Re: Mit version und Buildnummer arbeiten
 
Wenn du das von deinem programm abfragen willst, nehm doch
Delphi-Quellcode:
var fw : tFileVersionRec;
begin
  GetFileVersion(Application.Exename,fw);
end;

Luckie 7. Feb 2010 14:15

Re: Mit version und Buildnummer arbeiten
 
Zitat:

Zitat von DelTurbo
Ja sowas in der art. Aber halt OHNE diesen "umweg" über das exe-file. Ich will ja kein anderes prg abfragen sondern nur den kram von meinem prg wissen. Ich dachte das kann man "intern" ermitteln.

Wenn nicht aus der Programmdatei, wo willst du die Informationen denn dann herbekommen?

DelTurbo 7. Feb 2010 14:18

Re: Mit version und Buildnummer arbeiten
 
Ich dachte es gibt einen Record oder was weiss ich, der gesetzt ist. Aber den antworten und meinen google ergebnissen entnehme ich das es sowas wohl nicht gibt. Schade.

Da dem wohl nicht so ist, also es keinen interne variable/record oder so gibt, nehme ich dankend die routine von daywalker9. :thumb:

Luckie 7. Feb 2010 14:20

Re: Mit version und Buildnummer arbeiten
 
Klar gibt es den Record, denn irgendwo müssen die Daten ja gespeichert sein. Dieser Record steht in den Ressourcen der Exe und diese sind natürlich einkompiliert:
Code:
IDR_VERSION VERSIONINFO
FILEVERSION 1, 0, 0, 15
PRODUCTVERSION 1,0,0,0
FILEOS 0x00000004
FILETYPE 0x00000001
BEGIN
  BLOCK "StringFileInfo"
  BEGIN
    BLOCK "04090000"
    BEGIN
      VALUE "FileVersion", "1, 0, 0, 15\0"
      VALUE "FileDescription", "nonVCL Dialog Template\0"
      VALUE "LegalCopyright", "Michael Puff\0"
      VALUE "ProductName", "Dialog Template\0"
    END
  END
  BLOCK "VarFileInfo"
  BEGIN
    VALUE "Translation", 0x0409, 0x0000
  END
END
Oder wo sollte dieser Record deiner Meinung nach stehen?

DelTurbo 7. Feb 2010 14:30

Re: Mit version und Buildnummer arbeiten
 
Ich glaube wir reden aneinander vorbei. Mir ist auch klar das der kram in der exe stehen muss. Nu weiss ich garnicht wie ich mich ausdrücken soll....

BEISPIEL!!!!!!!!

Versionsnummer:=RecordWasWeissIch.Version;
SubVersion:=RecordWasWeissIch.SubVersion;


Ich dachte sowas gibt es.

mkinzler 7. Feb 2010 14:32

Re: Mit version und Buildnummer arbeiten
 
Erst nach dem Linken, deshalb muss dies auch aus der Exe gelesen werden!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:57 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