| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Сумма динамического массива |
| Автор: zvonkolokola 11.9.2009, 21:28 | ||
| Динамический массив числового типа, как правильно вывести сумму чисел массива? И подскажите как обнулить массив ?
|
| Автор: aragnophy 12.9.2009, 10:21 | ||
| Массив-то размерностью [0 . .length-1] создаётся. Значит будет работать только с
Shirina[i+1] - также вызовет range checking error, в массиве то от [0 . . kolpoz - 1] элементов Обнулить можно ZeroMemory, либо FillMemory, либо, Setlength(Shirina, 0)... |
| Автор: zvonkolokola 12.9.2009, 18:54 | ||||||
Я пишу название массива.......например: -
|
| Автор: THandle 12.9.2009, 19:01 |
| zvonkolokola, ZeroMemory - это функция. Можно еще просто присваиванием nil. Но смотря что вообще надо - обнулить все элементы массива или же установить длину в 0 и все удалить. |
| Автор: Frees 12.9.2009, 19:28 |
а память разве не утечет в таком случае? |
| Автор: THandle 12.9.2009, 20:40 |
Нет. В обоих случаях будет вызвана одна и та же DynArrayClear |
| Автор: zvonkolokola 13.9.2009, 23:12 | ||||
Я хочу обнулить все элементы массива, а вообще есть разница? Я сначало (первым делом) обнуляю все, потом выполняется код......... При повторном событии сперва обнуляется массив и опять выполняется код. procedure TForm4.Button1Click(Sender: TObject);
|
| Автор: virtualmacar 18.9.2009, 13:15 |
| Чтобы правильно обнулить динамический массив можно использовать FreeAndNil('дикриптор массива'); Но для пущей надежности в цикле прогнать присвоение Nill всем элементам Можно использовать FreeMem(var P: Pointer[; Size: Integer]); Вообще всё есть в справке по Delphi |
| Автор: kami 18.9.2009, 17:01 |
Это относится в вам в первую очередь. Ибо FreeAndNil относится к объектам, и на инициализированном массиве выдаст AV. |
| Автор: kami 18.9.2009, 17:18 | ||
Резюмируя - Ваша проблема в несовсем верной работе с массивами, индекс которых начинается с 0. |
| Автор: Romikgy 18.9.2009, 19:55 | ||||
по поставленой задаче динам. массив вообще не нужен, суммируй сразу в переменую из полей датасета, имхо |