AGB  ·  Datenschutz  ·  Impressum  







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

Frage zu DLLImport

Ein Thema von Alexander · begonnen am 3. Feb 2004 · letzter Beitrag vom 6. Feb 2004
Antwort Antwort
Seite 1 von 2  1 2      
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#1

Frage zu DLLImport

  Alt 3. Feb 2004, 18:56
Hallo,
ich beschäftige mich mal wieder mit .NET.
Ich habe mal versucht mit .NET (also den Weg, die die anderen .NET-Sprachen auch gehen) eine Funktion aus einer DLL einzubinden.
Es handelt sich hierbei um eine DLL zur Ansteuerung des Parallel Ports (da ich keine FUntkion unter .NET gefunden habe, wahrscheinlich wegen der Plattformunabhängigkeit...).
Nun gut dazu wollte ich mir eine kleien Klasse schreiben:
Delphi-Quellcode:
  TParPort = class
  public
    function Inp32(wAddr : word) : byte;
    function Out32(wAddr : word; bOut : byte) : byte;
  end;
{...}
[DLLImport('inpout32.dll', EntryPoint = 'Inp32')]
 function TParPort.Inp32(wAddr:word) : byte; external;
[DLLImport('inpout32.dll', EntryPoint = 'Out32')]
 function TParPort.Out32(wAddr : word; bOut : byte) : byte; external;

{ Der Aufruf: }
var
 aParPort : TParPort;
begin
 aParPort := TParPort.Create;
 aParPort.Out32($378, 1);
end
Es lässt sich ohne Probleme compilen, aber dann beim Aufruf kommt eine Zugriffsverletzung.
so geht das ja ohne Probleme :
function Out32(wAddr : word; bOut : byte) : byte; external 'inpout32.dll'; Ich wollte das aber auch mit DLLImport versuchen

Was genau mache ich denn falsch?
Vielen Dank schon mal
Alexander
Alexander
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: Frage zu DLLImport

  Alt 3. Feb 2004, 21:31
Versuch es mal indem du die zwei Fkt. als Static declarierst!

Jeden falls mach ich das so bei C#.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#3

Re: Frage zu DLLImport

  Alt 4. Feb 2004, 16:21
Hallo,
vielen Dank, ich werde es ausprobieren.
Allerdings murkst mein PC im Augenblick wieder rum (will nicht anspringen), kann es also gerade nicht ausprobieren (auf'm Schlepptop habe ich D8 nicht drauf.).
Alexander
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#4

Re: Frage zu DLLImport

  Alt 4. Feb 2004, 16:36
Hallo,
Wenn ich ein STATIC dahinterhänge, meckert er das STATIC nur für nicht-visuellen Klassenmethoden verwendet werden kann.
Wie funktioniert das jetzt richtig?
Alexander
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#5

Re: Frage zu DLLImport

  Alt 6. Feb 2004, 15:11
Hallo,
hat vielleicht irgendwer noch eine Idee?
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Frage zu DLLImport

  Alt 6. Feb 2004, 15:18
Deklarier das ganze mal als stdcall.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#7

Re: Frage zu DLLImport

  Alt 6. Feb 2004, 16:17
Hallo,
dann haut das aber irgendwie mit EXTERNAL nicht hin, und das bruache ich wohl...
Ich hoffe, du oder irgendwer anders hat noch ne IDee
Weil ich komme nicht drauf, habe eigentlich auch noch nie mit DLL's gearbeitet.
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Frage zu DLLImport

  Alt 6. Feb 2004, 16:27
Warum haut das dann mit external nicht hin? Kuck dir mal die Windows.pas an, Borland macht da alle Nase lang.
function FindWindow(lpClassName, lpWindowName: PChar): HWND; stdcall; Und im Implementation-Abschintt:
function FindWindow; external user32 name 'FindWindowA';
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#9

Re: Frage zu DLLImport

  Alt 6. Feb 2004, 18:25
Also ich habe das jetzt so gemacht:
Delphi-Quellcode:
  TParPort = class
  public
   function Inp32(wAddr : word) : byte; stdcall;
  end;
{...}
implementation
{...}
[DLLImport('inpout32.dll', EntryPoint = 'Inp32')]
 function TParPort.Inp32(wAddr:word) : byte; external;
{...}
Und so meckert er herum, dass ein DLLImport-Attribut nicht zusammen mit einer externen oder Aufrufkonventionsdirektive verwendet werden kann

Also wenn das mit DLLImport unter Delphi nicht vernünftig funktioniert, mache ich das wie ich es anfangs auch gemacht habe (siehe erster Post).
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Frage zu DLLImport

  Alt 6. Feb 2004, 20:50
Wie soll das bitte gehen:
Code:
function [b]TParPort.[/b]Inp32(wAddr:word) : byte; external;
Nimm das ganze mal aus der Klasse raus.

Kuck dir hier mal das DLL Tutorial an: http://www.luckie-online.de/files/exports/assarbad/
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 16:35 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