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