Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi function in dll, die string zurückgibt (https://www.delphipraxis.net/20398-function-dll-die-string-zurueckgibt.html)

Nicolai1234 17. Apr 2004 12:36


function in dll, die string zurückgibt
 
Wie kann ich eine dll schreiben, die als rückgabewert einen String hat? Ich habe gehört, da muss man irgendwas beachten... :wiejetzt:

d3g 17. Apr 2004 12:42

Re: function in dll, die string zurückgibt
 
Du musst wissen, dass ein String ein Pointer ist, und dass du die borlandmm.dll zusätzlich zu deiner DLL mitausliefern musst. Lass Strings also einfach ganz weg und benutze stattdessen PChar und array[] of Char.

Bernhard Geyer 17. Apr 2004 12:43

Re: function in dll, die string zurückgibt
 
Falls Du wirklich einen Delphi-String zurückgeben willst, so bist du auf beiden Seiten auf Delphi (C++-Builder) festgelegt.

Wenn Du eine neue DLL mit den Delphi-DLL-Experten erstellst, so bekommst Du den entsprechenden Hinweis kostenlos:
Zitat:

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muß sich in der
ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt-
Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die
Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle
Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die
sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur
Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL.
Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String-
Informationen als PChar- oder ShortString-Parameter übergeben. }
Willst Du auch mit C/C++ oder VB auf deine DLL zugreifen, so darfst Du nur PChar/PWideChars verwenden und mußt klare regeln bezüglich speicherfreigabe aufstellen (Soll Platz schon von aufrufer bereitgestellt werden od wird er von der DLL angefordert...

Nicolai1234 17. Apr 2004 12:44

Re: function in dll, die string zurückgibt
 
Wie kann ich das machen?

Ich habe folgende function:

Delphi-Quellcode:
function rueckgabe(s:string):string;
Es wird ein string übergeben und es kommt ein string zurück! Wie muss ich es ändern?

Nicolai1234 17. Apr 2004 12:52

Re: function in dll, die string zurückgibt
 
wenn ich string durch pchar ersetze kommt folgende fehlermeldung:
[Fehler] texterkennung.pas(66): Bei der vorherigen Deklaration von rueckgabe wurde die Direktive 'overload' nicht angegeben

Was heißt das???

Meflin 17. Apr 2004 12:55

Re: function in dll, die string zurückgibt
 
vermutlich dass du hinter den functionblabla;overload; hinbschreiben musst ;-)

Pseudemys Nelsoni 17. Apr 2004 12:58

Re: function in dll, die string zurückgibt
 
wenn du string sowieso nicht benutzt, dann lösch die funktion vor deiner neuen, wahrscheinlich hast du 2 functionen mit gleichem namen deklariert.

Nicolai1234 17. Apr 2004 13:05

Re: function in dll, die string zurückgibt
 
Geht jetzt, danke.

Gibt es eine Function wie z.B PCHARrtoSTR oder so ähnlich??

Meflin 17. Apr 2004 13:06

Re: function in dll, die string zurückgibt
 
meinst du vielleicht PChar, die sollte einen char in einen string umwandeln oder umgekehrt!?

Pseudemys Nelsoni 17. Apr 2004 13:08

Re: function in dll, die string zurückgibt
 
mit dem typcasting muss das gehen : string(deinpchar)

Nicolai1234 17. Apr 2004 13:09

Re: function in dll, die string zurückgibt
 
In meinem Buch steht folgendes:
Zitat:

Umwandeln eines Strings in einen PChar:
var p: PChar
...
p := Pchar(Edit1.text);
Wie geht das umgekehrt, also:
Edit1.text := p

Pseudemys Nelsoni 17. Apr 2004 13:10

Re: function in dll, die string zurückgibt
 
Delphi-Quellcode:
Edit1.text := string(p);

Nicolai1234 17. Apr 2004 13:12

Re: function in dll, die string zurückgibt
 
Danke, jetzt gehts!

Innerhalb einer dll kann ich doch mit strings arbeiten, oder? (wenn sie nicht übergeben werden)

Dani 17. Apr 2004 13:15

Re: function in dll, die string zurückgibt
 
Ja! :mrgreen:

Nicolai1234 17. Apr 2004 13:23

Re: function in dll, die string zurückgibt
 
Jetzt funktioniert alles, aber es kommt diese Fehlermeldung:
*Link entfernt*
Was hat das zu bedeuten?

himitsu 17. Apr 2004 13:28

Re: function in dll, die string zurückgibt
 
Das Einfachste ist, wenn du ShortString's verwendest, sobald du über Programm-/DLL-Grenzen hinweg willst, denn diese arbeiten anders, als String's/AnsiString's (ohne Pointer).

Allerdings kann so ein ShortString maximal 255 Zeichen lang sein.

Nicolai1234 17. Apr 2004 13:30

Re: function in dll, die string zurückgibt
 
Und was hat die Fehlermeldung zu bedeuten?

himitsu 17. Apr 2004 13:30

Re: function in dll, die string zurückgibt
 
Eine DLL ist kein eigenständiges Programm, es muß also ein anderes Programm angegeben werden (unter Start > Parameter > Host-Anwendung), welches die DLL dann ausführt.

Oder du öffnest ein anders Projekt, wo die DLL verwendet wird...

Nicolai1234 17. Apr 2004 13:52

Re: function in dll, die string zurückgibt
 
Danke jetzt geht alles! :love:

Bernhard Geyer 17. Apr 2004 16:26

Re: function in dll, die string zurückgibt
 
Wenn Du eine DLL debuggen willst, muß du festlegen welche Exe-Anwendung diese DLL verwenden soll. Dazu gibst du über den Menüpunkt "Start/parameter" die Host-Anwendung (deine Exe) an. Auch solltest Du unter Projekt/Optionen Verzeichnis/Bedingungen festlegen, das die DLL in das Verzeichnis der Exe kopiert wird, damit die Exe immer die aktuelle Version der DLL verwendet.

:oops: Wenn man per email benachrichtigt wird sollte auch nachschauen ob nicht jemand schneller war 8)

Pseudemys Nelsoni 19. Mai 2004 17:54

Re: function in dll, die string zurückgibt
 
Zitat:

Du musst wissen, dass ein String ein Pointer ist, und dass du die borlandmm.dll zusätzlich zu deiner DLL mitausliefern musst. Lass Strings also einfach ganz weg und benutze stattdessen PChar und array[] of Char.
wie ist das denn gemeint? ich kann mane dlls nichtmehr weggeben ohne das ich die dll da mit sende? darf man keine strings in dlls verwenden oder versteh ich hier was falsch`?

Muetze1 19. Mai 2004 23:06

Re: function in dll, die string zurückgibt
 
Moin!

Du versuchst das DLL Projekt zu starten anstatt deiner Anwendung. Schau mal unter Ansicht in die Projektverwaltung und mach mal ein Doppelklick auf deiner Anwendung anstatt der DLL und dann führe es aus...

MfG
Muetze1


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