Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
2-1137904356
Dormidont
2006-01-22 07:32
2006.02.12
Запрешение доступа к другим окнам


15-1137617989
Yanis
2006-01-18 23:59
2006.02.12
Ошибки в программах - специально?


15-1137884436
LordOfRock
2006-01-22 02:00
2006.02.12
Сайт нащей учебной группы


2-1138293587
только начал...
2006-01-26 19:39
2006.02.12
Совсем тупые вопросы по взаимодействию с БД в Делфи


15-1137686109
alexsis
2006-01-19 18:55
2006.02.12
И опять про НЛО





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский