Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Delphi |
![]() ![]() |
Топик располагается на нескольких страницах: ←Ctrl назад 1 .. 43 44 45 46 47 [48] 49 50 51 52 .. 56 вперед Ctrl→ |
ёёёёё Member Откуда: Сообщений: 2017 |
Один раз заказывал фурнитуру для мебели: петли, держители для полок, стопоры и т.п. Много. Например, держателей для полок - 320 шт. Собрал все в табличке MS Excel, посчитал итоговую сумму. Потом на сайте продавца ввел данные, мне прислали счет - примерно на треть меньше, чем я посчитал. "Наверное, за оптовый заказ" |
12 окт 19, 10:19 [21992673] Ответить | Цитировать Сообщить модератору |
ёёёёё Member Откуда: Сообщений: 2017 |
ёёёёё, ..."Наверное, за оптовый заказ" - подумал Штирлиц. Дождался поставки, приехал (здоровенная упаковка, не стал пересчитывать), забрал, привёз домой. Стал собирать мебель. Не хватило. Стал проверять. Везде не хватает, по всем позициям. Достал бумагу, что распечатали в офисе и дали вместе с товаром. Твою мать! По всем позициям - 255 единиц. Вернее - "не больше 255". На сайте, в заказах - реально проставленная величина, а у менеджеров - уже ограничения в 255. 2^8-1. Ансигнед байт. Пришлось еще раз ехать. Австрийский продаван, фирма "Хафеле". Так и не исправлено - то ли много у них не покупают, то ли они не поняли моего немецкого, то ли память экономят. |
12 окт 19, 10:27 [21992674] Ответить | Цитировать Сообщить модератору |
ёёёёё Member Откуда: Сообщений: 2017 |
Осторожнее с пропертями! ![]() Настраиваю редактор грида из DevExpress. В частности - лукап-комбобокс, TcxLookupComboBoxProperties. Если выпадающий список из одного столбца - то все хорошо.
$.ListFieldNames := 'sname';
Если из нескольких - ещё лучше!
.ListFieldNames := 'sname; fio';
Все плохо, когда эти несколько "набираются" в цикле: var fProps := TcxLookupComboBoxProperties; ... begin for поле in (список_имен_полей) do begin if fProps.ListFieldNames <> '' then fProps.ListFieldNames := fProps.ListFieldNames + ';'; fProps.ListFieldNames := fProps.ListFieldNames + поле; Сеттер свойства ListFieldNames разбирает текст и раскладывает его во внутренний список. Конечный символ ';' он отбрасывает. В итоге, при добавении полей for поле in (['f1', 'f2', 'f3']) do - свойство ListFieldNames, вместо ожидаемого значения 'f1;f2;f3' - становится 'f1f2f3'. И вроде бы грабли из серии "детские, учебные", а поди ж ты. |
20 окт 19, 02:28 [21998153] Ответить | Цитировать Сообщить модератору |
softwarer Member Откуда: 127.0.0.1 Сообщений: 64883 Блог |
Я бы сказал, это часть более общего полезного правила: "Не жалей локальных переменных для того, чтобы дёрнуть сеттер один раз вместо нескольких". |
||
20 окт 19, 03:26 [21998156] Ответить | Цитировать Сообщить модератору |
ёёёёё Member Откуда: Сообщений: 2017 |
Да. |
||||
20 окт 19, 15:17 [21998313] Ответить | Цитировать Сообщить модератору |
Василий 2 Member Откуда: Сообщений: 1016 |
fProps.ListFieldNames := fProps.ListFieldNames + IfThen(fProps.ListFieldNames <> '', ';') + поле; спасет ОРД. |
||
21 окт 19, 10:34 [21998680] Ответить | Цитировать Сообщить модератору |
makhaon Member Откуда: A galaxy far far away Сообщений: 3791 |
у Василия лучше (меньше обращений к геттерам), но можно еще так:
Join к сожалению не очень удобный, можно было еще бы проще сделать |
||
21 окт 19, 15:06 [21999091] Ответить | Цитировать Сообщить модератору |
ёёёёё Member Откуда: Сообщений: 2017 |
9393203|>]Съеденный ремень дяди Миши возвращается... ![]() var i : integer; ... begin ... for i := 0 to Pred(SomeObj.Size) do Foo(Struct[i]) - глючит, если SomeObj.Size выходит за границу 2^31-1 Но можно ведь теперь можно не задавать тип явно for var i := 0 to Pred(SomeObj.Size) do Foo(Struct[i]) ... или использовать итераторы. "Кроссплатформенность", йо. |
26 окт 19, 17:44 [22003267] Ответить | Цитировать Сообщить модератору |
Kazantsev Alexey Member Откуда: Сообщений: 4988 |
ёёёёё, Гхм, а ремень-то уже кушали? |
26 окт 19, 18:13 [22003277] Ответить | Цитировать Сообщить модератору |
alekcvp Member Откуда: Сообщений: 2733 |
Из свеженького :)TBroadcastThread = class(TThread) ..... constructor Create(AServer: TServerSocket; ACapacity: Integer); destructor Destroy; override; end; .... constructor TBroadcastThread.Create(AServer: TServerSocket; ACapacity: Integer); [dcc32 Error] E2037 Declaration of 'Create' differs from previous declaration begin ... end;
|
|
11 ноя 19, 16:46 [22013732] Ответить | Цитировать Сообщить модератору |
_Vasilisk_ Member Откуда: Украина, Харьков Сообщений: 12589 |
|
||||
11 ноя 19, 18:03 [22013833] Ответить | Цитировать Сообщить модератору |
ёёёёё Member Откуда: Сообщений: 2017 |
Использовал метод TStringList.Find(const S: string; var Index: Integer): Boolean; virtual; на неотсортированном списке. ![]() |
20 ноя 19, 15:32 [22020830] Ответить | Цитировать Сообщить модератору |
Мимопроходящий Member Откуда: бурятский тундрюк, эсквайр Сообщений: 31980 |
20.11.2019 15:32, ёёёёё пишет: > Использовал метод > TStringList.Find(const S: string; var Index: Integer): Boolean; virtual; > на неотсортированном списке. а на отсортированном он и не нужен. Posted via ActualForum NNTP Server 1.5 |
20 ноя 19, 15:34 [22020838] Ответить | Цитировать Сообщить модератору |
_Vasilisk_ Member Откуда: Украина, Харьков Сообщений: 12589 |
|
||||
20 ноя 19, 17:30 [22021040] Ответить | Цитировать Сообщить модератору |
Мимопроходящий Member Откуда: бурятский тундрюк, эсквайр Сообщений: 31980 |
20.11.2019 17:30, _Vasilisk_ пишет: > > Нужен. Если мы вначале ищем, а потом хотим вставить зачем такие сложности? Posted via ActualForum NNTP Server 1.5 |
20 ноя 19, 17:33 [22021045] Ответить | Цитировать Сообщить модератору |
_Vasilisk_ Member Откуда: Украина, Харьков Сообщений: 12589 |
Написал хелпер для TMethodfunction TMethodHelper.ToString: string; begin Result := Format('D: %p (%s), C: %p', [ Data, IfThen(Data <> nil, TObject(Data).ClassName, 'nil') Code ]); end;Получил AV |
26 ноя 19, 15:57 [22025784] Ответить | Цитировать Сообщить модератору |
Kazantsev Alexey Member Откуда: Сообщений: 4988 |
_Vasilisk_, Даёшь тернарный оператор! |
26 ноя 19, 16:26 [22025809] Ответить | Цитировать Сообщить модератору |
Квейд Member Откуда: Kyiv, Ukraine Сообщений: 5397 |
![]() |
||||
26 ноя 19, 16:49 [22025841] Ответить | Цитировать Сообщить модератору |
_Vasilisk_ Member Откуда: Украина, Харьков Сообщений: 12589 |
А тем временем в Java выкатилили switch expression |
||||
26 ноя 19, 17:33 [22025902] Ответить | Цитировать Сообщить модератору |
Kazantsev Alexey Member Откуда: Сообщений: 4988 |
Нормальный синтаксис, на самом деле.
Стопудово из котлина дёрнули :) |
||||||||
26 ноя 19, 18:04 [22025958] Ответить | Цитировать Сообщить модератору |
alekcvp Member Откуда: Сообщений: 2733 |
IfThen в дельфях вообще какая-то очень узкоприменимая (читай бесполезная) штука, ИМХО. |
||||
26 ноя 19, 18:53 [22026001] Ответить | Цитировать Сообщить модератору |
_Vasilisk_ Member Откуда: Украина, Харьков Сообщений: 12589 |
|
||||
26 ноя 19, 19:04 [22026011] Ответить | Цитировать Сообщить модератору |
Василий 2 Member Откуда: Сообщений: 1016 |
Не знаю, у меня часто применяется. Только, конечно, надо помнить о том, что все параметры должны существовать |
26 ноя 19, 19:10 [22026018] Ответить | Цитировать Сообщить модератору |
Michael Longneck Member Откуда: Москва Сообщений: 2327 |
class function TRtl.IfThen<T>(ACondition: Boolean; const ATrue, AFalse: T): T; begin if ACondition then Result := ATrue else Result := AFalse; end; |
26 ноя 19, 19:34 [22026040] Ответить | Цитировать Сообщить модератору |
rgreat Member Откуда: Сообщений: 6573 |
Michael Longneck,
TRtl.IfThen<boolean>(False, FormatDriveC, DoNothing);
Угадай что будет c диском c: ;) |
26 ноя 19, 20:02 [22026066] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: ←Ctrl назад 1 .. 43 44 45 46 47 [48] 49 50 51 52 .. 56 вперед Ctrl→ |
Все форумы / Delphi | ![]() |