Уважаемые участники форума. прошу помочь мне разобраться в следующем моменте:
на вход программы подаю массив из 192400 числовых данных. числовой формат - single
с каждым числом необходимо проделать процедуру, чтобы поменять местами байты. в итоге в процессе выполнения программы на этапе переворачивания (свопинга) выскакивает ошибка invalid floating-point operation. если же переворачивать каждое число по отдельности по одному, а не в цикле, то все проходит нормально. пробовал переворачивать отдельно то число на котором вылетает ошибка, и предыдущее число и предшествующее - по отдельности все нормально. а если в цикле, то - беда. в чем дело?
Код:
procedure TForm1.btn2Click(Sender: TObject);
var
ff:TextFile;
buf:Single;
dd:array [0..3] of byte absolute buf;
temp:byte;
i:integer;
f:TStringList;
y:Integer;
a:array [0..90035]of Single;
begin
f:=TStringList.Create;
f.LoadFromFile('G:\val.txt');
//setlength(a,192400);
// setlength(b,192400);
for y:=0 to 90035 do begin
a[y]:=StrToFloat(f[y]);
end;
AssignFile(ff,'e:\antiswap.txt');
Rewrite(ff);
//процедура которая переворачивает байты
for y:=0 to 90035 do begin
buf:=a[y] ;
for i:=0 to 1 do begin
temp:=dd[i];
dd[i]:=dd[3-i];
dd[3-i]:=temp;
end;
Writeln(ff,buf);
end;
CloseFile(ff);
f.Free;
ShowMessage('конец');
end;
во вложенном файле - входные данные. их меньше чем 192400 так как пришлось примерно половину удалить, чтобы загрузить на форум.