AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi DLL öffnen, deren Name ich nicht weiß
Thema durchsuchen
Ansicht
Themen-Optionen

DLL öffnen, deren Name ich nicht weiß

Ein Thema von Uncle Cracker · begonnen am 25. Jan 2004 · letzter Beitrag vom 27. Jan 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#1

DLL öffnen, deren Name ich nicht weiß

  Alt 25. Jan 2004, 23:21
Wie kann ich eine DLL öffnen, von der ich den Namen erst im Programm dynamisch weiß? D.h., dass ich eine DLL umbennen und dann den Namen durch Random gebe.
Leider ist es dadurch aber nicht möglich die DLL zunutzen, denn Delphi möchte einen Konstantenausdruck.

Ich habe es schön über 'const' probiert und dann versucht währrend das Programm lief den Namen zu geben, aber das hat nicht ganz funktioniert


Weiß jemand vielleicht, wie das gehen könnte oder ist es gar nicht möglich?


Danke UC
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
chris

Registriert seit: 24. Mai 2003
Ort: Düsseldorf
196 Beiträge
 
Delphi 2009 Professional
 
#2

Re: DLL öffnen, deren Name ich nicht weiß

  Alt 26. Jan 2004, 07:11
hi,

so sollte es möglich sein:

Delphi-Quellcode:
var
  dllname: string;
  dllhand: thandle;
begin
  dllname := 'irgendeine.dll';
  dllhand := loadlibrary(dllname);
  try
    if dllhand > 0 then
      begin
        {}
      end
  finally
    freelibrary(dllhand)
  end
end;
HIH
Chris
D2009.4 | Vista SP2 x32
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#3

Re: DLL öffnen, deren Name ich nicht weiß

  Alt 26. Jan 2004, 18:21
Ähmm, noch eine doofe Frage dazu

Wie kann ich denn dann die Funtkionen aus der DLL aufrufen, denn wenn ich einfach die Funktion die ich will zwischen begin und end packen, dann kann Delphi logischerweiß nix damit anfangen.

Kann mir vielleicht nochmal jemand helfen?


Danke UC
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: DLL öffnen, deren Name ich nicht weiß

  Alt 26. Jan 2004, 19:13
Tu dir hier mal das DLL Tutorial an: http://www.luckie-online.de/tutorials/assarbad/ Da steht alles drin.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#5

Re: DLL öffnen, deren Name ich nicht weiß

  Alt 26. Jan 2004, 22:07
Also, ich habe mir das jetzt mal angeguckt und durchgelesen, weiß jetzt aber immer noch nicht so richtig wie ich das nun machen kann, dass er einmal aus der DLL Test.dll ließt und beim zweiten Mal aus der DLL Test2.dll usw.

Ich geben den Namen erst im Programm drin selber an und sollen die Funtkionen aus der DLL gelesen werden. Im Tutorial wird aber trotzdem immer aus der DLL SampleDLL.dll gelesen. Oder habe ich jetzt was falsch verstanden?

Wäre sehr verbunden wenn mir vielleicht doch jemand nochmal helfen könnte.


Danke UC
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: DLL öffnen, deren Name ich nicht weiß

  Alt 26. Jan 2004, 22:11
Übergib den Namen dochnicht als hardgecodeten String, sondern als Variable das sollte es sein. Die Funktionen musst du alle dynamisch per getProcAdress laden, was anders wird dir nicht übrigbleiben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
chris

Registriert seit: 24. Mai 2003
Ort: Düsseldorf
196 Beiträge
 
Delphi 2009 Professional
 
#7

Re: DLL öffnen, deren Name ich nicht weiß

  Alt 27. Jan 2004, 09:39
hi,

UC, in dllname: string hast du doch dann den namen der dll.
Chris
D2009.4 | Vista SP2 x32
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#8

Re: DLL öffnen, deren Name ich nicht weiß

  Alt 27. Jan 2004, 12:38
Ja, schon klar, wenn ich aber folgendes mache:

Delphi-Quellcode:
var
  dllname: string;
  dllhand: thandle;
begin
  dllname := 'irgendeine.dll';
  dllhand := loadlibrary(PChar(dllname));
  try
    if dllhand > 0 then
      begin
        if Test(1) then Showmessage('OK')
      end
  finally
    freelibrary(dllhand)
  end
end;
Da weiß Delphi logischer weiße nix mit Test anzufangen, aber es ist eine Funktion aus der DLL.
Oder wie meinst du sollte ich es sonst aufrufen.
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: DLL öffnen, deren Name ich nicht weiß

  Alt 27. Jan 2004, 12:40
Was ist 'Test'? Und wie man Funktionen aus einer DLL dynamisch läd steht auch in dem Tutorial drin und ich habe dir schon ein Stichwort für die Suche gegeben: GetProcAdress!
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#10

Re: DLL öffnen, deren Name ich nicht weiß

  Alt 27. Jan 2004, 14:03
Vorher:
Delphi-Quellcode:
const dllname = 'irgendeine.dll';

function EineFunc(EinParam : Cardinal) : longbool; stdcall; external dllname;
Nachher:
Delphi-Quellcode:
type
  TEineFunc = function (EinParam : Cardinal) : longbool; stdcall;

var
  EineFunc : TEineFunc;


var
  dllname: string;
  dllhand: thandle;
  nummer: integer;
procedure LoadDLL;
begin
  dllname := 'irgendeine' + IntToStr(nummer) + '.dll';
  dllhand := loadlibrary(PChar(dllname));
  try
    if dllhand <> 0 then
      begin
        EineFunc := GetProcAddress(dllhand, 'EineFunc');
      end;
  finally
    freelibrary(dllhand);
  end;
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 04:43 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