Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Was ist der unterschied zwischen GetModuleHandle,GetModuleHa (https://www.delphipraxis.net/50172-ist-der-unterschied-zwischen-getmodulehandle-getmoduleha.html)

Arnulf 21. Jul 2005 14:48


Was ist der unterschied zwischen GetModuleHandle,GetModuleHa
 
Hallo
In delphi selbst finde ich keine hilfe zu den functionen.
Auch msdn gibt keine Auskunft was das eigentlich ist.
Kann mir jemand sagen worin der unterschied zwischen den verschiedenen GetModuleHandle's liegt?

function GetModuleHandle; external kernel32 name 'GetModuleHandleA';
function GetModuleHandleA; external kernel32 name 'GetModuleHandleA';
function GetModuleHandleW; external kernel32 name 'GetModuleHandleW';

Danke
Arnulf

barf00s 21. Jul 2005 14:52

Re: Was ist der unterschied zwischen GetModuleHandle,GetModu
 
kurz gesagt

das A steht für ANSI (singleBYTE) - ein zeichen belegt 1 byte im speicher
das W steht für WIDE (multiBYTE) - ein zeichen belegt 2 byte im speicher - für sonderzeichen und son krams die zeichentabelle kann daher bis zu 65536 zeichen aufnehmen

ohne alles ist auch A(NSI) - weil das eben das meistverbreitetste ist -

Luckie 21. Jul 2005 15:03

Re: Was ist der unterschied zwischen GetModuleHandle,GetModu
 
Unter NT ff. Gibt es für jede Funktion, die eine Zeichenkette zurückliefert, immer noch eine UniCode (WideString) Version. Wobei die Ansi Versionen leer sind und nur die UniCode Versionen aufrufen. Dies hat kompatibilitäts Gründe.

Olli 21. Jul 2005 17:06

Re: Was ist der unterschied zwischen GetModuleHandle,GetModu
 
Luckies Kommentar leicht korrigiert:
Unter NT ff. Gibt es für fast jede Funktion, die eine Zeichenkette als Parameter entgegennimmt oder zurückliefert, immer noch eine UniCode (WideString) Version.
... Gegenbeispiel: GetProcAddress()

Zitat:

Zitat von Luckie
Wobei die Ansi Versionen leer sind und nur die UniCode Versionen aufrufen. Dies hat kompatibilitäts Gründe.

Irrtum. A.) man kann kaum von leer sprechen, denn sie tun was und B.) rufen sie oft garnicht eine Unicode-Version sondern "Zwischenfunktionen" auf. Das kann man am besten mit einem Disassembler oder Debugger und den Symbolen von MS sehen.

Übrigens, @Arnulf, es gibt mehrere Unicode-Standards, daher muß man eingrenzen, daß wir bei Windows NT ff. nur vom 16bittigen Unicode-Zeichensatz reden. Es gibt noch solche mit Variabler Zeichenbreite und solche mit mehr als 16bit (namentlich mit 32bit).
Unicode ermöglicht es im Gegensatz zu dem Codepagemodell, welches mit ANSI (und den Geschwisterchen) verfolgt wurde, mehrere verschiedene Zeichensätze (zB Hebräisch, Chinesisch und Russisch) zusammen darzustellen. Bei ANSI ist immer nur eine dieser Codeseiten aktiv!

Unter C/C++ werden die Funktionen je nach Präprozessorschalter als A oder W eingebunden. Der Name selbst wird vom Präprozessor als Makro ohne A/W umdefiniert. So wird es sehr leicht ein Programm sowohl als Unicode- als auch als Ansi-Version zu kompilieren.

Arnulf 22. Jul 2005 11:18

Re: Was ist der unterschied zwischen GetModuleHandle,GetModu
 
Also echt - ich beschäftige mich so viel mit Systemprogrammierung derzeit - woher lernt man das alles?
Ich hab mal versucht das online psdk von microsoft zu studieren, aber davon war ich etwas erschlagen.

Gibt es ein gutes Buch? wo man das nachlesen kann. - Ich mein eines das etwas einfacher gestrickt ist, programmieren ist hald nur mein Hobby :).

Wenn geht auf deutsch - vielleicht auch das psdk auf deutsch - nicht, daß ich nicht englisch könnte, aber Fachliteratur ist hald deutsch einfacher, vor allem wenn man nicht wirklich vom fach ist.
Wichtig für mich wäre auch Speicherverwaltung von Windows.
Ich hab versucht das auf unserer Technischen Uni zu bekommen, aber die hatten nur Api Bücher.

Danke für die schnellen Antworten!
Arnulf

Bernhard Geyer 22. Jul 2005 11:32

Re: Was ist der unterschied zwischen GetModuleHandle,GetModu
 
Zitat:

Zitat von Olli
Übrigens, @Arnulf, es gibt mehrere Unicode-Standards, daher muß man eingrenzen, daß wir bei Windows NT ff. nur vom 16bittigen Unicode-Zeichensatz reden. Es gibt noch solche mit Variabler Zeichenbreite und solche mit mehr als 16bit (namentlich mit 32bit).

Auch nicht ganz richtig. NT unterstützt nur 16-Bit Unicode. Ab 2000 wird 32-Bit-Unicode unterstützt, wobei die Text für die Übergabe an die Win32-API UTF16-Codiert sein müssen.

Olli 22. Jul 2005 11:51

Re: Was ist der unterschied zwischen GetModuleHandle,GetModu
 
Zitat:

Zitat von Bernhard Geyer
Auch nicht ganz richtig. NT unterstützt nur 16-Bit Unicode. Ab 2000 wird 32-Bit-Unicode unterstützt, wobei die Text für die Übergabe an die Win32-API UTF16-Codiert sein müssen.

Aha. Wußte ich nicht. Wo kann man das nachlesen. Mir war so, als sei intern alles noch 16bit (sind die UNICODE_STRINGs im K-Mode und der UM-Native-API ja auch).

Luckie 22. Jul 2005 12:00

Re: Was ist der unterschied zwischen GetModuleHandle,GetModu
 
Zitat:

Zitat von Arnulf
Also echt - ich beschäftige mich so viel mit Systemprogrammierung derzeit - woher lernt man das alles?

Lesen, lesen, lesen. Hier im Forum (Da besonders die beiträge von Olli, Nico, Hagen und Robert Marquardt.), Bücher:
http://www.amazon.de/exec/obidos/ASIN/3860636154/delphipraxis-21

http://www.amazon.de/exec/obidos/ASIN/0201604426/delphipraxis-21

OpenSource Programm studieren, selber viel schreiben, ...

Zitat:

Wenn geht auf deutsch - vielleicht auch das psdk auf deutsch - nicht, daß ich nicht englisch könnte, aber Fachliteratur ist hald deutsch einfacher, vor allem wenn man nicht wirklich vom fach ist.
Diese Fachbücher wirst du fast nur auf englisch bekommen, das PSDK sowieso.

Zitat:

Wichtig für mich wäre auch Speicherverwaltung von Windows.
Ich hab versucht das auf unserer Technischen Uni zu bekommen, aber die hatten nur Api Bücher.
Sie Bücher oben.

Arnulf 22. Jul 2005 17:34

Re: Was ist der unterschied zwischen GetModuleHandle,GetModu
 
Danke ich werd mal schauen wo ich die Bücher auftreiben kann. - abgesehen von Amazon.

Trotzdem möchte ich noch ein paar Fragen stellen - vor allem zur uall collection - die dinge die ich noch nicht verstanden hab und das betrifft vor allem Speicher Verwaltung.
Werde dazu nen neuen Thread auf machen - muß mir nur einen sinnvollen Titel überlegen :).
Arnulf

Luckie 22. Jul 2005 17:36

Re: Was ist der unterschied zwischen GetModuleHandle,GetModu
 
Warum nicht Amazon? Ansonsten solltest du sie in jeder Buchhandlung bestellen können. Die englischen dürften aber sehr lange dauern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:00 Uhr.
Seite 1 von 2  1 2      

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