Перейти к содержанию
Fire Monkey от А до Я

ruslan

Пользователи
  • Постов

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

  • Посещение

  • Победитель дней

    15

Весь контент ruslan

  1. уверяю Вас - стало только хуже )
  2. http://www.fmxexpress.com/ten-tips-for-migrating-from-c-and-net-to-multi-platform-object-pascal-and-delphi-firemonkey/ поржал от души )) для опытного дельфиста не составит особого труда изучить .net. Я для себя нашел столько полезного... Только нужно привыкнуть: - условие операторе if условие всегда заключается в скобки - {} вместо begin end - нету процедур. есть функции возвращающие void - тип возвращаемого значения метода указывается до имени метода, а не после - в паскале все классы обычно начинают с T, в шарпе такого нет, префиксы не указывают - имена классов, методов, переменных чувствительны к регистру - нету "объявлений" классов. все "по месту". т.е. interface и implementation объединены - область видимости указывается не для группы методов, а перед каждым методом - вместо class function идет static - хэлперов может быть сколько угодно, классы хэлперов взаимодополняют друг друга - наследование дженериков(да и вообще наследование) реализовано шикарно, не как в дельфях это только то, к чему нужно привыкнуть.. а так... небо и земля... я вот даже преимущество дельфей не могу перечислить, хотя не один год писал... + visual studio community edition. все бесплатно. по поводу ксамарина.. полное покрытие всего апи, собирал демки: размер апк, объем занимаемой в оперативе памяти, как если бы собирал андроид студией. да, нужно изучать api каждой платформы( android\ios ), да gui рисуется отдельно для каждой платформы, но подумайте сколько времени Вы тратите на "рисование" гуи, а сколько на отлов багов\исправление "недо-фич", а сколько нервишек то сэкономиться... Может кто и не согласен, готов побеседовать.. Это ведь так... мой скромный опыт
  3. для чата хватит ты им пользовался САМ ?)
  4. Я практически уверен, что это нереально. Вот попробуйте в AndroidStudio накидать простой пример(либо глянуть один из стандартных сэмплов) захвата кадров с камеры и последующим обработкой\сохранением\передачей\ваш_вариант. Работает идеально. Прокиньте свои java-классы\функции через абракадабровский wrapper(JNI). Работает очень медленно ! По-этому я для себя сделал такой вывод: дело не в TCameraComponent(гляньте его ведро-реализацию - все очень просто), все дело в JNI. На простых\однократных операциях это не заметно. Там где начинаются обработки фото\видео\звука - начинается кошмар. Называйте это "пингом" между fmx и android'ом, или как-то по-другому, но факт есть факт: JNI(или хз что там конкретно, какой-то "мост") работает очень медленно. По-этому если Вам нужны реально высокопроизводительные приложения под ведро\иос - смотрите в сторону инструментов, предлагаемых компаниями-разработчиками данных ОС, ну или Xamarin. Вот испульзуя эти инструменты, Вы получите реально "true native". А так.. все "это" годно только для простейших свисто-перделок, "блокнотов" и АРМов из 3-х таблицы(по типу Employee Directory). п.с. Сам я потихоньку "переезжаю" на VisualStudio, AndroidStudio
  5. да очень часто эти .finish не помогают. лучше просто все сохранить и убить нафиг процесс. что бы наверняка
  6. лучше без фильтра ) глянь http://fire-monkey.ru/topic/1046-reshenie-segmentation-fault11-ili-axe-beats-in-the-balls авось поможет )
  7. эм...... может я не правильно понял... но, вроде, если снять все галки с StyledSettings, то параметры шрифта при переключении стиля не слетают...
  8. Добрый день всем тем несчастным кто пишет на фаирманки. Если ваше приложение (под андроид) делает больше, чем приложения из папки Samples, если оно содержит не только ButtonClick и Memo, то, наверняка, вы постоянно наблюдаете мою "любимую" ошибку при закрытии приложения: Segmentation fault(11). Если Вам надоело править исходники из папки {XE7}\Source, если ваше приложение ну никак не хочет полностью выгружаться и висит в фоновых процессах, покажу Вам свое решение данной, мягко говоря, проблемы. Подключаем к проекту приложенный .pas и в нужном месте кода(желательно на OnClose главной формы) юзаем процедуру KillMe. Теперь Ваше приложение всегда будет выгружаться из памяти, а также запускаться с 1-го раза. п.с. Если посмотреть исходники, то можно понять смысл названия топика. uVedroProcess.zip
  9. ключевая фраза: "периодически мониторить"
  10. да незачто ) все мы в одной большой "яме" !) а api у вк не сложное... вот фейсбук... очень закрытое апи
  11. помню допиливал для себя. см. вложение. на DidFinishLoad делай // вытягиваем урл из компонента WebBrowser {$ifdef mswindows} newURL:= (FWebBrowser.GetWeb as IWebBrowserEx).GetLocation; {$else} newURL:= FWebBrowser.GetWeb.URL; {$endif} ( конечно, можно все ето в геттеры\сеттеры завернуть, но времени не было) везде не тестил. но под винду и ведро работает( я ловил редирект после авторизации в [прости господи] Вконтакте ) TWebBrowserEx.zip
  12. советую периодически мониторить ftp-шник: bbs.2ccc.com uploads uploads
  13. а что должен делать компонент то ? тут без сервиса не обойтись. а сервис\ресивер - сугубо нативные ведро-фишки. как ты их "завернешь" в компонент, если это автономные сущности, которые в добавок еще и в манифестах прописываются ? Плюс в ведре есть разные сервисы, разные ресиверы, которые по-разному "кодятся". было бы конечно шикарно, чтобы в дельфях можно было писать такие сервисы, по типу как в вин-приложениях. Но, по сути, лучше изучить сдк, и написать самому, потому как можно и не дождаться
  14. я бы посоветовал посмотреть как реализована работа с GCM push уведомлениями. декомпильте cloud-messaging.jar, который в {xe7}\lib\android\debug откройте в андроид студии например. работа с пушами построена, по сути, как это рекомендует делать Google( https://developer.android.com/google/gcm/client.html ). т.е. есть WakefulBroadcastReceiver( com.embarcadero.gcm.notifications.GCMNotification ), который в манифесте подписывается на intent-filter com.google.android.c2dm.intent.RECEIVE. когда приходит пуш - ресивер его ловит. если имплементирован т.н. listener( в дельфях по указателю назначен обработчик ), то управление передается ему, т.е. дельфи-приложение(основной активити) принимает intent, который пришел от гугла, и обрабатывает пуш. если лисенер не назначен, то стартует IntentService ( https://developer.android.com/reference/android/app/IntentService.html ), который парсит пришедший интент и вызывает публикацию нотификейшена. короч, ковыряем исходники и изучаем Android SDK
  15. День добрый. Необходимо при получении push-сообщения определенного содержания, проводить определенные действия( например поднять активити из бэкграудна\стартануть активити ). В unit Androidapi.JNI.PlayServices.GCM есть интерфейсы JGCMIntentService = interface;//com.embarcadero.gcm.notifications.GCMIntentService JGCMNativeListener = interface;//com.embarcadero.gcm.notifications.GCMNativeListener JGCMNotification = interface;//com.embarcadero.gcm.notifications.GCMNotification проблема в том что это JNI на java-классы, которые лежат в скомпилированном jar-файле {XE7}\lib\android\debug\cloud-messaging.jar мне, как я понимаю, нужно править пакет com.embarcadero.gcm.notifications.GCMNotification. там как я понимаю реализован классический BroadcastReciever( extend GCMBroadcastReceiver ), а конкретно нужно поправить метод onReceive, который обрабатывает broadcast'ы от сервиса( GCMIntentService ) вопрос( думаю к Embarcadero ): можно ли как-нибудь получить исходники ваших java-классов GCM-сервисов, дабы не заниматься написанием велосипедов ?
  16. Подскажите, знает ли кто как в FMX использовать свой шрифт не устанавливая его в в систему ? под vcl было что-то вроде: procedure LoadFont; var MyResStream: TResourceStream; begin MyResStream:= GetResStream('MyFont'); MyResStream.SavetoFile('MyFont.ttf'); AddFontResource(PChar('MyFont.ttf')); SendMessage(HWND_BROADCAST, WM_FONTCHANGE,0,0); end; procedure UnLoadFont; begin RemoveFontResource('MyFont.ttf') ; SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ; end; в фаирманках, что удивительно(сарказм), этот не работает. как я понимаю, шрифты подгружаются в момент запуска приложения, и рисуются средствами gdi... хотел поправить юнит FMX.FontGlyphs.Win по аналогии с http://delphifmandroid.blogspot.com/2015/01/true-type.html но TWinFontGlyphManager даже не создается( дебагер не попадает в конструктор ). вопрос: как решить эту маленькую проблему ?
  17. а что за интент стартуешь ? попробуй перед startActivityForResult сделать Intent.setFlags(TJIntent.javaclass.FLAG_ACTIVITY_NEW_TASK);
  18. если в кратце: создаешь интент с ACTION_GET_CONTENT. стартуешь через startActivityForResult. ловишь результирующий интенет. получаешь оттуда uri. создаешь InputStream, передав в конструктор этот uri. потом этот стрим в массив байт. потом массив в дельфовый stream. и делаешь с ним что хочешь. ну или свой файлманагер
  19. что можете посоветовать по этому поводу, какой опыт извлекли ?
×
×
  • Создать...