Wie du davon auf so einen Murks kommst ist mir unverstandlich.
sscanf parst einen String in dem ("%2x") ein Byte als zwei Hexziffern steht. Offensichtlich eine Eingabe des Users, denn der Text wird aus einem Editfeld geholt.
Delphi-Quellcode:
type
PWDTPARAM = ^WDTPARAM;
WDTPARAM = record
timeout: Byte;
data_b: Byte;
end;
var
cParam: WDTPARAM;
nReturn: DWORD;
procedure TForm1.FormWrite(Sender: TObject)
begin
cParam.data_b := IntToStr('$' + Edit1.Text);
DeviceIoControl(hDIO, IOCTL_SYS_DIO_WRITE, @cParam, SizeOf(cParam), nil, 0, nReturn, NULL);
end;
Das habe ich hier mal reingehackt.