Математика, но не простая...

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Mirage
энтузиаст
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia
Контактная информация:

Сообщение Mirage »

Думаю, даже это
FillChar(FData[0, 0], FDataSize, 0);
не всегда работать будет, ибо расположение данных двумерного дин. массива последовательно в памяти не гарантируется.
Аватара пользователя
Vapaamies
постоялец
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vapaamies »

Дож писал(а):Кроме того, мне непонятно откуда взялось предположение, что при заполнении Extended нулями в памяти он и сам становится нулевым. Верно ли это на Arm архитектуре, например?

Это регулируется стандартом IEEE 754, одинакового для x86 и ARM. В нём ноль заполнен нулями.
Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Сообщение Дож »

Vapaamies писал(а):Это регулируется стандартом IEEE 754, одинакового для x86 и ARM. В нём ноль заполнен нулями.

Спасибо.
Аватара пользователя
bormant
постоялец
Сообщения: 408
Зарегистрирован: 21.03.2012 11:26:01

Сообщение bormant »

Дож писал(а):попробуйте скомпилировать и запустить такую программу

Поскольку "A: array of array of Extended;", то и обрабатываться должен соответственно:

Код: Выделить всё

var
  A: array of array of Extended;
  I, J: Integer;
begin
  SetLength(A, 4, 4);
  for I:=0 to 3 do
    FillChar(A[i,0], 4 * SizeOf(Extended), 0);
  for I := 0 to 3 do
    for J := 0 to 3 do
      Writeln(A[I, J], ' ');
end.
По-моему, все нормально.
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

Да, это работает правильно.

Код: Выделить всё

for I:=0 to 3 do
    FillChar(A[i,0], 4 * SizeOf(Extended), 0);
Ответить