var i: integer;
myarray: array of double;
begin
...
setlength(myarray, 10);
for i := 0 to high(myarray) do
myarray[i] :=0;
...
end;
ZeroMemory(@nomearray[0], sizeof(Double)*length(nomearray));
Al posto di ZeroMemory si può usare FillByte, FillChar ... FillDWord, tutte funzioni indipendenti dal sistema operativo.
Sul fatto che SetLength inizializi l'array non ci farei molto affidamento.
Ciao
gli array dinamici sono gestiti tramite puntatori
questo potrebbe voler dire che il contenuto non è pre-inizializzato nel momento della creazione (e del SetLength)
In case the length is set to a larger length than the current one, the new elements are zeroed out for a dynamic array
un double in fpc https://www.freepascal.org/docs-html/prog/progsu158.html#x202-209001r2 (https://www.freepascal.org/docs-html/prog/progsu158.html#x202-209001r2) viene memorizzato come esponente, mantissa e valore (IEEE 754)
credo che il valore zero venga memorizzato https://www.geeksforgeeks.org/ieee-standard-754-floating-point-numbers/ (https://www.geeksforgeeks.org/ieee-standard-754-floating-point-numbers/) con i tre valori impostati a 0, quindi uno zerofill potrebbe andar bene
sarebbe da fare qualche prova ma, per i numeri a virgola mobile, forse è meglio azzerare con una costante
Scusate se mi intrometto, non sono interi ma Double.
Sicuri che a valle dell'azzeramento con fillchar/zeromemory i valori vengano rilevati correttamente.
Ora non ricordo la "rappresentazione" dello zero a memoria. Da qui il dubbio.
Stilgar