Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.08;
Скачать: CL | DM;

Вниз

вот такая вот непонятная Фигня?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
1-24026
Andy BitOff
2002-07-28 23:32
2002.08.08
Работа с указателем


1-24076
Goblinus
2002-07-23 02:43
2002.08.08
Разное по RxRichEdit


3-23926
Ag2002
2002-07-18 14:55
2002.08.08
Grid


6-24154
ss18
2002-05-27 23:30
2002.08.08
Как написать КлиентСокет на АПИ?


1-24095
ValeX
2002-07-17 17:19
2002.08.08
надо нечто StrToArray