Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обьявление переменной в var


Страницы:   1 2 3

alexdn ©   (2011-08-22 18:30:00) 

Как то я засомневался в одном вопросе.. вот если переменная обьявляется в блоке var, например:
var p:real;
присваивается ли ей автоматически значение 0..?
Или в коде нужно писать:
var x,y:real
begin
x:=0;
y:=0;
тра-та-та..

говорят есть разница между глобальными и локальными переменными.


Sha   (2011-08-22 22:52:00) [41]

также имеется в виду сегмент, delphi и глобальные переменные.


sniknik   (2011-08-22 22:02:00) [42]

имеется в виду загрузчик.


alexdn   (2011-08-22 21:53:00) [43]

> Игорь Шевченко ©   (22.08.11 21:24) [13]
линкер имеется в виду?


Игорь Шевченко   (2011-08-22 21:24:00) [44]


> Это что же в Вайне финкции Вин АПИ неверно реализованы.


нет это загрузчик не чистит тот сегмент, где delphi располагает глобальные переменные


Inovet   (2011-08-22 20:53:00) [45]

> [11] sniknik ©   (22.08.11 20:33)
> в винде обнуляются, под вайном нет. нарывался...

Во как. Это что же в Вайне финкции Вин АПИ неверно реализованы.


sniknik   (2011-08-22 20:33:00) [46]

> Глобальные переменные вроде тоже изначально обнуляются, но лучше явно задать им начальное значение.
в винде обнуляются, под вайном нет. нарывался...


alexdn   (2011-08-22 20:25:00) [47]

> Игорь Шевченко ©   (22.08.11 20:10) [9]
повторенье мать ученья!..


Игорь Шевченко   (2011-08-22 20:10:00) [48]

метлу купи - тебе самое оно


Ega23   (2011-08-22 20:05:00) [49]


> alexdn ©   (22.08.11 19:18) [3]
>
> > Antoxa   (22.08.11 18:53) [1]
> что то не верю я тебе:)


А проверить?


unit Unit9;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm9 = class(TForm)
   Memo1: TMemo;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form9: TForm9;

implementation

{$R *.dfm}

function Foo: string;
begin
 Result := Result + '0';
end;

procedure TForm9.Button1Click(Sender: TObject);
var
 i: Integer;
begin
Memo1.Clear;
 for i := 1 to 10 do
  Memo1.Lines.Add(Foo);
end;

end.


Юрий Зотов   (2011-08-22 20:02:00) [50]


> говорят есть разница между глобальными и локальными переменными

Правильно говорят. Глобальные - обнуляются, локальные - нет.


Inovet   (2011-08-22 19:41:00) [51]

> [5] alexdn ©   (22.08.11 19:28)
> а что было в том месте стека?..

Всё что угодно, считай мусор.


alexdn   (2011-08-22 19:28:00) [52]

> Dimka Maslov ©   (22.08.11 19:21) [4]
ладно, совсем делитантский вопрос - а что было в том месте стека?..


Dimka Maslov   (2011-08-22 19:21:00) [53]

Ноль присваивается только полям класса. Внутренним переменным процедур и функций - что было в том месте стека, то и будет значением переменной. Глобальные переменные вроде тоже изначально обнуляются, но лучше явно задать им начальное значение.


alexdn   (2011-08-22 19:18:00) [54]

> Antoxa   (22.08.11 18:53) [1]
что то не верю я тебе:)


int64   (2011-08-22 18:55:00) [55]

Варнинги и хинты это не просто так.


Antoxa   (2011-08-22 18:53:00) [56]

Если объявил,то нужно инициализировать переменную:
var x,y:real
begin
x:=0;
y:=0;
тра-та-та.. :)


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо