![]() |
Invalid Pointer Operation.
Hallo,
worauf weißt mich die Meldung: "Invalid Pointer Operation." hin? Ich hab folgendes versucht:
Delphi-Quellcode:
In der DLL.dll
interface
function Funktion(Name: String): String; stdcall; implemantation function Funktion(Name: String): String; stdcall; external 'DLL.dll'; procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text := Funktion(Edit2.Text); end;
Delphi-Quellcode:
Also die Zeichenkette ist richtig und wird auch ausgegeben. Ich erhalte halt nur noch die Fehlermeldung. Auf den Service möchte ich aber verzichtn. :zwinker:
function Funktion(Name: String): String; stdcall;
var Zeichenkette: String; begin Result := Zeichenkette; end; export Funktion; Ich bin dankbar für jeden Ansatz und jegliche Lösungsvorschläge. mfg freak |
Re: Invalid Pointer Operation.
Hast du den Kommentar gelesen, den dir der DLL-Experte als erstes oben in die Unit schreibt:
Delphi-Quellcode:
library Project2;
{ 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. } uses SysUtils, Classes; {$R *.res} begin end. |
Re: Invalid Pointer Operation.
Entschuldigung, Luckie. :roll:
Ich muss die englische Version von Delphi nutzen und kann doch Englisch nicht so gut. Ich hab auch nicht gewusst das es da drin steht. Danke für den Hinweis. Ich hoffe nächstmal denk ich dran. (Meine Merkbefreiung ist noch in der Antragstellungsphase :mrgreen: ) mfg freak |
Re: Invalid Pointer Operation.
Versuche mal folgendes...
Delphi-Quellcode:
library MyLib;
function MyFunction(const S: WideString): WideString; safecall; begin {...} Result := MyString; {...} end; exports MyFunction; begin end.
Delphi-Quellcode:
Konnte bis jetzt noch keine Probleme mit WideString und safecall feststellen.
function MyFunction(const S: WideString): WideString; safecall;
implementation function MyFunction; external 'MyLib.dll'; |
Re: Invalid Pointer Operation.
ob safecall oder stdcall sollte keinen Unterschied machen da so ziemlich das gleiche passiert. einziger Unterschied:
Zitat:
|
Re: Invalid Pointer Operation.
Zitat:
In ActiveX DLL's benutzt Delphi zum exportieren von Strings, safecall und WideString. Weil dort diese Kombination fehlerfrei funktioniert, würde ich das auch in einer Standard-DLL machen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 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