상위프로시저에서 받는 내용은 없구요.
하위 프로시저에서 자료를 받아서 약간의 수식으로 값을 바꾸고
상위프로시저로 보내야 되는데 어떡게할지 잘 몰라서요
참고로 이프로그램은 폼이 없는 유닛화일이고 에러는없으나
값이 pci7432di를 부른 곳으로 제대로 전달되지가 않습니다.
도와주세용.....
DiChannel 배열은 상위프로그램에서 DiChannal:array[0..31] of byte로 정의
하였습니다.
procedure Pci7432Di(var DiChannel:array of byte);
var
CardNum,DigitalPort:Word;
DiValue:Cardinal;
i:integer;
begin
Do_ReadPort(CardNum,DigitalPort,Divalue); //타사에서 제공하는
라이브러리임
For i:=0 to 31 do
begin
DiChannel[i]:=DiValue Mod 2;
DiValue:=Divalue Div 2;
end;
end;
아래처럼해보세요.
procedure Pci7432Di(DiChannel:PByteArray);
var
CardNum,DigitalPort:Word;
DiValue:Cardinal;
i:integer;
begin
//Do_ReadPort(CardNum,DigitalPort,Divalue);
Divalue := 1234567;
for i:=0 to 31 do begin
DiChannel[i]:=DiValue Mod 2;
DiValue := Divalue Div 2;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
RDiChannel:array[0..31] of byte;
i:integer;
begin
Pci7432Di(@RDiChannel);
For i:=0 to 31 do
Memo1.Lines.Add(intTostr(RDiChannel[i]));
end;