AGB  ·  Datenschutz  ·  Impressum  







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

Problem beim einbinden von dll's

Ein Thema von maximus Caesar · begonnen am 3. Nov 2004 · letzter Beitrag vom 3. Nov 2004
Antwort Antwort
Benutzerbild von maximus Caesar
maximus Caesar

Registriert seit: 26. Sep 2004
Ort: Biberach
319 Beiträge
 
Turbo Delphi für Win32
 
#1

Problem beim einbinden von dll's

  Alt 3. Nov 2004, 08:34
Hallo!
Hab ein Problem mit dem Einbinden von dll's, will eine zum Ladezeitpunkt einbinden:

Laden(extra Unit):
Delphi-Quellcode:
unit dlls;

interface

procedure start;

implementation

procedure start;
external 'Weg.dll';

end.
aufruf der procedure start:

Delphi-Quellcode:
procedure TForm1.MausPosition(Sender:TObject);
begin
 a:=StrToInt(Edit2.Text);
 if a=1 then begin
  Form2.Edit5.Text:=IntToStr(Mouse.CursorPos.X);
  Form2.Edit6.Text:=IntToStr(Mouse.CursorPos.Y);
  Form1.Maus2(Form1);
  Form1.Image1.OnClick:=nil;
  Form1.Image1.OnMouseMove:=nil;
  Form1.setzen(Form2.Edit3.Text,Form2.Edit4.Text,Form2.Edit5.Text,Form2.Edit6.Text);
  dlls.start; //Hier wird die Prozedure aufgerufen!!!!!
 end;
 if a=0 then begin
  Form2.Edit3.Text:=IntToStr(Mouse.CursorPos.X);
  Form2.Edit4.Text:=IntToStr(Mouse.CursorPos.Y);
  Edit2.Text:='1';
 end;
end;
Folgender Fehler tritt auf:
acess violation at 0x7c947a50: write of adress 0x00030d28

Wenn ich jetzt das "dlls.start" entferne, funktioniert alles!

Die Prozedure start gibt es in der dll und wird auch exportiert!
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: Problem beim einbinden von dll's

  Alt 3. Nov 2004, 08:48
Denke an:
- Aufrufkonventionen und
- Paramater/Rückgabewerte

diese müssen identisch sein. Dazu wäre intressant in welcher Sprache die DLL entwickelt wurde.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von maximus Caesar
maximus Caesar

Registriert seit: 26. Sep 2004
Ort: Biberach
319 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Problem beim einbinden von dll's

  Alt 3. Nov 2004, 08:54
Objekt Pascal, selber geschrieben, mit Delphi 6 Personal, mit dem ich auch das Programm schreibe!

Meinst du, dass ich stdcall verwenden sollte?
  Mit Zitat antworten Zitat
Benutzerbild von maximus Caesar
maximus Caesar

Registriert seit: 26. Sep 2004
Ort: Biberach
319 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Problem beim einbinden von dll's

  Alt 3. Nov 2004, 09:01
Ups...
Fehler gefunden!
Die dll war im falschen Ordner!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Problem beim einbinden von dll's

  Alt 3. Nov 2004, 11:50
Ähm, das
dlls.start; ruft die Prozedur aus der Unit aus, aber bestimmt nicht aus der DLL.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von maximus Caesar
maximus Caesar

Registriert seit: 26. Sep 2004
Ort: Biberach
319 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Problem beim einbinden von dll's

  Alt 3. Nov 2004, 12:54
Laut Tutorial hab ich in der Unit dlls der Prozedure "start" die prozedure "start" der dll "Weg" zugewiesen, und kann dann diese so aufrufen!

Wenn das nicht stimmt, wie kann ich dann die Prozedure "start" der "Weg.dll" aufrufen?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Problem beim einbinden von dll's

  Alt 3. Nov 2004, 12:57
Zitat von maximus Caesar:
Laut Tutorial hab ich in der Unit dlls der Prozedure "start" die prozedure "start" der dll "Weg" zugewiesen,
Hä???

Zitat:
Wenn das nicht stimmt, wie kann ich dann die Prozedure "start" der "Weg.dll" aufrufen?
Dynamisch ginge es so: (Am Beispiel für Shellexecute, für das man normalerweise die Unit ShellAPI.pas einbinden müsste.)

Delphi-Quellcode:
type
  TShellexecute = function(hWnd: HWND; Operation, FileName, Parameters,
    Directory: PChar; ShowCmd: Integer): HINST; stdcall;

procedure TForm1.Button1Click(Sender: TObject);
var
  hLib: cardinal;
  MyShellExecute: TShellexecute;
begin
  hLib := LoadLibrary('shell32.dll');
  if hLib <> 0 then
  begin
    @MyShellexecute := GetProcAddress(hLib, 'ShellExecuteA');
    if not Assigned(MyShellexecute) then
    begin
      RaiseLastOSError;
      exit;
    end;
  end
  else
  begin
    RaiseLastOSError;
    exit;
  end;
  MyShellexecute(Form1.Handle, 'open', 'Notepad.exe', nil, nil, SW_NORMAL);
end;
Und nach welchem Tutorial? In dem von Assarbad sthet das so bestimmt nicht drinne: http://www.luckie-online.de/Delphi/Importe/Assarbad/
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von maximus Caesar
maximus Caesar

Registriert seit: 26. Sep 2004
Ort: Biberach
319 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Problem beim einbinden von dll's

  Alt 3. Nov 2004, 15:02
Zitat von Luckie:
Und nach welchem Tutorial?
Hab ich von www.tutorials.delphi-source.de
  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 12:21 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