AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Dynamisches Laden von DLL Dateien [PROBLEM]
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamisches Laden von DLL Dateien [PROBLEM]

Ein Thema von Hybrid666 · begonnen am 17. Dez 2006 · letzter Beitrag vom 19. Dez 2006
Antwort Antwort
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#1

Dynamisches Laden von DLL Dateien [PROBLEM]

  Alt 17. Dez 2006, 23:13
So ich habe folgendes Problem:

Ich schreibe ein Programm das "Plugins" in form von libarys nutzt, wenn eine solche libary geladen wird (durch auswahl in einer liste), so wird in der DLL die function GetDllInfo aufgerufen um die funktionen der DLL zu erhalten.

Wenn ich dies nun tue mit folgendem Code:
Delphi-Quellcode:
procedure TForm1.cbgroupChange(Sender: TObject);
type TDllFunc = function(): string;
var
  i: integer;
  s: string;
  DLLHandle: THandle;
  func: TDllFunc;
  t: PChar;
begin
  cbcommand.Clear;
  DLLHandle := LoadLibrary(PChar('Plugins\' + cbgroup.text + '.dll'));
  if DLLHandle >= 32 then
  begin
    @func := GetProcAddress(DLLHandle, 'DLLGetInfo');
    if Assigned(func) then s := func();
  end;
  ShowMessage(s);
  FreeLibrary(DLLHandle);
end;
(Das ShowMessage ist zu testzwecken da)

Dann wird das was kommen soll per Showmessage richtig ausgegeben, dannach erhalte ich aber einen Error:
INVALID POINTER OPERATION und der fehler wird an der stelle FreeLibrary(DLLHandle); angezeigt...wenn ich nun aber nichts in der liste wähle (also KEINE dll wird geladen) so bekomme ich beim beenden des programmes den selben error....woran kann das nun liegen??

ICH BEDANKE MICH IM VORRAUS FÜR ALLE ANREGUNGEN UND FÜR JEDE HILFE

MfG Hybrid666
  Mit Zitat antworten Zitat
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#2

Re: Dynamisches Laden von DLL Dateien [PROBLEM]

  Alt 17. Dez 2006, 23:24
habe das problem gelöst

ich schreibe hier einfach mal dei antwort falls einer das wie ich zum ersten mal macht und nicht weiterkommt:

die problemlösung steht indirekt in der dll schon drin

{ Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your project's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface unit to the BORLNDMM.DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters. }

ich habe sharemem an letzte stelle und nicht an erste gesetzt

MfG Hybrid666

(kann closed werden)
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#3

Re: Dynamisches Laden von DLL Dateien [PROBLEM]

  Alt 19. Dez 2006, 02:50
Wenn du compiler-unabhängig arbeiten willst, benutz PChar und stelle in der DLL eine Funktion zum freigeben des Strings (i.e. PChar) bereit. Auch vielleicht was für dich: http://assarbad.net/de/stuff/tutorials/dll_tutorial/
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:28 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