AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Namenskonventionen bei API-Calls?
Thema durchsuchen
Ansicht
Themen-Optionen

Namenskonventionen bei API-Calls?

Ein Thema von Phoenix · begonnen am 3. Mai 2004 · letzter Beitrag vom 3. Mai 2004
Antwort Antwort
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#1

Namenskonventionen bei API-Calls?

  Alt 3. Mai 2004, 09:22
Neue Frage, neuer Thread

Im MSDN stehen die API-Funktionen direkt beschrieben.
In der DLL stehen sie - soe wie ich das jetzt herausgefunden habe - immer als FunktionsnameA und FunktionsnameW exportiert zur Verfügung.

Was hat es damit auf sich? Muss ich die A oder die W nehmen oder wovon hängt dies ab.
Ein bisschen Hintergrundinfo schadet dabei natrülich nie
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Namenskonventionen bei API-Calls?

  Alt 3. Mai 2004, 09:36
"*A" ist die Ansi-Charackter Version. "*W" die Unicode (WideCharackter Version). Unter Unicode Betriebssystemen vom Microsoft (NT ff.) ist die A-Version eigentlich nur eine leere Hülse in der die Zeichen nur von Ansi nach Unicode umgewandelt werden.

Aufrufen tzut man sowieso explizit keine dieser Versionen, sondern immer die Ohne "A" oder "W". Unter nicht Unicode Betriebsystemen wird dann die A-Version genommen, sofern vorhanden, wenn nicht sowieso eine Funktion diesen Namens existiert. Unter Unicode Betriebssystem, wie Windows 2000, handelt es sich dabei nur um ein in der WinUser.h definiertes Markro:

Code:
#ifdef UNICODE
#define CreateWindowEx CreateWindowExW
#else
#define CreateWindowExA
#endif // !UNICODE
Unter Windows 200 enthält der Programmcode der A-Version lediglich eine Umwandlung der Ansi-Zeichenfolge in Unicode und den anschließenden Aufruf von der W-Version. Nach der Rückkkehr der W-Version gibt die A-Version noch die zuvor zur Umwandlung belegten Speicher wieder frei.

Ich hoffe, das ist erstmal ausführlich genung.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#3

Re: Namenskonventionen bei API-Calls?

  Alt 3. Mai 2004, 09:40
Zitat von Luckie:
Aufrufen tut man sowieso explizit keine dieser Versionen, sondern immer die Ohne "A" oder "W".
Erm. Nunja, wenn ich die DLL anspreche sagt mir die exe bei der Ausführung freilich, das z.B. bei RegOpenKeyEx der Prozedureinsprungspunkt nicht gefunden wurde. Von daher muss ich tatsächlich die A oder W direkt ansprechen, oder sehe ich das falsch?

Ansonsten leuchtet mir das jetzt ein
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Namenskonventionen bei API-Calls?

  Alt 3. Mai 2004, 09:56
Damit scheint es sich wohl mal wieder um die MS typischen Außnahmen zuhandeln, du unser Leben als Windows Programmierer mal wieder so unheimlich interessant machen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Namenskonventionen bei API-Calls?

  Alt 3. Mai 2004, 11:02
Moin!

In den DLLs von Windows gibt es immer nur A und W Versionen. Eine Version ohne A oder W gibt es meist nicht. Auch Delphi definiert jede A Version als den Funktionsnamen ohne A. Diese Funktionen werden von den Headern bzw. der Units von Borland bereitgestellt als Alias auf die Ansi-Version.

Und für dich gilt: so lange du nicht mit WideStrings (also Unicode arbeitest), nutze die AnsiVersion.

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#6

Re: Namenskonventionen bei API-Calls?

  Alt 3. Mai 2004, 12:03
Okay. Danke
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  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 11:41 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