Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi mal ne frage zu dll und pchar (https://www.delphipraxis.net/4759-mal-ne-frage-zu-dll-und-pchar.html)

Dezipaitor 11. Mai 2003 00:00


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

Duffy 11. Mai 2003 00:39

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

Christian Seehase 11. Mai 2003 02:01

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.

Duffy 11. Mai 2003 11:50

Hallo,
@Christian Seehase ... Einfach wäre auch gegangen
bye

jbg 11. Mai 2003 11:59

Zitat:

Zitat von Christian Seehase
in der API werden ja Unmengen verschiedener Handeltypen verwendet, die in C ja auch vom Compiler unterschieden werden.

Aber nur, wenn #define STRICT deklariert ist. :wink:


Zitat:

Um Probleme zu vermeiden, [...] wäre es wohl ganz sinnvoll darauf zu verzichten, und PCHAR bzw PWideChar zu verwenden.
WideString kann auch verwendet werden, da dieser dem Typ LPWSZ entspricht, was wiederum ein PWideChar ist. Nur kann man mit WideString besser (im Sinne von einfacher) arbeiten als mit PWideChar.
Unter Linux kann man WideString jedoch nicht verwenden, da er dort wie AnsiString mit Referenzierung arbeitet.

Christian Seehase 11. Mai 2003 12:14

Moin Duffy,

Zitat:

Zitat von Duffy
... Einfach wäre auch gegangen

:?:

Duffy 11. Mai 2003 12:24

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

Christian Seehase 11. Mai 2003 15:35

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.

Duffy 11. Mai 2003 15:57

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

Nicodius 11. Mai 2003 18:26

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.
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