Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

Открыть новую тему     Написать ответ в эту тему

V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
         
Обсуждаем новые возможности и баги
 
Просьба писать про Embarcadero RAD Studio XE5, XE6, XE7, XE8, 10.x (Seattle, Berlin,Tokyo)
  По вопросам скачивания - Тема в Варезнике (lite-версии тут)
  Вопросы по неюникодным версиям Delphi — шестая бумага
  Бесплатные Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus
  Коммерческие компоненты и утилиты для Delphi/BCB
  Вопросы по компонентам для Delphi, C++ Builder разных версий
  Новые языковые возможности, начиная с Delphi 2005 по XE4 — здесь, и New!здесь еще
  Англоязычный официальный форум Embarcadero — здесь
  Embarcadero Quality Central, веб интерфейс — здесь, новый Quality Portal тут
  Программирование на Delphi — викиверситет
  Другие ресурсы
   Предыдущие бумаги
 
     Вопросы ..XE4       Вопросы ..XE3    Вопросы ..XE2      
  Вопросы ..2009-XE    Вопросы ..<2009 / ч.5    Вопросы ..<2009 / ч.4      
  Вопросы ..<2009 / ч.3    Вопросы ..Delphi 2 / ч.2    Вопросы ..Delphi  

  Выключение встроенного эксперта Castalia  для XE8 (иногда помогает при вылетах и тормозах)  
  Полезные плагины(эксперты)

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 15:25 11-09-2013 | Исправлено: Komandor, 18:58 18-03-2022
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И эти "8 пробелов" ставятся перед begin end (перед { и } в сишной трактовке), которые ставятся после if на отдельной строке.

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 18:33 25-11-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да это понятно.
Только приведенный выше код не имеет никакого отношения к стилю Олмана, как с точки зрения оформления, так и с точки зрения обсуждаемого вопроса.

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 19:11 25-11-2013
Eternal_Shield

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
If True then  
 Begin  
  SomeProc;  
 End  
Else  
 Begin  
  OtherProc;  
 End;  

На самом деле это довольно удобно, когда много вложенных блоков. На поиск нужного места уходят милисекунды, когда как в "лысом" варианте, вам, для начала, надо будет  расставить begin end корректно и только потом дополнить. Временные затраты, обычно, как минимум, на порядок больше.
 
Я тоже раньше не любил лишние нагромождения в коде, но сейчас я изменил свои взгляды на данный вопрос )
 
Насчёт value = true, вроде как, этот бред чисто сишный. Насколько я помню на разных платформах true принимает различные значения и поэтому просто if (value) {} могло неверно работать...или что-то около того. Даже дефайны много раз видел в духе #define true 1==1. Что-то там с булевой арифметикой.  
 
Сомневаюсь, что в делфи сия проблема имеет место и писать if value = true then признак явной ппцшной болезни 1-ой категории и такого "делфиста" надо гнать с работы взашей.

Всего записей: 766 | Зарегистр. 18-05-2009 | Отправлено: 09:29 27-11-2013 | Исправлено: Eternal_Shield, 09:30 27-11-2013
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Писать if value = true then , где value - boolean - считается дурным тоном.  

 
что за бред, уж извините за выражение
да, я не пишу if value = true then, но не вижу здесь ничего, что могло бы считаться дурным тоном

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 11:44 27-11-2013
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
? boolean(2) = true ?
? boolean(2) = false ?
 
? boolean(-1) = true ?
? boolean(-1) = false ?

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 11:47 27-11-2013
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Первый раз такое вижу. А в справке есть описание?

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 12:00 27-11-2013
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно найти кажется в описании BASM / assembler functions, что false = 0, true = +1
А вот в OLE Automation true = -1
 
Но "на пальцах" мы считаем что true - это <>0, и поэтому сравнивать на =true - это ненадёжно.
Допустим, мы работаем с C++ DLL, которая действительнo в качестве true вернет -1 - и что тогда ?
 
Сравнивать надо not (x = false), если уж писать подробно.

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 12:04 27-11-2013 | Исправлено: Arioch1, 12:04 27-11-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
Я тоже считаю, что в этом ничего дурного нет. Ведь это не ошибка. Если кому-то удобнее так писать, то почему нет? Но вот так повелось, что подобное считается дурным тоном.
 

Цитата:
и такого "делфиста" надо гнать с работы взашей.

Не соглашусь. Главное, чтобы конечный продукт работал, как положено, а не то, как написано в коде. Тем более, такой код явно не усложняет работу программы.
 

Цитата:
На самом деле это довольно удобно, когда много вложенных блоков.

Вот это куда более некорректно, на мой взгляд, чем if value = true then
begin ... end пишем, когда несколько отдельных операций производится, а не одна.
 

Код:
 
If True then  
 Begin    
  ranomize;
  b := random(5) + 1;
  SomeProc;
  AnotherFunc(b);
 End  

 
А так какой смысл в составном операторе?

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 12:19 27-11-2013
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Arioch1
 
Теоретически, проблемы каста integer <-> boolean должно быть персональной головной болью компилятора. В Паскалях же True - это не константа, следовательно клсяков с True = -1 or True = 1 быть не должно.  
 
Про C++ DLL - если она чего то и вернет, то только int. В документации будет написано, чего конкретный int обозначает. Но да, такая штука - часть проблемы качественного interop с платформой. "Modern Delphi" на Android/iOS многое в этом смысле потерял.

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 12:30 27-11-2013
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
> В Паскалях же True - это не константа
 
Вот оно что, Михалыч!..
 
http://docwiki.embarcadero.com/RADStudio/XE5/en/Simple_Types#Boolean_Types

Цитата:
Boolean values are denoted by the predefined constants True and False.  
 
The following relationships hold:
Ord(False) = 0
Ord(True) = 1
 

 
Добавлено:

Цитата:
Вот это куда более некорректно, на мой взгляд, чем if value = true

Это как раз корректно - это может быть непривычно, но это однозначно определяет поведение программы, не подкладывая грабли вроде =true
 
А чем явный begin/end это лучше - уменьшается количество ошибок при переработке кода (примеры в википедии), возможо улучшается читаемость (пример выше)

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 13:14 27-11-2013 | Исправлено: Arioch1, 13:14 27-11-2013
Eternal_Shield

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MGAlex

Цитата:
Не соглашусь. Главное, чтобы конечный продукт работал, как положено, а не то, как написано в коде. Тем более, такой код явно не усложняет работу программы.  

И зря, а мне это будет говорить о том, что человек не имеет понятия на чём пишет.  Пусть лучше к своему корыту возвращается. Его код будет нерабочим через пару мес.
 

Код:
 
If True then    
 Begin      
  ranomize;  
  b := random(5) + 1;  
  SomeProc;  
  AnotherFunc(b);  
 End  
 А так какой смысл в составном операторе?
 

Так, стоп-кран! Разве тут, вместо условия, константа подразумевается?? Вы уж детерминируйтесь как-нибудь. Я так понял условие - не константа и, в примере, True просто placeholder ...

Всего записей: 766 | Зарегистр. 18-05-2009 | Отправлено: 13:49 27-11-2013 | Исправлено: Eternal_Shield, 13:50 27-11-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eternal_Shield
Причем здесь True? Я Вам про Фому, а Вы мне про Ерему.
На True вообще внимания не нужно обращать в данном примере. Я показал в пример, когда нужно использовать составной оператор. Если использовать составной оператор там, где его не нужно использовать, это говорит о неграмотности программиста.
 

Код:
if a > b then
  c := true;
 
if a > b then
  begin
    c := true;
  end;

 
Arioch1

Цитата:
примеры в википедии

Вы не понимаете или прикалываетесь постоянно?
 

Код:
if X <> 0 then
   OK := True;

 
Где здесь используется без дела составной оператор?
 
Может быть здесь?
 

Код:
 procedure TForm1.DBGridEnter(Sender: TObject);
  var
     Thing: TSound;
     begin  
       ... //Эти точки Вам ни о чем не говорят?
       Thing := Click;
     end;

 

Цитата:
Его код будет нерабочим через пару мес.

Ну это Вы так решили. Скорее наоборот, if value then будет нерабочим кодом. Даже компилятор Delphi на это намекает. Пример я привел выше в виде картинки.

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 14:08 27-11-2013 | Исправлено: MGAlex, 14:12 27-11-2013
A_V

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MGAlex

Цитата:
Я показал в пример, когда нужно использовать составной оператор. Если использовать составной оператор там, где его не нужно использовать, это говорит о неграмотности программиста.

не факт, есть разные подходы к оформлению кода - на языках со скобочками ('{') - чаще специально так и пишут, мол это понятнее, и сразу видно условие. в паскале обычно так не делают, но это уж никак не говорит о неграмотности программиста )

Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 18:51 27-11-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
в паскале обычно так не делают

Ну так мы и ведем речь о Delphi (Pascal).
 
А вообще, процитирую сам себя:
 

Цитата:
Главное, чтобы конечный продукт работал, как положено, а не то, как написано в коде.

 
Кому как удобно, тот так и пишет.

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 19:09 27-11-2013 | Исправлено: MGAlex, 19:12 27-11-2013
A_V

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MGAlex

Цитата:
Главное, чтобы конечный продукт работал, как положено, а не то, как написано в коде.  


Цитата:
Кому как удобно, тот так и пишет.

..пока это не касается коллективной разработки большого проекта. там то, 'как написано в коде' имеет значение.

Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 19:27 27-11-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A_V
Согласен.
Но в таком случае нужно строго придерживаться общих правил написания и оформления кода.

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 19:58 27-11-2013
SolidSnakeRU

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Никто не знает на когда перенесли вебинар по FireDac c Дмитрием Арефьевым?

Всего записей: 248 | Зарегистр. 27-08-2008 | Отправлено: 11:03 28-11-2013
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Arioch1
 

Цитата:
В Паскалях же True - это не константа

 

Цитата:
Вот оно что, Михалыч!..  

 
Конечно же, я косячнул и написал вообще не то, что думал и нет так))  
 
На самом деле, я имел ввиду, что в паскалях True - это не TYPEDEF какого то числа, а типа самостоятельный логический тип, у которого определенные правила преобразования в другие типы, откуда Ord( .. boolean ) = определенному значению. В то же время, компилятор понимает, что речь идет именно о логическом типе. А вот в с++ компилятору будет непонятно, если функция будет возвращать BOOL, который определен каким-нибудь TYPEDEF. Вот в этом смысле компилятору паскаля попроще, и он имеет возможность делать правильные касты.  
 
Я ввобще паскаль люблю за нормальную систему типов)

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 17:03 28-11-2013
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В общем-то ты просто написал, что в Паскале есть логический тип, а в C/C++ его нет.  

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 18:14 28-11-2013
alsterkh

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто бы дал дельный совет. Давно уже застрял на Делфи 2010. Вот очередная смена компа и мысли, а может пора перейти на версию поновее. Программирую исключительно на Delphi под Винду. Если смысл переходить на XE и стоит ли аж на XE 5 (если компоненты конечно все найдутся)?

Всего записей: 181 | Зарегистр. 07-10-2009 | Отправлено: 11:28 29-11-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru