AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dlls benutzen

Ein Thema von mimi · begonnen am 2. Apr 2006 · letzter Beitrag vom 2. Apr 2006
 
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

Dlls benutzen

  Alt 2. Apr 2006, 11:50
Hallo,
ich habe heute angefangen eine eigne DLL zu schreiben sie sieht im moment genau so aus:
Delphi-Quellcode:
library myStringListDll;


uses
  SysUtils,Classes,dialogs;

{$R *.res}
procedure GibtNachricht_Aus(Str:Pchar); external 'myStringListDll.dllindex 1;

type
  TTest = class
  private
  public
    procedure GibtNachricht_Aus(str:Pchar);
  end;


procedure TTest.GibtNachricht_Aus;
begin
  ShowMessage(Str);
end;



exports
  GibtNachricht_Aus;
begin
end.
ich habe mir verschiende tutorials angesehen und das grundgerüst von meiner DLL davon abzuleiten.
Das beispiel mit der Classe habe ich in einem DelphiForum gefunden(weiß aber nicht mehr ob hier oder im DF)
mein ziel ist es eine eigne TStringList mit erweiterten funktionen zu entwicklen alles auch kein problem

ich versuche jetzt diese funktion wie folgt einzubinden(beispiel aus einem DLL tutor)
Delphi-Quellcode:
unit udll;

interface

uses windows,dialogs,SysUtils;

type
  PDRGibtNachrichtaus = procedure(Str:Pchar);
  
procedure LoadDll;
procedure GibtnachrichtAus(Test:PChar);cdecl;

var
  Nachricht:PDRGibtNachrichtaus = nil;
  
implementation

Function WhatIfNoEntry: Integer;
begin
  ShowMessage('Fehler');
  Halt;
end;

procedure LoadDll;
var
  lib:THandle;
begin
  lib := LoadLibrary('D:\Daten\eigene\delphi\dlls\myStringList\dll\myStringListDll.dll');

  case lib = 0 of
    TRUE: begin
      @Nachricht := @whatifnoentry;
      messagebox(0, 'DLL kann nicht geladen werde', nil, 0);
    end;
  else begin
    @Nachricht := GetProcAddress(lib, 'GibtnachrichtAus');

    if not Assigned(Nachricht) then
      @Nachricht := @whatifnoentry;
  end;
  end;
end;

procedure GibtnachrichtAus(Test:PChar);
begin
  Nachricht(test);
end;

end.
Im Hauptform rufe ich dann nur noch Load auf ein gibtNachRichtAus doch leider wird nur die Function
whatifnoentry weil so vermute ich bei @Nachricht := GetProcAddress(lib, 'GibtnachrichtAus'); irgenwas schiefläuft.

Kann mir jemand sagen was ich falsch mache ?
mein ziel ist es eine eigne klasse in ein DLL zu packen - eigentlich nicht weiter schwirig trotzdem habe ich probleme damit - leider -

Vielen dank im voraus für eure Hilfe
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
 


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 14:58 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