[pascal]uses Classes
...
Error: string;
...
function LoadFromVrgFile(filename:string):TMySaveRecord;
var
myStream : TFileStream;
i:integer;
begin
i := 0;
Error:= '';
while i < 20 do
Try
myStream:=TFileStream.Create(filename, fmOpenRead, fmShareDenyWrite);
myStream.Read(Result, SizeOf(Result));
myStream.Free;
Exit;
Except
inc (i);
Error:=(ExceptObject as Exception).Message;
Sleep(100);
End;
end;[/pascal]

...as you can see, streams and exceptions are immensely more elegant that the pre-historic methods you employed.