Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   is my delphi App x 64 ??? (https://www.delphipraxis.net/162747-my-delphi-app-x-64-a.html)

bernhard_LA 4. Sep 2011 08:31

is my delphi App x 64 ???
 
ich möchte feststellen ob meine App wirlich x64 ist und hierfür den eigenen PE Header zur Programmlaufzeit auslesen, klappt aber nicht da der Zugriff auf die exe zur Programmlaufzeit nicht geht? Was nun ??

var f : TFileStream;
begin



/// check if PE header is 32 or 64 bit
/// http://stackoverflow.com/questions/2...ither-delphi-o

f:=(TFileStream.Create(Application.ExeName,fmOpenR ead));

if Isx64(f) then
begin
RadioGroupBits.ItemIndex := 1;
end
else
begin
RadioGroupBits.ItemIndex := 0;
end;


f.free

Klaus01 4. Sep 2011 08:47

AW: is my delphi App x 64 ???
 
Guten Morgen,

Du könntest Dir eine Kopie der laufenden Exe machen und diese testen.

Grüße
Klaus

Uwe Raabe 4. Sep 2011 09:21

AW: is my delphi App x 64 ???
 
Zitat:

Zitat von bernhard_LA (Beitrag 1121577)
ich möchte feststellen ob meine App wirlich x64 ist und hierfür den eigenen PE Header zur Programmlaufzeit auslesen

Das hört sich für mich so ein bisschen paranoid an. Da du erst ab Delphi XE2 überhaupt eine x64-Exe erzeugen kannst, gibt es dort doch wirklich einfachere und schnellere Methoden, diesen Status zu ermitteln.

Z.B.
Delphi-Quellcode:
{$IFDEF CPUX64}
.

Daniel 4. Sep 2011 10:30

AW: is my delphi App x 64 ???
 
Entweder das IFDEF oder man prüft zur Laufzeit die Größe des Datentyp "Pointer". Wenn man fremde EXEn oder DLLs untersuchen will, dann ist z.B. das Microsoft-Werkzeug "FileVer" hilfreich, welches es in den sog. Support-Tools gibt.

MEissing 4. Sep 2011 10:56

AW: is my delphi App x 64 ???
 
Wenn man etwas mehr haben möchte:
http://www.mitec.cz/pe.html

Als Anwendung habe ich dann auch schon häufiger den EXE Explorer benutzt:
http://www.mitec.cz/exe.html

UliBru 4. Sep 2011 11:04

AW: is my delphi App x 64 ???
 
Hallo,

ich hatte unmittelbar diesselbe Frage nach dem ersten Kompilieren mit XE2.
Eine simple Lösung: Taskmanager. Der Taskmanager zeigt 32bit-Prozesse mit *32 an. Bei 64bit-Programmen nicht.

himitsu 4. Sep 2011 12:57

AW: is my delphi App x 64 ???
 
Zitat:

klappt aber nicht da der Zugriff auf die exe zur Programmlaufzeit nicht geht
Wieso sollte es nicht gehn?

Du mußt allerdings die Datei auch mit entsprechenden Sharing-Rechten öffnen ... TFileStream öffnet alle Dateien aber "exklusiv".
(daß Borcodero daran immernoch nichts geändert hat, ist voll blöd ... zumindestens fremde Leserechte hätte man inzwischen mal erlauben können)

Zitat:

Entweder das IFDEF oder man prüft zur Laufzeit die Größe des Datentyp "Pointer".
Delphi-Quellcode:
{$IF SizeOf(Pointer) = 8}
  ... // 64 Bit
{$ELSE}
  ... // vermutlich 32 Bit
{$IFEND}
(das sollte in jedem Compiler gehn, welcher diese Conditional Expression unterstützt)

Delphi-Quellcode:
IF SizeOf(Pointer) = 8 THEN BEGIN
  ... // 64 Bit
END ELSE BEGIN
  ... // vermutlich 32 Bit
END;
oder man schaut eben, ob es entsprechende Defines gibt, ala CPUX64.


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