Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-24173
AL2002
2002-07-12 13:35
2002.08.08
Лицензионное Дельфи


7-24242
arbiter
2002-04-02 20:20
2002.08.08
Properties файлов


14-24198
Юрий Зотов
2002-07-13 19:27
2002.08.08
Бесплатный цирк


3-23918
alords
2002-07-18 11:42
2002.08.08
query


4-24259
Danger
2002-05-31 00:17
2002.08.08
Как установить дату





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский