Главная страница
    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.006 c
7-24241
Megadeth
2002-05-24 19:21
2002.08.08
Как узнать S.M.A.R.T у HDD ??


1-24006
Faun
2002-07-28 07:09
2002.08.08
CreateParented и скроллинг


14-24234
Alx2
2002-07-12 10:39
2002.08.08
Справочная система из html


14-24174
Johnmen
2002-07-11 14:20
2002.08.08
Проблема с IDE


3-23931
Boroda Oleg
2002-07-17 10:44
2002.08.08
Почему из под Дельфи может не выполнятся SQL запрос?





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