AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programmversion in DLL

Ein Thema von sko1 · begonnen am 28. Jun 2017 · letzter Beitrag vom 28. Jun 2017
Antwort Antwort
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

AW: Programmversion in DLL

  Alt 28. Jun 2017, 10:17
Uns den Code für dein GetCurrentVersion() zu zeigen
wird selbstverständlich nachgeholt:

Delphi-Quellcode:
function GetCurrentVersion(): 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;

Diesen Code nutze ich seit Jahren für die Versionsausgabe in Windows-Exe-Projekten

Die Rückgabe aus der DLL ist "Version : 1.0.0.0" anstelle der erwarteten "1.0.3.0" die im Projekt eingestellt sind.

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Programmversion in DLL

  Alt 28. Jun 2017, 10:21
ParamStr(0) liefert doch immer den Dateinamen deiner Exe!
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Programmversion in DLL

  Alt 28. Jun 2017, 10:23
ParamStr(0) liefert doch immer den Dateinamen deiner Exe!
stimmt, jetzt wo Du das schreibst wird es mir klar!
... und wie komm ich an die DLL von innerhalb der DLL heraus?

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#4

AW: Programmversion in DLL

  Alt 28. Jun 2017, 10:25
Spontan würde ich es mit GetModuleFilename versuchen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Programmversion in DLL

  Alt 28. Jun 2017, 10:25
ParamStr(0) liefert doch immer den Dateinamen deiner Exe!
stimmt, jetzt wo Du das schreibst wird es mir klar!
... und wie komm ich an die DLL von innerhalb der DLL heraus?

Ciao
Stefan
So :

Delphi-Quellcode:
function getModuleName: string;
  var
    FileName: array[0..MAX_PATH - 1] of Char;
  begin
    GetModuleFileName(HInstance, FileName, SizeOf(FileName));
    Result := string(FileName);
  end; { DSiRealModuleName }
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#6

AW: Programmversion in DLL

  Alt 28. Jun 2017, 10:27
Nicht eher Length statt SizeOf?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Programmversion in DLL

  Alt 28. Jun 2017, 10:35
Nicht eher Length statt SizeOf?
Da es ein statisches Array ist funktioniert sizeof auch. Liefert auch gleich die Grösse in Byte
Bei Length muss auch noch die Grösse der Chars berücksichtigt werden also
length(FileName) * sizeof(char)
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#8

AW: Programmversion in DLL

  Alt 28. Jun 2017, 10:38
Laut Doku:
Zitat:
nSize [in]
The size of the lpFilename buffer, in TCHARs.
Deshalb ja meine Frage, es geht ja nicht um die Bytegröße, sondern die Stringlänge.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: Programmversion in DLL

  Alt 28. Jun 2017, 10:31
Funktioniert, vielen Dank!

Und die anderen Ratschläge betreffs der Übergabe werde ich auch noch umsetzen...

Ciao
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz