Форум: "Потрепаться";
Текущий архив: 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.036 c