Форум: "Основная";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
Внизвот такая вот непонятная Фигня? Найти похожие ветки
← →
SuMaga (2002-07-25 12:13) [0]В шестом дельфи нарвался вот на что :
const
K:integer=1;
procedure m1;
begin
k:=2; //-------------> Ошибка ?
end;
Это ТАК задумано , или это просчет разработчиков ?
(В пятом все работает нормально)
← →
Skier (2002-07-25 12:15) [1]>SuMaga
Project Options|Compiler|Assignable typed constants := True
← →
Eugene Lachinov (2002-07-25 12:36) [2]Также бывает полезно {$WRITEABLECONST ON}
← →
TTCustomDelphiMaster (2002-07-25 12:38) [3]SuMaga © (25.07.02 12:13)
А почему const а не var?
← →
Eugene Lachinov (2002-07-25 12:45) [4]>TTCustomDelphiMaster
var нельзя описывать в процедурах и функциях
← →
SPeller (2002-07-25 12:59) [5]
> Eugene Lachinov © (25.07.02 12:45)
> >TTCustomDelphiMaster
> var нельзя описывать в процедурах и функциях
Это как это?
Всегда делал и нормально работает:
procedure SomeProc;
var K:integer; tm:string;..........
begin
.....
← →
Eugene Lachinov (2002-07-25 13:01) [6]>SPeller
Тут var K:integer = 1;
← →
Skier (2002-07-25 13:02) [7]>SPeller
А ты видишь разницу между
var K:integer и
var K:integer = 10 !?
← →
SPeller (2002-07-25 13:05) [8]
> Skier © (25.07.02 13:02)
> >SPeller
>
> А ты видишь разницу между
> var K:integer и
> var K:integer = 10 !?
Где-то при описании глобальных переменных можно писать
var k:integer = 10;
А вообще, зачем это? Пропиши при инициализации k:=10; и всё.
← →
TTCustomDelphiMaster (2002-07-25 13:39) [9]Eugene Lachinov © (25.07.02 12:45)
А разве SuMaga © пишет
const
K:integer=1;
в процедуре?
Если бы он написал
procedure m1;
const
K:integer=1;
begin
k:=2;
end;
тогда у меня и небыло бы вопросов.
← →
SuMaga (2002-07-25 18:58) [10]Всем Саулики(пасибки) !!!
← →
bad-md (2002-07-25 20:15) [11]Хех, const оно и есть const, например
procedure TSomeClass.DoSomething;
const
cd: Integer = 10;
begin
.............
if SomeVar then cd := 11 else cd := 14;
end;
Предположим, что при первом вызове процедуры - SomeVar = True.
При следующем cd чему равна? (cd = 11);
Т. е. const оно так и надо!!! (читайstatic
)
Sorry за треп...
← →
oomneeq (2002-07-25 20:40) [12]Отличие
procedure XXX;
const
cd: Integer = 10;
begin
...
end;
от
procedure XXX;
var
cd: Integer; //(a)
cd: Integer=10; //(b)
begin
...
end;
в том, что в 1 случае значение cd сохраняется от вызова к вызову
таким, каким его оставили выходя из XXX последний раз, тк. типизированные константы всегда сохраняются в области данных, а не в стеке, в отличие от обычных локальных переменных.
Поэтому во 2 случае оно при каждом новом входе в XXX либо неопределенно - стек непостоянен (a) либо всегда одно и тоже (b).
Случай 1 может использоваться как альтернатива глобальной переменной, когда значение должно храниться постоянно, однако доступ к нему нужен только из этой процедуры.
← →
bad-md (2002-07-25 20:44) [13]oomneeq, Ну так и я об этом же.
← →
SuMaga (2002-07-25 20:47) [14]Братан Меня ты не так понял!!!
напр нужен такой код:
const st:byte=1;
procedure TForm1.Button1Click(Sender: TObject);
begin
st:=2;
if st<>1 then exit;
//основной код который выпол тока один раз
end;
по правилам паскаля все должно было работать ,
Да вот тоока компилятор дельх 6 оказался замудр!!
(спасибо Skier за подсказку!!! )
← →
oomneeq (2002-07-26 14:18) [15]SuMaga © (25.07.02 20:47)
Да понял, понял..:)
>Да вот тоока компилятор дельх 6 оказался замудр!!
Да в этом смысле компилятор он не мудрее.
Project Options|Compiler|Assignable typed constants
есть и у дельпхи 5 тоже.
← →
SuMaga (2002-07-26 14:35) [16]я заметил уже :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c