Size: a a a

2020 February 02

DB

Dmitry Belkevich in Delphi & Lazarus
вот как минимум из-за FSearchName
источник

DB

Dmitry Belkevich in Delphi & Lazarus
я сам тип сразу не посмотрел, думал там tlist простой. а там же целый класс
источник

DB

Dmitry Belkevich in Delphi & Lazarus
ну а в классе там всякого...
источник

DB

Dmitry Belkevich in Delphi & Lazarus
как обычно - чудес не бывает :) в какой раз убеждаюсь
источник

DB

Dmitry Belkevich in Delphi & Lazarus
вообще - то класс кривой
источник

DB

Dmitry Belkevich in Delphi & Lazarus
перемудрили слегка
источник

DB

Dmitry Belkevich in Delphi & Lazarus
может быть вполне глобальным если от FSearchNumber и FSearchName избавится. пару строк переписать
источник

ВБ

Владимир Б. in Delphi & Lazarus
Dmitry Belkevich
перемудрили слегка
Да там много чего такого как я вижу. Но так как не везде понятно что к чему - то особо не лезу без надобности. А так пока сделал неглобальным его, думаю это никаких больших нагрузок не добавит
источник
2020 February 03

АР

Александр Сергеевич Рудь in Delphi & Lazarus
Ребят, привет, подскажите, пж, в чем беда, есть такая строка:

b := (idx < 0) or Pars[idx].value;

b - boolean,  в value хранится variant, delphi 10.3, debug, {$O+}.
Почему при значении idx = -1 программа пытается получить value у элемента массива? По идее же, если первый операнд равен True, то второй не высчитывается для оптимизации? хм... или все-таки сначала происходит преобразование второго операнда к Boolean, а затем просто не используется?
источник

KB

Kit Bayun in Delphi & Lazarus
вроде бы второй не вычисляется только, если сборка release
источник

KB

Kit Bayun in Delphi & Lazarus
т.е. в настройках оптимизатора есть какой-то параметр, отвечающий за это
источник

DB

Dmitry Belkevich in Delphi & Lazarus
источник

DB

Dmitry Belkevich in Delphi & Lazarus
посмотри тут случайно не true?
источник

DM

Dmitry Mozulyov in Delphi & Lazarus
Александр Сергеевич Рудь
Ребят, привет, подскажите, пж, в чем беда, есть такая строка:

b := (idx < 0) or Pars[idx].value;

b - boolean,  в value хранится variant, delphi 10.3, debug, {$O+}.
Почему при значении idx = -1 программа пытается получить value у элемента массива? По идее же, если первый операнд равен True, то второй не высчитывается для оптимизации? хм... или все-таки сначала происходит преобразование второго операнда к Boolean, а затем просто не используется?
Привет. А что в дизассемблере?
источник

DM

Dmitry Mozulyov in Delphi & Lazarus
Возможно в дебаге выставлена опция Complete boolean eval что-то типа такого )
источник

KB

Kit Bayun in Delphi & Lazarus
попробуй поэкспериментировать с этим
источник

AS

Alexey Shumkin in Delphi & Lazarus
Александр Сергеевич Рудь
Ребят, привет, подскажите, пж, в чем беда, есть такая строка:

b := (idx < 0) or Pars[idx].value;

b - boolean,  в value хранится variant, delphi 10.3, debug, {$O+}.
Почему при значении idx = -1 программа пытается получить value у элемента массива? По идее же, если первый операнд равен True, то второй не высчитывается для оптимизации? хм... или все-таки сначала происходит преобразование второго операнда к Boolean, а затем просто не используется?
источник

DB

Dmitry Belkevich in Delphi & Lazarus
оптимизация скорее всего никак не влияет на твой случай. а вот complete Boolean будет
источник

SB

Sergey Bodrov in Delphi & Lazarus
У вариантов при использовании в бинарных операциях есть особенность - они заранее приводятся к одному типу.
источник

AS

Alexey Shumkin in Delphi & Lazarus
Kit Bayun
вроде бы второй не вычисляется только, если сборка release
ну, ваще это был бы полный треш, если ЭТО отличается в конфигах релиз-дебаг
источник