Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Вниз

Использование 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.61 MB
Время: 0.049 c
3-1102845941
able
2004-12-12 13:05
2005.01.16
Вручную перебирать БД...


4-1101439026
Ozone
2004-11-26 06:17
2005.01.16
Консольное приложение


14-1103968704
Чеширский_Кот
2004-12-25 12:58
2005.01.16
Merry Xmas!


14-1103707677
infom
2004-12-22 12:27
2005.01.16
Играете ли вы на работе в Counter Strike ?


3-1103107737
Миша
2004-12-15 13:48
2005.01.16
многострочный вывод данных в отчет





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