AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi EInvalidPointer nach Programmende (DLL wurde eingebunden)
Thema durchsuchen
Ansicht
Themen-Optionen

EInvalidPointer nach Programmende (DLL wurde eingebunden)

Ein Thema von jag_the_rapper · begonnen am 14. Okt 2006 · letzter Beitrag vom 6. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2      
jag_the_rapper

Registriert seit: 10. Okt 2006
Ort: Erfurt
8 Beiträge
 
#1

EInvalidPointer nach Programmende (DLL wurde eingebunden)

  Alt 14. Okt 2006, 22:28
leine DLL geschrieben und ein Programm, welches die DLL anspricht. Ich übergebe einen String an die DLL und ich habe überall ShareMem als erstes in die uses-Klausel mit aufgenommen. Das Programm und die DLL funktionieren soweit, doch wenn ich mein Programm dann beende, bekomme ich diese Meldung. Ich habe aber extra darauf geachtet, in meiner DLL *.Free bei allen Sachen zu setzten. Ich habe schon gehört, dass dieser Fehler auch Anderen Leuten unter kommt, aber ich finde nirgends eine Lösung. Weiß hier jemand, was da schief läuft? Zur info, ich benutze Delphi5 und habe in meiner DLL keine GUID's und keine Com oder ActivX geschichten. Selbst wenn ich sämmtliche Logig aus der DLL auskommentiere, dann bekomme ich noch den Fehler.
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#2

Re: EInvalidPointer nach Programmende (DLL wurde eingebunden

  Alt 15. Okt 2006, 02:06
Statisch oder dynamisch eingebunden?
Aufrufkonventionen gesetzt?
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
jag_the_rapper

Registriert seit: 10. Okt 2006
Ort: Erfurt
8 Beiträge
 
#3

Re: EInvalidPointer nach Programmende (DLL wurde eingebunden

  Alt 16. Okt 2006, 13:00
Also ich habe es statisch und dynamisch probiert, aber in beiden Fällen kommt nach Programmende die Exzeption. Was die Aufrufkonventionen angeht, da bin ich mir nicht so ganz sicher! Ich fide nirgends ein ordentliches Beispiel. Immer erklären die wie man ne Dll schreibt mit Stringübergabe und bei der implementierung nehmen die ne dll-Funktion mit nem integer, was natürlich vollkommen sinnig ist!!! bei mir sieht es so aus:

in der DLL
Delphi-Quellcode:
library HelloWorld;

uses ShareMem, SysUtils, Classes, Dialogs;

procedure TextOut(AMessage : string); stdcall;
begin
  ShowMessage(AMessage);
end;

{$R *.RES}

exports
  TextOut;

begin
end.
und jetzt das eigentliche Programm
Delphi-Quellcode:
unit Unit1;

interface

uses ShareMem, Windows, Messages, SysUtils, Classes, Graphics,
     Controls, Forms, Dialogs, StdCtrls;

type TForm1 = class(TForm)
       Button_ShowHelloWorld: TButton;
       procedure Button_ShowHelloWorldClick(Sender: TObject);
     end;

var Form1: TForm1;

implementation

procedure TextOut(AMessage : string); stdcall; external 'HelloWorld.dll';

{$R *.DFM}

procedure TForm1.Button_ShowHelloWorldClick(Sender: TObject);
begin
  TextOut('Hallo Welt');
  Self.Close;
end;

end.
Wo steckt mein Denkfehler???
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: EInvalidPointer nach Programmende (DLL wurde eingebunden

  Alt 16. Okt 2006, 16:38
Die ShareMem muss nicht in der Unit1 als erstes in der Uses Liste sein, sondern im Delphi Projekt! Also Öffne mal die Projektverwaltung (STRG-ALT-F11) und mach einen Rechtsklick auf die Projekt-EXE darin und wähle "Quelltext anzeigen". Dort füge die ShareMem als aller erste Unit in die Uses Liste. Danach das Projekt komplett neu compilieren. Die ShareMem kann aus der Unit1 raus.
  Mit Zitat antworten Zitat
jag_the_rapper

Registriert seit: 10. Okt 2006
Ort: Erfurt
8 Beiträge
 
#5

BIG BIG THX!!!

  Alt 16. Okt 2006, 18:39
jo, das isses!!! Das ShareMem Zeugs darf nur in die dpr und in keine pas. Toll, ich habe zich Dokus gelesen und aus keiner ging das hervor. Die meinten immer, das man ShareMem immer fleißig einbinden soll (: - Wie auch immer. Dank!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: BIG BIG THX!!!

  Alt 16. Okt 2006, 23:01
Zitat von jag_the_rapper:
Toll, ich habe zich Dokus gelesen und aus keiner ging das hervor.
Ich finde der Kommentar von Delphi welcher automatisch im DLL Projekt vermerkt ist, ist eindeutig.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: EInvalidPointer nach Programmende (DLL wurde eingebunden

  Alt 16. Okt 2006, 23:06
Und falls du auf die DLL verzichten willst:
Rückgabe von Strings aus DLLs
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Michael80

Registriert seit: 20. Nov 2003
Ort: Treuchtlingen
72 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: EInvalidPointer nach Programmende (DLL wurde eingebunden

  Alt 5. Jan 2008, 21:09
Super, hat auch mir sehr weitergeholfen
Wer kämpft kann verlieren, wer nicht kämpft hat schon verloren
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: EInvalidPointer nach Programmende (DLL wurde eingebunden

  Alt 5. Jan 2008, 21:24
Oder FastMM als Alternative.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#10

Re: EInvalidPointer nach Programmende (DLL wurde eingebunden

  Alt 5. Jan 2008, 22:28
also, bei mir funktioniert das...

Delphi-Quellcode:
library Project1;

uses
  sharemem, SysUtils,
  Classes, Dialogs;

{$R *.res}

procedure TextOut(AMessage : string); stdcall;
begin
  ShowMessage(AMessage);
end;

exports
  TextOut;

begin
end.
Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

uses
  ShareMem,
  SysUtils;

procedure TextOut(AMessage : string); stdcall; external 'project1.dll';

begin
 TextOut('Hallo Welt');
end.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:04 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