this should do the trick if placed before you try the read operation:
fillchar(outputdata, sizeof(outputdata), #0);
or better still:
try
InputData.Read(OutputData,Sizeof(OutputData))
except
fillchar(outputdata, sizeof(outputdata), #0)
end;
in your original code, if the read operation fails then the contents of outputdata is unaltered from what it was when the procedure is entered. it is this possibility that the compiler is warning you about.
for extra points, change your procedure into a function and set result:=true after the read succeeds, and result:=false after the fillchar. this means the calling code can tell if anything went wrong.
cheers,
rob :-)