Текущий архив: 2006.02.12;
Скачать: CL | DM;
Внизчто за глюк ! Найти похожие ветки
← →
Лом (2006-01-27 04:14) [0]подскажите что у меня за глюк ...
пишу
procedure TForm1.Button1Click(Sender: TObject);
var
f: array [0..3] of integer;
i:integer;
begin
for i:=0 to 3 do memo1.Lines.Add(IntToStr(f[i]));
end;
получаю в мемо строки
1242708
2010419711
4207223
4361244
как??? ведь массив только создан все элементы должы же быть равны 0
← →
Джо © (2006-01-27 04:28) [1]> 4361244
> как??? ведь массив только создан все элементы должы же быть
> равны 0
Неверная предпосылка. Не должны. Локальные переменные вообще-то располагаются на стеке программы, соответственно, там может быть любой "мусор".
← →
лом (2006-01-27 05:25) [2]так что для каждого массива созданного локально нужно постояно делать операцию типа
for i:=low(массив) to High (массив) do массив[i]:=0;?
← →
Джо © (2006-01-27 05:32) [3]> [2] лом (27.01.06 05:25)
> так что для каждого массива созданного локально нужно постояно
> делать операцию типа
> for i:=low(массив) to High (массив) do массив[i]:=0;?
Можно, но не обязательно.
Быстрее будет что-то вроде такого:ZeroMemory(@f,SizeOf(Integer)*Length(f));
← →
ЮЮ © (2006-01-27 05:43) [4]А можно и так:
procedure TForm1.Button1Click(Sender: TObject);
var
f: array of integer; // или TIntegerDynArray из модуля Types
i:integer;
begin
SetLength(f, 4); // вот тепкрь имеем массив из 4х элементов равных нулю
for i := 0 to 3 do memo1.Lines.Add(IntToStr(f[i]));
end;
← →
лом (2006-01-27 05:43) [5]ну прям открытие для меня ... ни в одной программе исходнике никогда такого не видел ... да ... надо выспаться и во всем разобраться
← →
лом (2006-01-27 05:47) [6]и тоже самое нужно делать для каждой переменной ?
интерестно почему Борлан не автоматизировал данный процесс
← →
Джо © (2006-01-27 05:47) [7]> [4] ЮЮ © (27.01.06 05:43)
Разумеется, ибо память под динамические массивы выделяется не на стеке.
← →
Джо © (2006-01-27 05:50) [8]> [6] лом (27.01.06 05:47)
> и тоже самое нужно делать для каждой переменной ?
А зачем это НУЖНО делать, позволь поинтересоваться?
← →
begin...end © (2006-01-27 08:02) [9]> Джо © (27.01.06 05:47) [7]
Ну дело-то не только в этом, а ещё и в том, что для динамических массивов предусмотрена автоматическая инициализация выделяемых областей нулями.
Страницы: 1 вся ветка
Текущий архив: 2006.02.12;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.042 c