Таблица лидеров


Популярный контент

Показан контент с высокой репутацией за 17.06.2018 во всех областях

  1. 4 балла
    Andrey Efimov

    Описание Permissions

    Документация по студии. Например: Mobile Tutorial: Using Location Sensors (iOS and Android) в самом начале указано какие разрешения нужны для использования. Документация по Android: Manifest.permission; Normal permissions; Dangerous permissions and permission groups
  2. 3 балла
    mmover

    HueTrackBar

    procedure TForm2.HueTrackBar1Change(Sender: TObject); begin Rectangle1.Fill.Color := HSLtoRGB(HueTrackBar1.Value,1,0.5); end;
  3. 1 балл
    ENERGY

    Take photo without saving picture to gallery

    Я давно делал похожее решение. Я подсмотрел его на Stackoverflow для Java, т.к. это проблема Android intent, а не Delphi. Заключается оно в том, что нужно находить и удалять последнюю фотку из галереи. So the idea is here https://stackoverflow.com/questions/6390163/deleting-a-gallery-image-after-camera-intent-photo-taken and for Delphi: https://stackoverflow.com/questions/43021519/how-to-delete-an-image-from-android-gallery-after-camera-intent-photo-taken-with/ Read my comments with google translate and code:
  4. 1 балл
    Barbanel

    Узнать объем свободной RAM

    Ок, дабы все таки принести в тему ответ: http://fire-monkey.ru/topic/3866-статьяandroid-как-получить-информацию-о-потреблении-озу/?tab=comments#comment-24355 Гитхаб демо-проекта: https://github.com/AndrewEfimov/Memory-info
  5. 1 балл
    Barbanel

    Узнать объем свободной RAM

    Пример один Пример два
  6. 1 балл
    kami

    Хук на клавиатуру

    Что может быть непонятно во фразе non-zero value из первоисточника? Скорее всего, возвращаемый результат интерпретируется как BOOL. У любого булеан-типа есть два значения: 0 = False, не 0 = True. Что там присваивают конкретные компиляторы для значения True - это их проблемы. Сравнение всегда ведется с нулем. Может да, а может и нет. Откуда вы знаете, какую логику заложили другие разработчики в свои хуки? Это исключительно их дело - считают ли они нужным
  7. 1 балл
    Равиль Зарипов (ZuBy)

    Take photo without saving picture to gallery

    это можно поправить только если редактировать исходники fmx.jar, если я правильно помню
  8. 1 балл
    Barbanel

    XCode версия

    С последним апдейтом (10.2.3) самые критичные насколько мне известно пофикшены. Как минимум, я критичных глюков не замечаю, есть мелочи разумеется, но к я ним привык и называю их по именам))) А до фиксов да, было прикольно: иос собирали в Токио, андроид - в берлине)))
  9. 1 балл
    Brovin Yaroslav

    C++’s Strengths Keep it Relevant in an Age of Code Bootcamps

    There is an interesting post on Medium aiming to inspire students why to learn C++. Its main point is that learning C++ teaches fundamental computer science concepts: memory management, compile-time vs run-time, polymorphism implementation, iterators and containers, and more. Unfortunately, it phrases itself in an exclusionary manner. While C++ is not the only language where you can learn these fundamentals, it is one of the most popular. However, with dozens of coding "boot camps" popping up and charging thousands of dollars for the promise of a quick path to a software development career, why should you consider learning a complex language like C++? Here are three key reasons to learn and use C++ today: Technical Foundation It's Widely Used Support and Future Let’s look at these in order. Technical Foundation C++ is one of the most common languages used to teach strong foundational knowledge that is applicable to all other languages. There are many core concepts you can learn with C++: Memory management: Allocating and freeing; use of pointers, and very quickly why you should not manually manage memory Different memory management models: reference-counted in the form of shared_ptr; strict ownership in the form of unique_ptr Ownership and deterministic behaviour, illustrated by RAII (see C++ specifics) Polymorphism behaviours: this one is in fact illustrated by some odd behaviours of C++, such as that the type identity of an object changes throughout its construction - hint, what happens when you call a virtual method in a constructor? Fundamental containers and algorithms Optimizations: what causes fast or slow code? Functional programming: while not a pure functional language, functional style is a direction the language has been heading and is very powerful in C++ If you learn C++, you will have a solid background that will allow you to understand other languages’ designs and implementations. It’s Widely Used C++ is the most widely used language for software today, especially in areas requiring performance. The following applications are written totally or mostly in C++: Windows Explorer Photoshop Word Clang compiler Windows (key area, including the new wrappers for XAML and desktop in C++17) Amazon’s key services Large parts of Apple’s macOS Bloomberg’s financial software And many more. Why is it widely used? Because C++ is powerful, expressive, concise, and performant. When you need to write solid, fast, applications and need powerful concepts in your code, you use C++. Support and the Future Finally, one key item in learning a language is the direction it’s going in the future. C++ is an ISO standard, and is evolving rapidly. You can read an overview of the various standard versions here. It’s a language that is being kept up-to-date and extended as developers need it. That’s a language to rely on. Ready to Get Started learning or expanding your C++ knowledge? Start with our free tools and C++ Bootcamp replays. Просмотр полной статьи
  10. 1 балл
    ENERGY

    Android (iOS) popup

    Use TListBox as a Popup menu. Does TPopup already work nice on mobile OS? Here is how to: https://community.embarcadero.com/blogs/sarina-dupont-senior-product-manager/entry/creating-an-overflow-menu-on-android-463
  11. 1 балл
    FREEFAR

    Android (iOS) popup

    Hi there! Try catch onFromKeyUp. There write code like: if PopupComponent.Visible then begin //doSomething.... key := 0; end;
  12. 1 балл
    Просто не давать права на mock location. В новых версиях Android mock можно использовать только для приложения, у которого такое разрешение включено.
  13. 1 балл
    Олег Игоревич

    MapView рушит приложение в Tokyo 10.2.3

    Отлично пуши исправили и карты заработали. 30831_rad_studio_10.2.3_android_push_notification_patch.ZIP
  14. 1 балл
    mazayhin

    SSDP for Android

    Как вижу, тут есть 3 варианта. 1. Взять обертки над SDK от fmxexpress (или сделать самому), и самому написать по примеру выше, но уже на delphi. 2. Найти подходящее на Java, скомпилировать в jar, создать обертку для delphi (Java2Op) и использовать уже ее. 3. Наверное, самый удачный вариант, т.к. все это чудо работает по UDP, самому на основе Indy реализовать в своей программе.
  15. 1 балл
    krapotkin

    Hint для Андроид

    для полноценной подсказки и на windows и на android я в критических местах добавляю малую кнопку с вопросиком ))
  16. 1 балл
    mazayhin

    Log.d - что это?

    API for sending log output. Generally, you should use the Log.v(), Log.d(),Log.i(), Log.w(), and Log.e() methods to write logs. You can then view the logs in logcat. The order in terms of verbosity, from least to most is ERROR, WARN, INFO, DEBUG, VERBOSE. Verbose should never be compiled into an application except during development. Debug logs are compiled in but stripped at runtime. Error, warning and info logs are always kept. Смотреть это можно через monitor.bat идет в составе sdk, ну или abd logcat. В лог выод идет только для debug сборок, в release не выводится
  17. 1 балл
    Fedor K

    Как грамотнее закрыть Android -приложение?

    Close, Application.Terminate - я бы не советовал использовать на Android. Может оказаться такая ситуация, что часть приложения останется в памяти, а что-то уже убьется. В итоге заново запустить приложение без выкидывания из истории не получится и увидите только черный экран. Желательно обойтись без самоубийства на Android и лишь свернуть через SharedActivity.moveTaskToBack(True); Если все же самоубийство по плану, тогда лучшие средства TJProcess.JavaClass.killProcess(TJProcess.JavaClass.myPid); MainActvity.Finish; - как упомянул выше Равиль.
  18. 1 балл
    Обычно достаточно Close, но можно ещё Application.Terminate, MainActivity.finish или Halt(0)
  19. 1 балл
    rareMax

    Как узнать, что Android приложение свернуто?

    Прочитайте эту статью: http://delphifmandroid.blogspot.com/2016/09/delphi-android.html
  20. 1 балл
  21. 1 балл
    Добрый день! В стандартных компонента есть механизм по встраиванию своих функций в SQLite. ... // создаю встроенную функцию ru_lower F1 := TFDSQLiteFunction.Create(nil); F1.DriverLink := WC1; F1.FunctionName := 'ru_lower'; F1.ArgumentsCount := 1; F1.OnCalculate := ru_lower; ... procedure TORMmanager.ru_lower(AFunc: TSQLiteFunctionInstance; AInputs: TSQLiteInputs; AOutput: TSQLiteOutput; var AUserData: TObject); begin AOutput.AsString := AInputs[0].AsString.ToLower; end; SQL: select name from users where ru_lower(name) like '%иван%' Запрос вернет все имена содержащие иван в любом регистре.
  22. 1 балл
    DirtyBorov

    MaskEdit

    Случилось так, что потребовался мне ввод номера телефона. Компонента, аналога TMaskEdit в FMX нет, так что пришлось "изобретать на коленке". Компонент писать было лень, потому просто покажу как я решил это в конкретном диалоге с использованием TEdit. Может кому то пригодится. Из кода я убрал все лишнее, оставил только то что относится к делу. uses .... System.MaskUtils, System.Character; type TFormRegistry = class(TForm) edtPhone: TEdit; procedure edtPhoneValidating(Sender: TObject; var Text: string); procedure edtPhoneKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); procedure FormCreate(Sender: TObject); procedure edtPhoneEnter(Sender: TObject); procedure edtPhoneTyping(Sender: TObject); private const Mask = '+7(000)000-00-00;0;*'; /// '+0(000)000-00-00;0;*' - для других стран, например для Украины +3(999).... private PhoneNumber: string; function GetCaretPos: Integer; function GetMaxLength: integer; public end; procedure TFormRegistry.FormCreate(Sender: TObject); begin edtPhone.Text := FormatMaskText(Mask, PhoneNumber); end; function TFormRegistry.GetCaretPos: Integer; var i: integer; begin Result := 0; for i := 0 to Mask.Length-1 do begin if not (MaskGetCharType(Mask, i) in [mcDirective, mcMask]) then Result := Result + 1; if (Result + PhoneNumber.Length) = i then Break; end; Result := Result + PhoneNumber.Length - 1; end; function TFormRegistry.GetMaxLength: integer; var i: integer; begin Result := 0; for i := 0 to Mask.Length-1 do if (MaskGetCharType(Mask, i) in [mcMask]) then Result := Result + 1; end; procedure TFormRegistry.edtPhoneKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin if (Key = 8) and (PhoneNumber.Length > 0) then PhoneNumber := Copy(PhoneNumber, 1, PhoneNumber.Length-1) else if (PhoneNumber.Length < GetMaxLength) and (Key = 0) and IsDigit(KeyChar) then PhoneNumber := PhoneNumber + KeyChar else KeyChar := #0; end; procedure TFormRegistry.edtPhoneEnter(Sender: TObject); begin edtPhone.CaretPosition := GetCaretPos; end; procedure TFormRegistry.edtPhoneTyping(Sender: TObject); begin edtPhone.CaretPosition := GetCaretPos; end; procedure TFormRegistry.edtPhoneValidating(Sender: TObject; var Text: string); begin Text := FormatMaskText(Mask, PhoneNumber); end; end.
  23. 1 балл
    Brovin Yaroslav

    Unsupported media file

    На официальном сайте написано: нет, на все популярные платформы
  24. 1 балл
    вот так делается self.Fill.Color:= TAlphaColorF.Create(255/Random(255), 255/Random(255), 255/Random(255), 255/Random(255)).toAlphaColor;
  25. 1 балл
    Не за что. Если что спрашивай. XML формат мне всегда был противен, хоть и понятен, но все равно внутренне я был против него и как следствие принципиально не использовал в своих программах. Но вот формат JSON мне очень понравился. Его легко написать от руки, легко читать, даже через регулярки парситься легко, если приспичило. И он не избыточен как XML, а значит по канала связи передается меньше трафика. Так что не бросай этот формат И кстати, что касается утечек. Я когда сам только начинал разбираться в формате JSON и с тем как работать с ним в Delphi, у меня тоже были утечки, ибо я использовал JSON для парсинга ответа с сервера, в потоке. Я тогда начал склоняться к всеобщему мнению что просто сама реализация работы с этим форматом в делфи кривая. Но поколебавшись все таки принял во внимание ту мысль, что разработчики Embacadero на девять жизней умнее меня, и вряд ли они выпустили модуль с таким явным глюком. И решил все таки углубиться дальше. Как оказалось просто поставить JS.Free в конце не достаточно. Т.е. вот так вот делать не стоит: var JS: TJSONObject; begin s := '{"jsonString":"ok"}; JS := TJSONObject.ParseJSONValue(s) as TJSONObject; ShowMessage(JS.GetValue('jsonString').Value); JS.Free; end; В процессе работы потока с ним может случиться все что угодно - обрыв связи, тайоут сработает, или некорректные данные, или еще что нибудь. И JS объект может не освободиться. Т.е. поток может уже и не существует, но в оперативке созданный объект лежит. К тому же при таком подходе могут быть и ошибки, например параметра 'jsonString' может и не быть, и все вывалиться в ошибку (но в потоке этого можно и не увидеть) и до JS.Free код никогда не дойдет. А значит будет опять утечка памяти. Так что правильней всего делать через Assigned: var JS: TJSONObject; begin s := '{"jsonString":"ok"}'; JS := TJSONObject.ParseJSONValue(s) as TJSONObject; if Assigned(JS) then begin ShowMessage(JS.GetValue('jsonString').Value); JS.Free; end; end; Тогда утечек не будет. Это я теперь точно знаю!)))
Эта таблица лидеров рассчитана в Москва/GMT+03:00