AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Compilerdirective aus C++ in Delphi, wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Compilerdirective aus C++ in Delphi, wie?

Ein Thema von Alter Mann · begonnen am 21. Mai 2011 · letzter Beitrag vom 28. Sep 2013
Antwort Antwort
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
947 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Compilerdirective aus C++ in Delphi, wie?

  Alt 21. Mai 2011, 11:38
Hallo, der Titel sagt schon alles

Wie kann ich diese C++ Direktive in Delphi umsetzen?
Code:
#if (_WIN32_WINNT >= 0x0501)
Ein Versuch:
Delphi-Quellcode:
var
  _WIN32_WINNT : WORD = 0;

implementation

uses
  SysUtils;

procedure InitUnit;
var
  OSVersionInfo: TOSVersionInfo;
begin
  OSVersionInfo.dwOSVersionInfoSize := SizeOf(OSVersionInfo);
  if GetVersionEx(OSVersionInfo) then
   _WIN32_WINNT := OSVersionInfo.dwPlatformId;
end;

initialization
  InitUnit;
scheitert hier
{IF (_WIN32_WINNT >= $0501)} da eine Konstante erwartet wird.

Was nun?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Compilerdirective aus C++ in Delphi, wie?

  Alt 21. Mai 2011, 11:56
Mit Quellcode garnicht, daß _WIN32_WINNT müsste dafür eine Konstante sein, denn Compilerdirektiven werden vom Compiler ausgewertet.

Du kannst das nicht direkt übersetzen.
Due mußt diese Konstante selber setzen, bzw. laß diese Abfrage einfach weg. (kommt aber darauf an, was du willst)

Du müßtest diese Konstante selber setzen und entscheidest damit für welche Windows-Versionen dein Programm kompiliert wird.

Ider dz nutzt ein "normales" if und entscheidest dann zur Laufzeit, welcher Code genommen wird ... jenachdem, wo das Programm gerade läuft.
$2B or not $2B
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
947 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Compilerdirective aus C++ in Delphi, wie?

  Alt 21. Mai 2011, 12:11
Danke, ich habe es befürchtet.

Schönes WE.
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#4

AW: Compilerdirective aus C++ in Delphi, wie?

  Alt 28. Sep 2013, 13:01
Zum Beispiel:

type _WIN32_WINNT = $0400..$0602;
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Compilerdirective aus C++ in Delphi, wie?

  Alt 28. Sep 2013, 14:24
Sowieso ist es besser zur Laufzeit abzufragen ob bestimmte API-Funktionen die man benützen möchte vorhanden sind oder nicht.
(mit LoadLibrary() und GetProcAdress())
Wenn die API-Funktionen nicht vorhanden sind reduziert sich der Funktionsumfang der Anwendung; es läuft aber trotzdem auch auf älteren Windows Versionen.
Manchmal werden ältere Windows Versionen per Service Pack von Microsoft nachgerüstet (kommt leider viel zu selten vor).
Würde man nur die Windows Version abfragen und aufgrund dessen entscheiden ob man die gewünschte API benützen kann oder nicht würde man hier falsch reagieren.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Compilerdirective aus C++ in Delphi, wie?

  Alt 28. Sep 2013, 14:28
Sowieso ist es besser zur Laufzeit abzufragen ob bestimmte API-Funktionen die man benützen möchte vorhanden sind oder nicht.
(mit LoadLibrary() und GetProcAdress())
Mit neueren Delphi-Versionen würde ich auf diesen umständlichen Weg nicht mehr gehen und Delay load(http://www.drbob42.com/examines/examinC1.htm) verwenden.

Manchmal werden ältere Windows Versionen per Service Pack von Microsoft nachgerüstet (kommt leider viel zu selten vor).
Gabs mal - wirds nicht mehr geben.
Im Gegenteil wir werden wieder schnellere neue Windows-Versionen (Windows 8/8.1/8.2) zu Apple-Ähnlichen Preisen finden und die großen SP's wie bei W2K/SP werden (leider) aussterben.
Windows Vista - Eine neue Erfahrung in Fehlern.
  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 08:24 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