![]() |
mal ne frage zu dll und pchar
wenn ich ein interface aus klassen in delphi geschaffen habe, und dies in eine dll packen will, damit andere sprachen auch darauf zugreifen
können, wass muss ich da beachten? besonders Strings... ist da PCHAR vorteilhafter? auch in klassen? thx |
Hallo Dezipaitor,
wenn Du beabsichtigst, DLL’s zu schreiben, die in Verbindung mit einer anderen Programmiersprache verwendet werden sollen, solltest Du bei der Wahl der verwendeten Datentypen einige Vorsicht walten lassen. Byte, 1 Byte, 8-Bit-Wert, vorzeichenlos Word, 2 Byte, 16-Bit-Wert vorzeichenlos Cardinal, 4 Byte, 32-Bit-Wert vorzeichenlos SmallInt, 1 Byte, 8-Bit-Wert vorzeichenbehaftet ShortInt, 2 Byte, 16-Bit-Wert vorzeichenbehaftet Integer, 4 Byte, 32-Bit-Wert vorzeichenbehaftet AnsiChar, 1 Byte, ANSI Zeichen WideChar, 2, Unicode Zeichen PChar, 4 Byte, Zeiger auf nullterminierten String Double, 8 Byte, 64-Bit Realwert WordBool, Byte, Boolescher Wert LongBool, 4 Byte, Boolescher Wert THandle, 4 Byte, Windows Handle s. vgl. Dr.Uwe Barlage und Matthias Hölzer – Direkte Windows API Programmierung mit diesen Win32 Datentypen kannst Du ruhig arbeiten bye |
Moin Zusammen,
@Duffy: Wenn man es genau nimmt, muss bei den Typen cardinal und integer noch hinzugefügt werden, dass die Angabe nur bei 32-Bit Compilaten gilt, da sie als generische Datentypen angesehen werden. Deren Verwendung muss also beim Wechsel des Compilers (z.B. auf einen 64 Bit Compiler) berücksichtigt werden. PChar ist übrigens ein Zeiger auf einen nullerminierten ANSI-String. Da THandle weiter nichts als ein integer ist (gemäss Typdeklaration in Delphi), finde ich die Umschreibung es handele sich um ein Windows Handle interessant, denn in der API werden ja Unmengen verschiedener Handeltypen verwendet, die in C ja auch vom Compiler unterschieden werden. @Dezipaitor: Der Datentyp string hat, wenn er denn als Hugestring deklariert ist (Standard), den Nachteil nur für Borlandsprachen vorhanden zu sein. Um Probleme zu vermeiden, die sich aus der Verwendung des Types string ergeben zu vermeiden (siehe auch den Kommentar, zu Beginn einer von der IDE erzeugten Rumpf DLL), wäre es wohl ganz sinnvoll darauf zu verzichten, und PCHAR bzw PWideChar zu verwenden. |
Hallo,
@Christian Seehase ... Einfach wäre auch gegangen bye |
Zitat:
Zitat:
Unter Linux kann man WideString jedoch nicht verwenden, da er dort wie AnsiString mit Referenzierung arbeitet. |
Moin Duffy,
Zitat:
|
Hallo,
es ging doch darum, wie heute DLL's geschrieben werden. Selbst Microsoft DLL's werden nicht kompatibel zu 64-Bit sein. Wenn man keine homogene Plattform einsetzt oder?. bye |
Moin Duffy,
da in den Headern der Windows API schon gesteuert wird, ob eine Anwendung für 64 Bit erstellt werden soll oder nicht, wäre ich mir da nicht so sicher. Windows für 64 Bit existiert ja. Ich fand's nur erwähnenswert, dass man daran denken sollte, dass so manche Datentypen eine compilerabhängigen Wertebereich haben. |
Hallo,
lassen wir’s gut sein. Über solche Themen kann man stundenlang diskutieren und ganze Elaborate verfassen. Also nicht böse sein, bis bald mal wieder. bye |
Frage
Und wieder mal habe ICH die dümmste Frage von allen(versteht es ich bin einer der jüngsten ;) )
Für was steht dll??? Und was bringt es sich(Hab's noch nie in Delphi gebraucht--> weis ja auch nicht obs wichtig ist zum programmieren ;) ) Also danke im Voraus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 Uhr. |
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