Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.024 c
2-1138220512
Фрося
2006-01-25 23:21
2006.02.12
Как из текстового файла убрать символы перевода строки?


2-1138220852
diwwww
2006-01-25 23:27
2006.02.12
через интернет набивать данные в dbf-файл IIS, ASP


2-1138071002
555
2006-01-24 05:50
2006.02.12
Открытие файла Word


1-1136962161
alless
2006-01-11 09:49
2006.02.12
Как узнать что файл записался до конца в дир.?


4-1130924180
Id
2005-11-02 12:36
2006.02.12
Информация о винте




   Наверх