DirtyBorov

Пользователи
  • Публикации

    71
  • Зарегистрирован

  • Посещение

  • Days Won

    5

DirtyBorov last won the day on 13 ноября 2016

DirtyBorov had the most liked content!

О DirtyBorov

  • Звание
    Продвинутый пользователь
  • День рождения

Посетители профиля

419 просмотров профиля
  1. Еще пару вариантов. 1. Можно немного сократить, не указывая Items (почему - ищите в "корнях" property) for i:=0 to List.Count-1 do List[i].Position.Y := List[i].Position.Y+0.5; 2. Можно использовать такой вариант var c: TCircle; begin for c in List do c.Position.Y := c.Position.Y + 0.5; end;
  2. Все же более правильный вариант будет такой: with TStringList.Create do try Text := 'ТЕКСТ'; SaveToFile('c:\file.txt'); finally Free; end; Иначе, если при каких то проблемах с файлом, Free не будет вызван и мы получим утечку.
  3. Да не ужели? Ни когда бы не догадался... я же всего то 20 лет программирую. Это сарказм. еще могу показать пару вариантов. Например: Label1->Caption = 15 / 3; или так double x = 15, y = 3; Label1->Caption = x / y; Улавливаете ход мысли?
  4. Это я уже понял, немного поигравшись с разными вариантами. void __fastcall TForm1::Button1Click(TObject *Sender) { int x = 3.2; Label1->Caption = x; // выведет 3 } Просто я уже очень давно не писал на С++. Не пойму когда и для чего это сделали. В чем профит? Ведь С++ строго типизированый язык. На мой взгляд это только добавит неявных ошибок. Или я не прав?
  5. Сегодня один товарищ сломал мне мозг вот таким кодом: void __fastcall TForm1::Button1Click(TObject *Sender) { int x = 2; Label1->Caption = x; } И компилятор это схавал! Как?! Может мне кто нибудь подсказать почему целое, без преобразования присвоилось в лейбу? код проверялся на XE10.1
  6. Похоже проблема с прем-стилями. Причем проблема давняя, я ее обнаружил очень давно.
  7. Очень интересная идея. Спасибо! Буду пробовать
  8. Был бы весьма признателен. Куда уж без костылей )
  9. При любых звонках, в memo падает только Phone is IDLE и Phone is OFFHOOK. Других сообщений нет. На сколько я понял, факт установки соединения под Android не отловить. Или я не прав? В идеале, хотелось бы отследить состояние исходящего звонка. Т.е. набор, соединение, отбой.
  10. Конечно же я его смотрел. И он даже работает. Частично правда. Но все же.. разбираюсь. Спасибо
  11. Допили для себя: /// AHex - строка вида "A1,B2,C3" /// Del - резделитель function HexToBytes(const AHex: string; const Del: string = ','): TBytes; var i: Integer; S: TStringDynArray; begin S := SplitString(Trim(AHex),Del); SetLength(Result, Length(S)); for i := Low(S) to High(S) do Result[i] := StrToIntDef('$'+S[i],0); end; function BytesToStr(const ABytes: TBytes): string; var i: integer; begin Result := EmptyStr; for I := Length(ABytes)-1 Downto 0 do Result := Chr(ABytes[I] + 48) + Result; end;
  12. Доброго времени. Delphi Berlin. Попробовал воспроизвести пример http://docwiki.embarcadero.com/RADStudio/Seattle/en/Mobile_Tutorial:_Using_the_Phone_Dialer_on_Mobile_Devices_(iOS_and_Android) Выяснилось что событие OnCallStateChanged не вызывается (Android). Пробовал пример из поставки. Просмотрел как описано в разных книгах - везде одно и тоже. Но не работает. Как же получить статус звонка?
  13. Из своего опыта (не про Delphi конкретно), приведу реальный пример. Доводилось работать на удаленке в одной международной компании. Уверен все о ней знают и пользуются ее продуктами (без названия, ок?). Так вот в нашей интранете мелкого городского провайдера, лежала подборка их крякнутого софта. Я конечно "стуканул" руководителю и предложил "наехать" на местную контору что бы убрали пиратский софт. Но неожиданно получил от "самого главного боса" нагоняй: "Не вздумай им писать! Пусть софт лежит! Пусть люди им пользуются! Да, именно пиратским. Финансовые потери не сопоставимы с прибылью от популяризации. Пиратство - гарантированная, бесплатная реклама. Тот, кому действительно наш софт нужен - заплатит. Кто не готов платить (например школьники) - не заставишь. По этому оставь маркетинг профессионалам, а сам занимайся поставленными задачами." С тех пор я не лезу в маркетинг.
  14. Именно. Возможно в расчетах что то дергается что приводи к повторному событию. А вообще прав ZuBy, без исходников можно долго гадать и предлагать самые фантастические решения. А на деле все может оказаться просто.
  15. Событие OnResize может происходить несколько раз подряд. Код в этом событии должен быть как можно короче. Расчет большого количества динамических объектов в этом событии - плохая идея. Лучше действительно воспользоваться отдельным потоком (а для ускорения можно несколько). На вскидку, алгоритм примерно такой: в событии OnResize запускаете поток, в который передаете размеры фрейма. В потоке делает расчеты и генерируете свое событие, которое обрабатывает фрейм - отображает эти самые объекты или их данные. Конечно конкретная реализация зависит от задачи