Показать сообщение отдельно
  #1  
Старый 02.06.2013, 15:53
Tonyy Tonyy вне форума
Новичок
 
Регистрация: 05.04.2010
Сообщения: 85
Репутация: 10
По умолчанию почему invalid floating-point operation?

Уважаемые участники форума. прошу помочь мне разобраться в следующем моменте:
на вход программы подаю массив из 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 так как пришлось примерно половину удалить, чтобы загрузить на форум.
Вложения
Тип файла: rar val-1.rar (492.3 Кбайт, 1 просмотров)
Ответить с цитированием