Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DLL und String's (https://www.delphipraxis.net/43466-dll-und-strings.html)

hibbert 4. Apr 2005 17:36


DLL und String's
 
Hi,
ich habe folgende DLL geschrieben:
Delphi-Quellcode:
function bbc(Text:string):string;stdcall;
begin
text:=pchar('[b]'+text+'[/b]');
result:=text;
end;

exports
  bbc;
nun rufe ich diese DLL folgendermaßen auf:
Delphi-Quellcode:
function bbc(Text: string): string; external 'mydll.dll';
{...}
showmessage(bbc('hallo'));
Nun erhalte ich diese Fehlermeldung:
Zitat:

Zitat von Benachrichtigung über Debugger-Problem
In Projekt E:\Delphi7\Bin\DLL\dll test\Project1.exe trat ein Problem mit folgender Meldung auf: 'Zugriffsverletzung bei 0x77f51769: Schreiben von Adresse 0x00030fc8'. Prozess angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK
---------------------------

Jetzt kann ich das Prog nur noch über [strg]+[F2] zurück setzen...

wie übergebe ich also ohne Fehlermeldung einen String an eine DLL und wieder zurück ??

thx hibbert

Bernhard Geyer 4. Apr 2005 17:41

Re: DLL und String's
 
Entweder mit PChar arbeiten oder den Memory-Manager einbinden (siehe Kommentar bei einem neuen Delphi-DLL-Projekt).

shmia 4. Apr 2005 17:57

Re: DLL und String's
 
Zitat:

Zitat von Bernhard Geyer
Entweder mit PChar arbeiten oder den Memory-Manager einbinden (siehe Kommentar bei einem neuen Delphi-DLL-Projekt).

Oder FastShareMem verwenden.
http://codecentral.borland.com/cc/cc...sting?id=21190
Wenn man sieht, wie wenig Code FastShareMem braucht, ist das fast schon ein "Muss".

arbu man 4. Apr 2005 17:58

Re: DLL und String's
 
Oben in der DLL steht ein kommentar lies ihn dir mal durch!

hibbert 4. Apr 2005 18:04

Re: DLL und String's
 
Hi,
also FastShareMem habe ich in der .dll und in meinem Project eingebunden.

Starte ich mein Prog über Delphi so erhalte ich immer die gleiche Fehlermeldung:
Zitat:

---------------------------
Benachrichtigung über Debugger-Problem
---------------------------
In Projekt E:\Delphi7\Bin\DLL\dll test\Project1.exe trat ein Problem mit folgender Meldung auf: 'Zugriffsverletzung bei 0x77f51771: Schreiben von Adresse 0x00030ffc'. Prozess angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK
---------------------------
Doch davor wird mir in meinem Programm eine leere nachricht angezeigt (wie bei showmessage('');). Danach kommt noch 5 mal die Fehlermeldung und ich muss das Prog über [Strg]+[F2] beenden :cry:

was habe ich falsch gemacht ?

thx hibbert

Sprint 4. Apr 2005 18:16

Re: DLL und String's
 
FastShareMem muss in in der DLL als erste Unit unter Uses stehen und in deiner EXE (Projekt Datei) auch.

hibbert 4. Apr 2005 18:50

Re: DLL und String's
 
also so ??
Project1.exe
Delphi-Quellcode:
uses
FastShareMem,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
MyDLL.dll
Delphi-Quellcode:
uses
FastShareMem,
  SysUtils,
  Classes;
Wenn das so gemeint war, dann hat das leider auch nichts gebracht :cry:

hibbert

kiar 4. Apr 2005 18:52

Re: DLL und String's
 
hallo hippert,

trage mal das FAstShareMem in die .dpr ein.

ich glaube das meinte sprint.

raik

mirage228 4. Apr 2005 18:53

Re: DLL und String's
 
Hi,

in der DLL hast Du die Funktion als stdcall deklariert.

In Deinem Hauptprogramm steht aber das:
Delphi-Quellcode:
function bbc(Text: string): string; external 'mydll.dll';
Da fehlt das stdcall.

mfG
mirage228

hibbert 4. Apr 2005 19:06

Re: DLL und String's
 
Zitat:

Zitat von mirage228
in der DLL hast Du die Funktion als stdcall deklariert.

:wall: mist das hätte mir auch auffallen können :wall:
Zitat:

Zitat von kiar
trage mal das FAstShareMem in die .dpr ein.

mmhh ich glaube das war auch gemeint :roll:

jo jetzt funzt es, alles ohne Fehlermeldung :-D

danke an alle :!:

thx hibbert


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz