Delphi-PRAXiS

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

Daniel B 11. Mai 2003 18:29

Re: Frage
 
Hallo,
Zitat:

Zitat von Nicodius
Für was steht dll???

Dynamic Load Library.

Grüsse, Daniel :hi:

Duffy 11. Mai 2003 18:35

Hallo Nicodius,
Zitat:

DLL
Abkürzung für "Dynamic Link Library" • Spezielle Programmroutinen, die erst aus einer sogenannten Programmbibliothek geladen werden, wenn diese auch benötigt werden. Dieses Verfahren spart Speicherplatz im Arbeitsspeicher.
Wenn Du weitere Abkrzungen erklärt haben willst, dann habe ich einen guten Link für Dich.

GLOSSAR.de - ARCHmatic-Glossar und -Lexikon

bye

sakura 11. Mai 2003 18:37

DLLs können zum Beispiel genutzt werden, um Anwendungen dynamisch zu erweitern. Das heißt, der Entwickler entwirft eine Standard-Schnittstelle, mit der ein Programm durch DLLs erweitert werden kann. Später können verschiedene Anbieter zusätzliche Module ausliefern, ohne daß die gesamte Anwendung neu gemacht werden muß.

Ein einfaches Beispiel wäre mein neues Tutorial zur Erweiterung von Delphi: http://www.delphipraxis.net/viewtopic.php?t=5300

...:cat:...

Nicodius 11. Mai 2003 19:15

Danke ;)
 
Danke für sooo viele Antworen DANKE


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 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