Avatar billede vint Nybegynder
20. december 2006 - 22:24 Der er 10 kommentarer og
1 løsning

Udtræk af oplysninger om programmet (version mv.)

Hej.

Er det muligt at trække oplysninger ud af programmet (programnavn, versionsnummer, copyright, udgiver osv.)

Noget i retning af

Strversion:= application.Version;
(Jeg har ingen ide om ovenstående, det er et skud i tågen)
Avatar billede vallemanden Nybegynder
20. december 2006 - 22:30 #1
øjeblik, skal lige finde koden :)
Avatar billede vallemanden Nybegynder
20. december 2006 - 22:32 #2
function GetVersion: string;
var
  VerInfoSize: DWORD;
  VerInfo: Pointer;
  VerValueSize: DWORD;
  VerValue: PVSFixedFileInfo;
  Dummy: DWORD;
begin
  VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
  GetMem(VerInfo, VerInfoSize);
  GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
  VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
  with VerValue^ do
  begin
    Result := IntToStr(dwFileVersionMS shr 16);
    Result := Result + '.' + IntToStr(dwFileVersionMS and $FFFF);
    Result := Result + '.' + IntToStr(dwFileVersionLS shr 16);
    Result := Result + '.' + IntToStr(dwFileVersionLS and $FFFF);
  end;
  FreeMem(VerInfo, VerInfoSize);
end;
20. december 2006 - 23:05 #3
Undskyld at jeg bryder ind.
Hvilket program er det man udtrækker versions nummeret af?
Hvis det er det program man lige selv har lavet, så ved man da vel bedst selv hvilket versions nummer det har.
Eller er det noget helt andet der er tale om.
Avatar billede vint Nybegynder
20. december 2006 - 23:10 #4
Ja, det er ens egne udviklede programmer.

Men for at spare tid og arbejde, så kan det være smart, at en kode selv udtrækker værdierne.

Jeg har fx flere steder i mit program skrevet, hvilken version, der er tale om.

Det vil være dejligt at kunne udtrække disse tal automatisk i stedet for at skulle gennem hele programmet og finde alle de steder, det skal opdateres fx.
20. december 2006 - 23:22 #5
Vil det sige at hver gang man rekompilerer så forhøjes versions nummeret?
Det må så være et internt nummer.
Det jeg plejer at lave er en MessageBox, hvor jeg så selv har defineret hvor mange rettelser og tilføjelser der skal til før jeg kalder det er ny version.
Avatar billede vint Nybegynder
20. december 2006 - 23:25 #6
Under project => options kan man definere versionsnummeret og her kan man også få Delphi til selv at forøge "build" værdien for hver gang du builder dit projekt. (ikke versionsnummeret, men build nummeret - i flg. nummer er det nr. 4 "version 1.2.3.4")
21. december 2006 - 20:45 #7
Ok
Jeg takker så ydmygt for oplysningerne.

Mvh
Anton
Avatar billede vint Nybegynder
27. december 2006 - 16:11 #8
Hej igen.

Kan jeg få et "gratis" svar på et tillægsspørgsmål ;o)

Nu ønsker jeg at bruge versionsnummeret, som bliver trukket ud, i forbindelse med en string.

Men det giver selvsagt en kompileringsfejl da det er "incompatible types string and cardinal"

Jeg har prøvet FloatToStr(GetVersion) og IntToStr(GetVersion) men gør jeg det, bliver det til et 9-cifret langt tal, der intet har med versionsnummeret at gøre.

Kan jeg ikke bruge ovenstående GetVersion, hvis jeg ønsker at bruge det i en string for at vise det i en label?
Avatar billede vint Nybegynder
27. december 2006 - 16:27 #9
Meget mærkeligt.

Laver jeg det i en form, så sker der ingen fejl og alt er ok (uden brug af IntToStr osv.)

Men gør jeg det i den form, hvor jeg ønsker at vise GetVersion-resultatet, så får jeg fejlen "incompatible types string and cardinal".

Og begge forms har det samme indhold under uses i interface afsnittet.
Avatar billede vallemanden Nybegynder
30. december 2006 - 08:04 #10
har du prøvet at ligge det ind i en string?
Avatar billede vallemanden Nybegynder
30. december 2006 - 08:09 #11
procedure TForm1.Button1Click(Sender: TObject);
var
s : string;
begin
  s:=getversion;
  label1.Caption:=s;
// ELLER
Label1.Caption:=getversion;
end;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester