Autor Beitrag
Udo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Mi 30.10.02 00:18 
Hallo zusammen,

ich hatte gestern einen Thread hier gepostet, in dem ich nach einem guten Tutorial für DLL-Erstellung gesucht hatte. Klabautermann und Popov haben mir auch super weitergeholfen. Allerdings steh ich jetzt vor einem anderen Problem. Die DLL soll eine Art Initialisierungsroutine enthalten, die über eine Stringliste einige Parameter zurückgeben soll.

Auf die Stringliste selber soll im Hauptprogramm mit einem Pointer referenziert werden, d.h. ich erzeuge in der DLL einen Pointer auf die Stringliste und gebe ihn über die Initialisierungsroutine an das Hauptprogramm zurück.

Die DLL lässt sich zwar super im Programm einbinden, aber sobald ich diese Pseudoninitialisierung aufrufe und die DLL versucht, ein TStringListen-Objekt zu erstellen kommt immer wieder eine "EAccessViolation"-Exception.

Zum besseren Verständnis stell ich hier mal die Initialisierungsroutine der DLL ein:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function init_dll:Pointer; stdcall;
var
  init_list : TStringList;
begin
  init_list.Create;
  init_list.Add('TestDll');
  init_list.Add('permanent');
  init_list.Add('wird bei Beginn gestartet');
  Result:=init_list;
end;

Der Fehler tritt wie gesagt bereits auf, wenn ich die Stringlist erzeuge. Habe auch bereits versucht, den ShareMem mit einzubinden, aber da funzt es auch nicht.

mfg + Danke

Udo

(30.10.02 08:47 Tino) Code-Tags hinzugefügt.
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 30.10.02 09:49 
Udo hat folgendes geschrieben:
Der Fehler tritt wie gesagt bereits auf, wenn ich die Stringlist erzeuge.

Dann versuch es mal so:
ausblenden Quelltext
1:
init_list := tStringList.Create;					

Gruß
TINO
Udo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: So 03.11.02 05:30 
Hallo Tino,

hat leider auch nicht geklappt.

Gruß

Udo
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 07.11.02 12:08 
Hi.

Wann genau tritt denn der Fehler auf, an welcher Zeile?

Cu,
Udontknow
Udo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Do 07.11.02 13:32 
Servus,

der Fehler tritt genau in folgender Zeile auf:

ausblenden Quelltext
1:
init_list:= TStringList.Create;					


Und zwar dann, wenn ich die Dll über mein Programm lade und die Routine aufrufe.

Hintergrund zu der ganzen Sache ist, daß ich eine Art PlugIn-Projekt in Angriff nehmen will, wo ich diese Info's brauche. Habe schon versucht, daß ganze in einen COM-Server auszulagern. Dort funzt zwar soweit alles, aber leider kann ich die darüber zurückgegebenen Variant-Objekte nur eingeschränkt benutzen, da die Eigenschaften und Methoden teilweise nicht mitexportiert werden.

Mir würde vielleicht ein gutes Listing weiterhelfen, in dem mal ein komplettes PlugIn-Projekt besprochen wird. Dort könnte ich dann mal nachschauen, ob normale Dll's oder COM-Objekte ans Hauptprogramm angebunden sind. Wenn jemand was hierzu weiß, wäre ich ihm für seine Hilfe unheimlich dankbar.

mfg

Udo