Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit io.dll (https://www.delphipraxis.net/71904-probleme-mit-io-dll.html)

lprade 22. Jun 2006 11:29


Probleme mit io.dll
 
Hallo zusammen,
Ich möchte den Parallelport über den io.dll (www.geekhideout.com/iodll.shtml) ansteueren. Habe dazu ein Programm geschrieben. Den .dll kann ich über die Funktion "isdriverinstalled" auch anrufen, und bekomme ein boolean True zurück. Wenn ich aber versuche über die prozedure Portout() alle pins auf high zusetzten, kann ich das Programm nicht einmal mehr compilieren. Ich erhalte die Fehlermedlung "access violation at 0x7c947a50" und ein Fenster "project stack" und "Project2" wird geöffnet. Ausserdem wird die ganze Ansicht des Compliers geändert, es spielt einfach alles verückt. Der Sourcecode meines Programms ist:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
procedure Portout(Port:Word; Data:Byte); stdcall; external 'io.dll'; //deklariere die beiden Prozeduren, die ich benutzen möchte
procedure Isdriverinstalled(i: Boolean); stdcall; external 'io.dll';
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Isdriverinstalled:boolean;
begin
if Isdriverinstalled then showmessage('.dll gefunden') else showmessage('.dll nicht installiert');
end; //Auf Knopfdruck wird überprüft, ob der .dll vorhanden ist

procedure TForm1.Button2Click(Sender: TObject);
begin
portout($0378,255); //Hier versuche ich alle Ports of high zusetzten, und hier scheint das Problem zu sein, denn ohne
                    //diesen Teil funktionert das Programm problemlos
end;

end.
Wisst ihr was ich falsch mache? Habe eigentlich fast genau ein Beispiel hier im Forum nachgearbeitet. Kann mir jemand helfen?
Vielen Dank
Ludwig

lprade 22. Jun 2006 13:33

Re: Probleme mit io.dll
 
Nochwas,
Ich habe gerade eben nochmal die Seite von IO.dll durchgeschaut und habe entdeckt, dass man irgendwo am Anfang des Programms LOADIODLL aufrufen muss. Kann es daran liegen? Wo much ich den das LOADIODLL hinschreiben und wie sieht der Syntax aus? hat das irgendjemand schonmal gemacht? Wäre für jede Hilfe sehr dankbar.
Ludwig

lprade 25. Jun 2006 09:52

Re: Probleme mit io.dll
 
Hallo?
Hat denn noch niemand den io.dll benutzt?
Ludwig

Khabarakh 25. Jun 2006 10:13

Re: Probleme mit io.dll
 
Wozu diese Boolean-Variable im OnClick-Eventhandler? Und die Signatur deiner IsInstalled-Prozedur entspricht nicht der der DLL.
Delphi-Quellcode:
function IsDriverInstalled : Boolean;
[edit]Habe ich das richtig verstanden, der Compiler wirft die AV? Nicht das Programm selbst?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 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