Hallo Delphifreunde!
Zur Zeit beschäftige ich mich gerade damit, wie ein 32-Bit-Programm unter 32- und 64-Bit-Windows natürlich lauffähig sein soll und zusätzlich die Bitanzahl des
OS selbständig erkennen kann. Bisherige Recherchen waren erfolglos.
Also, sizeof(Pointer) fällt als Erkennungsmerkmal aus, weil das auch unter 64 Bit nur 4 liefert, wohl wegen des 32-Bit-Subsystems.
Nun könnte man natürlich die IsWow64Process-Funktion benutzen, doch die ist in der 32-Bit-Version der kernel32.dll nicht enthalten, so daß das Programm an dieser Stelle mit einer Fehlermeldung abbricht ("Prozedureinsprungpunkt wurde .... nicht gefunden"). Fände man diese Funktion in besagter
DLL, dann ist es ein 64-Bit-Windows, anderenfalls ein 32-Bit-Windows.
Um den Programmabbruch abzufangen, versuchte ich es mit try...except...end, bekam es aber nicht - kann try solche Mißerfolge wie fehlende DLLs oder fehlende Funktionen in den DLLs nicht abfangen? Oder wie erreicht man das?
Was ich nicht möchte: Mit OSVersionInfo "rumzumachen", um 32 von 64 Bit zu unterscheiden, weil das verdammt umständlich ist und künftige
OS-Versionen logischerweise noch nicht berücksichtigen kann.
Gibt es einen einfachen Weg?
Natürlich kann man immer für beide Bitanzahlen zwei getrennte Programme erstellen, doch ist das vergleichsweise unelegant.
Vielen Dank & viele Grüße
Delphi-Laie