![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обьявление переменной в var
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;
тра-та-та.. :)