Autor Beitrag
mwsnet
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Sa 19.10.02 18:31 
Hallo,

sagt mal, ich würde gerne automatisch nach jedem Compilieren meines Progs die DateiVersion um einen Zähler erhöhen. Also z.B. von 1.0.0.55 auf 1.0.0.56.

Ich arbeite mit Delphi7 Pro und dort gibt es ja eine entsprechende Möglichkeit bei Projekt -> Optionen -> Versionsinfo. Doch wenn ich den entsprechenden Haken setze passiert bei mir gar nichts. Was muss man denn da noch beachten?

Danke.

Grüsse
Michael
Henry
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 619

WinXP Prof. SP3
D6 Prof.
BeitragVerfasst: Sa 19.10.02 18:37 
Also ich verwende Delphi5 Pro.
Da ist es so, das die Versionsnummer nur erhöht wird wenn
ich das Projekt über

Projekt --> Project1 Compilieren
oder
Projekt --> Project1 erzeugen

Compiliere.

Vieleicht hilft Dir das ja bei D7 auch weiter

_________________
mfg Henry
mwsnet Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Sa 19.10.02 18:58 
Titel: Geht
Hi Henry,

jo danke für den Tip. Mit Projekt erzeugen klappt es auch. Das habe ich bisher kaum benutzt, da mein 2 Jahre alter PC dann immer ca. 'ne Minute rumrödelt :roll:

Cu Michael
Henry
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 619

WinXP Prof. SP3
D6 Prof.
BeitragVerfasst: Sa 19.10.02 20:45 
Das stimmt wohl, das das ne weile dauert.

Aber ich habe noch keine Einstellung gefunden wo es mit F9 auch geht :(

Freut mich aber wenn es geholfen hat

_________________
mfg Henry
enigma
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 18



BeitragVerfasst: Mo 21.10.02 10:49 
ist es auch möglich die dateiversion auszulesen und dann in der about box anzuzeigen??
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 21.10.02 11:31 
Ja.
Marduk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mo 21.10.02 11:44 
Hier haste den Code aus der Delphi Hilfe:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure TForm1.Button1Click(Sender: TObject);

const
  InfoNum = 10;
  InfoStr: array[1..InfoNum] of string = ('CompanyName', 'FileDescription', 'FileVersion', 'InternalName', 'LegalCopyright', 'LegalTradeMarks', 'OriginalFileName', 'ProductName', 'ProductVersion', 'Comments');
var
  S: string;
  n, Len, i: DWORD;
  Buf: PChar;
  Value: PChar;
begin
  S := Application.ExeName;
  n := GetFileVersionInfoSize(PChar(S), n);
  if n > 0 then
  begin

    Buf := AllocMem(n);
    Memo1.Lines.Add('VersionInfoSize = ' + IntToStr(n));
    GetFileVersionInfo(PChar(S), 0, n, Buf);
    for i := 1 to InfoNum do
      if VerQueryValue(Buf, PChar('StringFileInfo\040904E4\' + InfoStr[i], Pointer(Value), Len) then
        Memo1.Lines.Add(InfoStr[i] + ' = ' + Value);
    FreeMem(Buf, n);
  end
  else
    Memo1.Lines.Add('No version information found');
end;


Gruß Dennis
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 21.10.02 12:26 
Unter welchen Stichwort findet man denn das in der Delphi-Hilfe? :shock:

Und irgendwie haut das ganze auch noch nicht so hin. :?
Marduk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Di 22.10.02 08:56 
Okay ich bin ehrlich :oops: , habs selber gar nich getestet.
Gefunden hab ich das ganze mit dem stichwort "versionnumber, setting".
Die Beschreibung hat meiner meinung nach zu dem Problem gepasst:

ausblenden Quelltext
1:
You can use the Windows GetFileVersionInfo and VerQueryValue API functions to obtain version information that is compiled with your application. The following code illustrates how to do this by writing the version information to a memo control named Memo1:					


Also war ich überzeugt das richtige zu tun :?

Wenns nich funzt so tuts mir leid :(

Gruß Dennis
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Di 22.10.02 09:05 
Hi
Na gut, hier ist meine Variante.

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
TTrans = record
   b1 : byte;
    b2 : byte;
    b3 : byte;
    b4 : byte;
  end;

  PTrans = ^TTrans;

procedure GetVersionInfos(var Info: TStringList);
var
  StringBuffer         : PChar;
  VersionPointer       : PChar;
  Size                 : DWord;
  VersionValueLength   : DWord;
  sCountryCode        : string;
begin
   Info.Clear;
    Size := GetFileVersionInfoSize(PChar(Application.Exename), Size);

    if  Size > 0 then begin
      StringBuffer := AllocMem(Size);
      GetFileVersionInfo(PChar(Application.Exename), 0, Size, StringBuffer);

      VerQueryValue(StringBuffer, PChar('\VarFileInfo\Translation'), Pointer(VersionPointer), VersionValueLength);

       sCountryCode  := IntToHex(PTrans(VersionPointer)^.b2, 2) +
                 IntToHex(PTrans(VersionPointer)^.b1, 2) +
                   IntToHex(PTrans(VersionPointer)^.b4, 2) +
                          IntToHex(PTrans(VersionPointer)^.b3, 2);
       Info.Values['CountrCode'] := sCountryCode;

      if   VerQueryValue(StringBuffer, PChar('\StringFileInfo\' + sCountryCode + '\' +
          'CompanyName'), Pointer(VersionPointer), VersionValueLength) then
            Info.Values['CompanyName'] := StrPas(VersionPointer);

      if   VerQueryValue(StringBuffer, PChar('\StringFileInfo\' + sCountryCode + '\' +
          'FileDescription'), Pointer(VersionPointer), VersionValueLength) then
            Info.Values['FileDescription'] := StrPas(VersionPointer);
      if   VerQueryValue(StringBuffer, PChar('\StringFileInfo\' + sCountryCode + '\' +
          'FileVersion'), Pointer(VersionPointer), VersionValueLength) then
            Info.Values['FileVersion'] := StrPas(VersionPointer);
      if   VerQueryValue(StringBuffer, PChar('\StringFileInfo\' + sCountryCode + '\' +
          'InternalName'), Pointer(VersionPointer), VersionValueLength) then
            Info.Values['InternalName'] := StrPas(VersionPointer);
      if   VerQueryValue(StringBuffer, PChar('\StringFileInfo\' + sCountryCode + '\' +
          'LegalCopyright'), Pointer(VersionPointer), VersionValueLength) then
            Info.Values['LegalCopyright'] := StrPas(VersionPointer);
      if   VerQueryValue(StringBuffer, PChar('\StringFileInfo\' + sCountryCode + '\' +
          'LegalTradeMarks'), Pointer(VersionPointer), VersionValueLength) then
            Info.Values['LegalTradeMarks'] := StrPas(VersionPointer);
      if   VerQueryValue(StringBuffer, PChar('\StringFileInfo\' + sCountryCode + '\' +
          'OriginalFilename'), Pointer(VersionPointer), VersionValueLength) then
            Info.Values['OriginalFilename'] := StrPas(VersionPointer);
      if   VerQueryValue(StringBuffer, PChar('\StringFileInfo\' + sCountryCode + '\' +
          'ProductName'), Pointer(VersionPointer), VersionValueLength) then
            Info.Values['ProductName'] := StrPas(VersionPointer);
      if   VerQueryValue(StringBuffer, PChar('\StringFileInfo\' + sCountryCode + '\' +
          'ProductVersion'), Pointer(VersionPointer), VersionValueLength) then
            Info.Values['ProductVersion'] := StrPas(VersionPointer);
      if   VerQueryValue(StringBuffer, PChar('\StringFileInfo\' + sCountryCode + '\' +
          'Comments'), Pointer(VersionPointer), VersionValueLength) then
            Info.Values['Comments'] := StrPas(VersionPointer);

      FreeMem(StringBuffer, Size);
   end;
end;


Sieht ziemlich hässlich aus, funzt aber.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 22.10.02 10:03 
Noch eine Variante (auf die Versionsnummer beschränkt!) aus der Delphi-Praxis:
www.delphipraxis.net/viewtopic.php?t=604
Meine Variante (s. Seite 2) basiert auf Luckies Variante, und der hat sie von ... keine Ahnung, vielleicht selbstgeschrieben, vielleicht von jemandem übernommen?

Luckie? :?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 22.10.02 11:03 
@Mathias: Lies mal das Posting von dem Typen der nach dir gepostet hat in dem DP-Thread.... :wink:
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Di 22.10.02 11:50 
Ich will auch, ich will auch

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
//------------------------------------------------------------------------------
function getApplicationVersion(const AApplicationTitle: String): String;
var
  aFileName: array [0..MAX_PATH] of Char;
  pdwHandle: DWORD;
  nInfoSize: DWORD;
  pFileInfo: Pointer;
  pFixFInfo: PVSFixedFileInfo;
  nFixFInfo: DWORD;
begin
  result := '';
  GetModuleFileName(0, aFileName, MAX_PATH);
  pdwHandle := 0;
  nInfoSize := GetFileVersionInfoSize(aFileName, pdwHandle);
  if nInfoSize <> 0 then
    pFileInfo := GetMemory(nInfoSize)
  else
    pFileInfo := nil;
  if Assigned(pFileInfo) then
  try
    if GetFileVersionInfo(aFileName, pdwHandle, nInfoSize, pFileInfo) then
    begin
      pFixFInfo := nil;
      nFixFInfo := 0;
      if VerQueryValue(pFileInfo, '\', Pointer(pFixFInfo), nFixFInfo) then
      begin
         result := Format(AApplicationTitle + ' ver.  %d.%d.%d.%d',
        [HiWord(pFixFInfo^.dwFileVersionMS),
        LoWord(pFixFInfo^.dwFileVersionMS),
        HiWord(pFixFInfo^.dwFileVersionLS),
        LoWord(pFixFInfo^.dwFileVersionLS)]);
      end;
    end;
  finally
    FreeMemory(pFileInfo);
  end;
end;


Meine Variante. Du übergibst den Titel deiner Anwendung und erhältst einen string wie z.b.
MeineAnwendung ver. 1.0.0.56


Gruß
Ken
Maggi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 160

WIN XP, WIN 2003
D5 Enter D 2006
BeitragVerfasst: Di 22.10.02 11:51 
Titel: Wie wäre es damit....
Hi,

ich gebe auch mal meine Version zu Besten:

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
const
  VerInfoNames : array[0..9] of ShortString =
                            ('CompanyName','FileDescription',
                             'FileVersion','InternalName','LegalCopyright',
                             'LegalTradeMarks','OriginalFilename','ProductName',
                             'ProductVersion','Comments');


procedure TfrmInfo.FormCreate(Sender: TObject);
begin
  lbProgVersion.Caption     := GetEinVersionInfo(Application.ExeName,2);
  lbProgExeName.Caption  := GetEinVersionInfo(Application.ExeName,6);
  lbProgName.Caption       := GetEinVersionInfo(Application.ExeName,3);
  lbProgBezeichnung.Caption := GetEinVersionInfo(Application.ExeName,1);
end;

function GetVersionInfo(FileName, InfoName: String): String;
const
  //EngBrit = '080904E4';
  //EngAm   = '040904E4';
  //EngCand = '100904E4';
  Deutsch = '040704E4';
var
  Len,BufSize : LongWord;
  Buf: PChar;
  Info : PChar;

begin
  Result := '';
  BufSize := GetFileVersionInfoSize(PChar(FileName),BufSize);
  if BufSize > 0 then
  begin
    Buf := AllocMem(BufSize);
    GetFileVersionInfo(PChar(FileName), 0, BufSize, Buf);
    if VerQueryValue(Buf,PChar('\\StringFileInfo\\'+Deutsch+'\\'+InfoName),Pointer(Info),Len) then
    begin
      if Length(Info) > 0 then
        Result := Info;
    end;
    FreeMem(Buf, BufSize);
  end;
end;


function GetEinVersionInfo(FileName: String; Index: Integer): String;
var
  InfoName : String;

begin
  Result := '';
  InfoName := VerInfoNames[Index];
  Result := GetVersionInfo(FileName, InfoName);
end;


Bis denne


Maggi
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 22.10.02 11:53 
Na, nun hat mwsnet, bzw. enigma ja wirklich die Auswahl.
:)
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Di 22.10.02 11:58 
@ MAggi:

Auch eine sehr schöne Version. :lol:

@Mathias: Naja, dazu ist das Forum doch da. Nun kann er aus dem vollen schöpfen...
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 22.10.02 12:01 
Nicht ganz. Die Version von Ireniceus ist mit der von Oceanbunny identisch.
Maggi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 160

WIN XP, WIN 2003
D5 Enter D 2006
BeitragVerfasst: Di 22.10.02 12:23 
@Irenius

Danke :oops: