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

Вниз

Использование Out   Найти похожие ветки 

 
REA   (2004-12-24 16:20) [0]

А кто использует ключевые слова вроде Out, нетипированные параметры и прочую экзотику в программах?


 
Sandman25 ©   (2004-12-24 16:22) [1]

out замедляет работу по сравнению с var


 
Nikolay M. ©   (2004-12-24 16:23) [2]

Вот один товарищ по экзотике есть, можешь у него спросить...
http://delphimaster.net/view/14-1103881947/


 
y-soft ©   (2004-12-24 16:52) [3]

Ну, я использую в некоторых случаях и out, и нетипированные параметры, и еще много чего, но экзотикой это не считаю... :)

Наоборот - хорошо, что язык предоставляет такое многообразие средств...

>Nikolay M. ©   (24.12.04 16:23) [2]

И как-то странно, что в один рад с такими легальными средствами ставится изменение счетчика в теле цикла for...


 
asafr ©   (2004-12-24 16:53) [4]

Это и не экзотика вовсе... При работе с COM, например, этих OUT - ну просто завались.. Но это уже не экзотика, а суровая правда жизни от майкрософт...


 
DiamondShark ©   (2004-12-24 16:55) [5]


> Sandman25 ©   (24.12.04 16:22) [1]
> out замедляет работу по сравнению с var

???


 
Digitman ©   (2004-12-24 16:59) [6]


> REA   (24.12.04 16:20)  


я использую.
и достаточно часто.


> Sandman25 ©   (24.12.04 16:22) [1]


похоже, ты глупость сморозил.


 
Sandman25 ©   (2004-12-24 17:03) [7]

[5] DiamondShark ©   (24.12.04 16:55)

procedure BOut(out B: String);
begin
end;

procedure BVar(var B: String);
begin
end;

procedure TForm1.bt1Click(Sender: TObject);
var
 C: String;
begin
 BVar(C);
 BOut(C);
end;

Перед вызовом BOut(C) увидим Call @LStrClr
Delphi6


 
Digitman ©   (2004-12-24 17:07) [8]


> Sandman25


out отличается от var всего лишь разными "командами" компилятору

procedure BOut(out B: чего_то_там);
var
 s: чего_то_там;
begin
 s: = B; //низя ! параметр доступен только для записи
end;

procedure BVar(var B: чего_то_там);
var
 s: чего_то_там;
begin
 s: = B; //запросто ! параметр доступен и для записи и для чтения
end;


 
Nikolay M. ©   (2004-12-24 17:09) [9]


> y-soft ©   (24.12.04 16:52) [3]
> И как-то странно, что в один рад с такими легальными средствами
> ставится изменение счетчика в теле цикла for...

Чем это не

> прочая экзотика в программах

?


 
REA   (2004-12-24 17:11) [10]

Я это к тому, что вроде как оно нагляднее - не надо дополнительно писать, что из параметров на выходе.
(А еще было бы лучше, если бы к процедурам можно было приписать скрытые комментарии типа Hint, чтобы места не занимали, но код был документирован и генерировался CHM для разработчика).
Не знал, что такой вызов бывает медленее...


 
Sandman25 ©   (2004-12-24 17:12) [11]

[8] Digitman ©   (24.12.04 17:07)

И этим тоже, конечно. Рассматривался случай о получении значения через var, иначе нельзя сравнивать.


 
DiamondShark ©   (2004-12-24 17:12) [12]


> Sandman25 ©   (24.12.04 17:03) [7]

Угу.
А для BVar вызов @LStrClr увидим внутри процедуры.


 
REA   (2004-12-24 17:13) [13]

2Nikolay M: под экзотикой я понимал отклонения от синтаксиса Паскаля (ну не считая собственно классов, Property и т.п.)


 
Sandman25 ©   (2004-12-24 17:14) [14]

[12] DiamondShark ©   (24.12.04 17:12)

Нет, в BVar всего одна команда ret.
А вообще не поленись и посмотри код своими глазами.


 
y-soft ©   (2004-12-24 17:15) [15]

>Nikolay M. ©   (24.12.04 17:09) [9]

Экзотика, это те средства, которые законны, но по каким-то причинам применяются редко. Например, часто ли Вы употребляете при объявлении переменных Absolute?

Изменение же переменной счетчика цикла в теле цикла легальным (да и вообще допустимым) средством назвать нельзя, о чем в указанной Вами ветке было неоднократно сказано...


 
Sandman25 ©   (2004-12-24 17:19) [16]

[6] Digitman ©   (24.12.04 16:59)

Для out: Integer разницы действительно нет, но для типов с контролируемым временем жизни есть. Я всегда фичи на String проверяю на всякий случай.


 
DiamondShark ©   (2004-12-24 17:22) [17]


> Sandman25 ©   (24.12.04 17:14) [14]

Блин. Вот охота сферическими конями заниматься.
То замедление в 0.0000001% искать, то пустые процедуры пейсать.

Ведь в реальной процедуре наверняка внутри будет присваивание -- иначе нафига вообще var-параметр.


 
DiamondShark ©   (2004-12-24 17:24) [18]


> Например, часто ли Вы употребляете при объявлении переменных
> Absolute?

Часто. Очень полезно против конструкций типа

PByteArray(@Data)^[i]


 
Rule ©   (2004-12-24 17:27) [19]

DiamondShark ©   (24.12.04 17:24) [18]
ого, а это что за извращение, можно узнать назначение вот этого, что в результате намечалось получить ?


 
Sandman25 ©   (2004-12-24 17:27) [20]

[17] DiamondShark ©   (24.12.04 17:22)

Вызов остался. В следующий раз сначала проверяй свои слова сам.

procedure BOut(out B: String);
begin
 B := Chr(Ord("0") + Random(2));
end;

procedure BVar(var B: String);
begin
 B := Chr(Ord("0") + Random(2));
end;

procedure TForm1.bt1Click(Sender: TObject);
var
C: String;
begin
BVar(C);
ShowMessage(C);
BOut(C);
ShowMessage(C);
end;


 
y-soft ©   (2004-12-24 17:28) [21]

>DiamondShark ©   (24.12.04 17:24) [18]

Значит, для Вас это и не экзотика вовсе :)

Я тоже иногда так делаю...


 
Суслик ©   (2004-12-24 17:28) [22]


>  [20] Sandman25 ©   (24.12.04 17:27)


> Вызов остался. В следующий раз сначала проверяй свои слова
> сам.

Ты "удавись" забыл добавить - здесь это модно :)))


 
Sandman25 ©   (2004-12-24 17:30) [23]

[17] DiamondShark ©   (24.12.04 17:22)

Кстати, кроме LStrClr есть еще замедление:
в начале BVar 2 команды, в Bout целых 8


 
Sandman25 ©   (2004-12-24 17:31) [24]

[22] Суслик ©   (24.12.04 17:28)

Я стараюсь не писать собеседнику того, что он не писал мне.


 
Nikolay M. ©   (2004-12-24 17:32) [25]


> y-soft ©   (24.12.04 17:15) [15]
> Экзотика, это те средства, которые законны, но по каким-то
> причинам применяются редко.

Это есть непреложная истина в последней инстанции?


 
begin...end ©   (2004-12-24 17:32) [26]

> [19] Rule ©   (24.12.04 17:27)

Похоже на получение определённого байта переменной Data.


 
Суслик ©   (2004-12-24 17:33) [27]


>  [24] Sandman25 ©   (24.12.04 17:31)
>
> Я стараюсь не писать собеседнику того, что он не писал мне.


Тебя минуло предложение удавиться? Удивительно :)))


 
Sandman25 ©   (2004-12-24 17:35) [28]

[27] Суслик ©   (24.12.04 17:33)

Вообще-то неудивительно. Мы с DS немало спорили (не только на этом сайте), но никогда не доходило до грубости из-за тупости оппонента или его нежелания понимать собеседника... Пока не доходило :)


 
Danilka ©   (2004-12-24 17:38) [29]

[24] Sandman25 ©   (24.12.04 17:31)
> Я стараюсь не писать собеседнику того, что он не писал мне.

Хм, а разве в этом случае диалог возможен? :))


 
Rule ©   (2004-12-24 17:38) [30]

begin...end ©   (24.12.04 17:32) [26]

да оно то понятно, вопрос то в том как абсолют с этим связан и часто ли возникает потребность в вот таком выковыривании байтов ?


 
y-soft ©   (2004-12-24 17:39) [31]

>Nikolay M. ©   (24.12.04 17:32) [25]

Я ведь не гуру, чтобы изрекать непреложные истины, а всего лишь по воле судьбы скромный профессионал (в смысле: зарабатываю на жизнь исключительно программированием) :))

А по сути дела - что для одних экзотика, то для других норма...


 
Sandman25 ©   (2004-12-24 17:39) [32]

[29] Danilka ©   (24.12.04 17:38)

:) Особенно если буквы одинаковые использовать  :)


 
begin...end ©   (2004-12-24 17:40) [33]

> [30] Rule ©   (24.12.04 17:38)

http://delphimaster.net/view/14-1103881947/


 
Sandman25 ©   (2004-12-24 17:41) [34]

Лень смотреть в словаре, но, по-моему, экзотика - это нечто вроде раритета.
Для нас экзотическими фруктами являются африканские бананы и ананасы, для африканцев - яблоки и груши.


 
Digitman ©   (2004-12-24 17:41) [35]


> Sandman25 ©   (24.12.04 17:19) [16]
> Для out: Integer разницы действительно нет, но для типов
> с контролируемым временем жизни есть. Я всегда фичи на String
> проверяю на всякий случай.


out-то , кстати, и был введен Борландом в 1-ю очередь не из-за "капризов" OP RTL, где это самое "контролируемое время жизни" в полный рост может использоваться, а для обеспечения правильного и беспроблемного взаимодействия и совместимости со средами/языками, отличающимися от OP


 
y-soft ©   (2004-12-24 17:42) [36]

>Rule ©   (24.12.04 17:38) [30]

да оно то понятно, вопрос то в том как абсолют с этим связан и часто ли возникает потребность в вот таком выковыривании байтов ?

Это распространенная задача. Например, при парсинге динамических пакетов переменной структуры...


 
Sandman25 ©   (2004-12-24 17:42) [37]

[35] Digitman ©   (24.12.04 17:41)

Для совместимости с COM-параметрами, если я правильно помню.


 
DiamondShark ©   (2004-12-24 17:45) [38]


> Sandman25 ©   (24.12.04 17:30) [23]
> [17] DiamondShark ©   (24.12.04 17:22)
>
> Кстати, кроме LStrClr есть еще замедление:
> в начале BVar 2 команды, в Bout целых 8

Убедил.


 
Nikolay M. ©   (2004-12-24 17:47) [39]


> y-soft ©   (24.12.04 17:39) [31]

Именно. Все зависит лишь от точки зрения.
:)


 
Rule ©   (2004-12-24 17:51) [40]

begin...end ©   (24.12.04 17:40) [33]
спасибо, не про тот абсолют подумал :), если этот, то да ... :)
y-soft ©   (24.12.04 17:42) [36]
Это распространенная задача. Например, при парсинге динамических пакетов переменной структуры...

ну извините, не все с этим работают ... но мне понятно ... это ближе к нижнему уровню, давно с этим не работал, мы "всё выше и выше и выше" как в пестне ... а печально :(



Страницы: 1 2 вся ветка

Текущий архив: 2005.01.16;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.031 c
14-1103706471
КаПиБаРа
2004-12-22 12:07
2005.01.16
Поздравления


4-1101572582
MAINUSER
2004-11-27 19:23
2005.01.16
Изменения в файловой системе


14-1104374973
Думкин
2004-12-30 05:49
2005.01.16
С днем рождения! 30 декабря


11-1084974886
Terminus
2004-05-19 17:54
2005.01.16
KOLTabControl это еще не PageControl :). Есть вопрос...


14-1104320614
TUser
2004-12-29 14:43
2005.01.16
Есть ли такой эксперт