Перейти к содержанию
  • Регистрация

Лидеры


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

Показан контент с высокой репутацией за 16.05.2019 в Сообщения

  1. 3 балла
    Вот и наступило лето, а вместе с ним и закрытое бета-тестирование библиотеки FGX Native, которое будет проводиться среди участников из стран СНГ. В процессе бета-тестирования будет проведена большая работа, и это займет много моего времени. В связи с этим, среди кандидатов, подавших заявку, будет произведен отбор на основании их профессионального уровня, технической подкованности и т.д. Наличие готового проекта для портирования (или полноценной идеи для будущего приложения) будет большим плюсом при принятии положительного решения по вашей кандидатуре. Я прошу вас максимально честно отвечать на вопросы – это поможет сократить сроки проведения тестирования и приблизит долгожданный полноценный релиз. Цели и задачи бета-тестирования: Повышение общего качества библиотеки; Определение степени удобства и очевидности использования существующего функционала с целью дальнейшего улучшения; Создание реальных (в том числе и коммерческих) проектов, основанных на библиотеке; Выявление приоритетных направлений по расширению компонентной базы; Получение обратной связи; Осуществление приоритетной технической поддержки для решения проблем. Бета тестирование - это хорошая возможность попробовать реализовать свои идеи, мигрировать небольшие существующие FMX проекты и в живую оценить достоинства и недостатки библиотеки. Всем участникам закрытого бета теста будет выдана лицензия на весь период тестирования для разработки любых проектов с использованием библиотеки. Кандидаты, прошедшие отбор, получат письма с дальнейшими инструкциями. Анкета доступна по адресу: https://forms.gle/hTVrF5oXEobWCNMR8 Всем хороших рабочей недели!
  2. 3 балла
    Vladimir PRO

    Узнать размер видеопамяти

    Обновлённая ссылка на DEMO: http://gofile.me/2Zesj/fbsharing-C0f3wb1o Последняя версия в папке: OpenCL_Demo2018 Barrier and Local_Memory REDUCT Delphi Tokyo 10.2.2 !! LAST !!
  3. 3 балла
    Евгений Корепов

    Передача и прием JSON в PHP

    Я бы переделал и код отправки и код приема. При отправке вы выполняете лишние действия, проверяете наличие интернет, преобразуете json в лист. Отправка любым способом желательна в виде "Ключ=Значение", чтоб на стороне сервера корректно распознать данные. Вот отправка POST (добавьте в uses System.Net.Mime): function TForm1.PostURL(const aurl, json: string): string; var AHTTPClient : THTTPClient; AHttpResponse: IHttpResponse; ASource: TMultipartFormData; begin result:= ''; AHTTPClient:= THTTPClient.Create; ASource:=TMultipartFormData.Create(); ASource.AddField('request', json); try try AHttpResponse := AHTTPClient.Post(aurl, ASource); if AHttpResponse.StatusCode <> 200 then Result := AHttpResponse.StatusText else Result := AHttpResponse.ContentAsString(); except on E: exception do ShowMessage('Ошибка сети: '+E.Message); end; finally FreeAndNil(ASource); FreeAndNil(AHTTPClient); end; end; Но гораздо проще и быстрее делать GET (добавьте в uses System.NetEncoding): function TForm1.GetURL(const aurl, json: string): string; var AHTTPClient : THTTPClient; AHttpResponse: IHttpResponse; AEncodedJSON : String; begin result:= ''; AHTTPClient:= THTTPClient.Create; AEncodedJSON:=System.NetEncoding.TURLEncoding.URL.Encode(json); try try AHttpResponse := AHTTPClient.Get(aurl + '?request=' + AEncodedJSON); if AHttpResponse.StatusCode <> 200 then Result := AHttpResponse.StatusText else Result := AHttpResponse.ContentAsString(); except on E: exception do ShowMessage('Ошибка сети: '+E.Message); end; finally FreeAndNil(AHTTPClient); end; end; file_get_contents("php://input", "r") - это тоже вариант, но никогда такое не используйте. На стороне сервера, в php есть специальные глобальные переменные для получения данных $_REQUEST, $_POST и $_GET. $_POST и $_GET - для соответствующих HTTP методов. $_REQUEST - универсальный. Вот вам код php для сервера, я там описал вспомогательную функцию лога MyLog, измените путь логов на свой. <?php @ini_set("display_errors", "1"); error_reporting(E_ALL); //@ini_set("display_errors", "0"); error_reporting(0); function MyLog($Title, $Value = "", $Debug = false) { $LogFile = "/var/log/service/test001.log"; if (is_array($Title)) $Title = "\n".print_r($Title, true)."\n"; if (is_array($Value)) $Value = "\n".print_r($Value, true)."\n"; $Message = date("Y.m.d H:i:s")." ".$Title.$Value."\r\n"; if ($Debug) echo $Message; file_put_contents($LogFile, $Message, FILE_APPEND); } // Проверяем наличие параметра request if (!isset($_REQUEST["request"])) { echo "Нет параметров"; return; } // Декодируем строку из $_REQUEST["request"] в массив $RequesrArray = json_decode($_REQUEST["request"], true); // Проверяем прошло ли декодирование нормально if (!isset($RequesrArray)) { echo "Ошибочный JSON"; return; } MyLog('*************************************************************************************************************************'); MyLog('$_REQUEST:', $_REQUEST); MyLog('$_POST:', $_POST); MyLog('$_GET:', $_GET); MyLog('$RequesrArray:', $RequesrArray); // Работаем с массивом $RequesrArray $lessongrid_type = $RequesrArray['lessongrid_type']; $schedule0 = $RequesrArray['schedule'][0]; Обратите внимание json_decode($_REQUEST["request"], true); используется с вторым параметром true - при этом создается не объект (медленно), а ассоциативный массив (быстрее некуда). Вот код Delphi procedure TForm1.FormCreate(Sender: TObject); Var AURL : String; AJSON : String; begin AURL:='http://myserver.ru/api/test001.php'; AJSON:='{"lessongrid_idpartner":2,"lessongrid_type":0,"lessongrid_idpointcity":1,"lessongrid_iddircourses":1,"lessongrid_idteacher":1,"schedule":["0:00","5:00","0:00","0:00","0:00","0:00","0:00"]}'; PostURL(AURL, AJSON); GetURL(AURL, AJSON); end; А вот логи на стороне сервера: 2019.06.06 13:29:13 ************************************************************************************************************************* 2019.06.06 13:29:13 $_REQUEST: Array ( [request] => {"lessongrid_idpartner":2,"lessongrid_type":0,"lessongrid_idpointcity":1,"lessongrid_iddircourses":1,"lessongrid_idteacher":1,"schedule":["0:00","5:00","0:00","0:00","0:00","0:00","0:00"]} ) 2019.06.06 13:29:13 $_POST: Array ( [request] => {"lessongrid_idpartner":2,"lessongrid_type":0,"lessongrid_idpointcity":1,"lessongrid_iddircourses":1,"lessongrid_idteacher":1,"schedule":["0:00","5:00","0:00","0:00","0:00","0:00","0:00"]} ) 2019.06.06 13:29:13 $_GET: Array ( ) 2019.06.06 13:29:13 $RequesrArray: Array ( [lessongrid_idpartner] => 2 [lessongrid_type] => 0 [lessongrid_idpointcity] => 1 [lessongrid_iddircourses] => 1 [lessongrid_idteacher] => 1 [schedule] => Array ( [0] => 0:00 [1] => 5:00 [2] => 0:00 [3] => 0:00 [4] => 0:00 [5] => 0:00 [6] => 0:00 ) ) 2019.06.06 13:29:13 ************************************************************************************************************************* 2019.06.06 13:29:13 $_REQUEST: Array ( [request] => {"lessongrid_idpartner":2,"lessongrid_type":0,"lessongrid_idpointcity":1,"lessongrid_iddircourses":1,"lessongrid_idteacher":1,"schedule":["0:00","5:00","0:00","0:00","0:00","0:00","0:00"]} ) 2019.06.06 13:29:13 $_POST: Array ( ) 2019.06.06 13:29:13 $_GET: Array ( [request] => {"lessongrid_idpartner":2,"lessongrid_type":0,"lessongrid_idpointcity":1,"lessongrid_iddircourses":1,"lessongrid_idteacher":1,"schedule":["0:00","5:00","0:00","0:00","0:00","0:00","0:00"]} ) 2019.06.06 13:29:13 $RequesrArray: Array ( [lessongrid_idpartner] => 2 [lessongrid_type] => 0 [lessongrid_idpointcity] => 1 [lessongrid_iddircourses] => 1 [lessongrid_idteacher] => 1 [schedule] => Array ( [0] => 0:00 [1] => 5:00 [2] => 0:00 [3] => 0:00 [4] => 0:00 [5] => 0:00 [6] => 0:00 ) ) Как видите можно использовать код с $_REQUEST в обоих случаях. Вот итоговый код php <?php @ini_set("display_errors", "1"); error_reporting(E_ALL); //@ini_set("display_errors", "0"); error_reporting(0); // Проверяем наличие параметра request if (!isset($_REQUEST["request"])) { echo "Нет параметров"; return; } // Декодируем строку из $_REQUEST["request"] в массив $RequesrArray = json_decode($_REQUEST["request"], true); // Проверяем прошло ли декодирование нормально if (!isset($RequesrArray)) { echo "Ошибочный JSON"; return; } // Работаем с массивом $RequesrArray $lessongrid_type = $RequesrArray['lessongrid_type']; $schedule0 = $RequesrArray['schedule'][0];
  4. 2 балла
    Те версии, которые будут получены в ходе текущего бета тестирования, останутся у участников. И они могу продолжать ими пользоваться по окончании бета-тестов бесплатно. Возможно, я поблагодарю участников, выдав им бесплатную подписку на какое-то время. Но этот вопрос я еще не прорабатывал. И я к нему вернусь ближе к окончанию тестирования. Чтобы оценить результат работы и соответственно ему отблагодарить участников. Для остальных разработчиков (не участвующих в тестировании) для использования нужно будет приобретать лицензию. Исходные коды будут, но не все. Только кроссплатформенная часть, которая содержит объявление компонентов с описанием апи необходимая для разработки приложений. К сожалению, никак не могу прокомментировать вашу личностную оценку. Да и надеюсь, что вы не считаете меня всезнайкой. Не знаю, где вы такое нашли. Но FMX, как и любой другой продукт в той или иной степени не лишен программных ошибок. А значит над ними нужно работать и исправлять. И если бы вы обращали свое внимание не только на то, что пишется в чатах, а следили за изменения в FMX, то без особого труда заметили, что работа над FMX продолжается и даже более активнее, чем была года 2 назад. А значит работа ведется над улучшениями. Достаточно взглянуть на эту диаграмму (по количеству заведенных и исправленных проблем в Rad Studio в целом), сравнение количества исправленных проблем. Например, тут в целом видно, что по сравнению с 2017 годом в 2018 количество исправленных проблем стало почти в 2 с половиной раза больше. И это только публичная жира. А еще есть внутренняя, которая имеет свои репорты, которые в публичную часть не попадают. Поэтому фактически показатель еще лучше и надеюсь пользователи это замечают. Собственно говоря, эта фраза расставляет все точки над и.
  5. 2 балла
    qz5

    Не работает JS в Android

    или вот так document.getElementById('PR_FIO').setAttribute('value','test');
  6. 2 балла
    Barbanel

    Версия андроид

    Купил ребенку дешевый китайский Oukitel с алиэкспреса. (примерно 50 евро стоил) Был удивлен тем что студия его увидела. Запускать правда на нем приложения не пробовал. Попробую - отпишусь.
  7. 2 балла
    Vitaldj

    Версия андроид

    Вот я же давал вверху сылку: https://www.mvideo.ru/products/smartfon-prestigio-wize-q3-duo-gold-psp3471-30036911 Ну или покупай чистый андроид
  8. 2 балла
    Vitaldj

    Версия андроид

    Нееет, там полная ...опа. Я помучался пару дней и купил дешманский андроид))
  9. 2 балла
    Евгений Корепов

    Версия андроид

    Покупайте любой телефон с андроидом посвежее (потому как в последней версии студии на андроиде < 5 вы ничего уже не запустите). И обязательно берите чистый аднроид, никаких HTC, Samsung, Xiaomi с их мега-облочками. Вот к примеру Xiaomi A1 - модель с чистым андроидом, вполне себе средний телефон, не дорого.
  10. 2 балла
    Tumaso

    Ошибка при отладке Cannot Deploy

    Вместе с этим окном еще выдается и диалоговое окно с детализацией ошибки. Рекомендации, указанные на скриншоте, проверены? Свободное место на телефоне есть? Еще перед заливкой новой версии можно вручную удалить с телефона ранее установленную версию приложения
  11. 2 балла
    Здравствуйте! Решил вопрос таким образом: 1. Нужен будет файл: https://github.com/DelphiWorlds/KastriFree/blob/master/API/DW.Androidapi.JNI.FileProvider.pas Код будет такой: Procedure ShowPhoto; var Intent: JIntent; Authority: JString; Uri: Jnet_Uri; begin With Form1.PhotoGrid do i:=Selected*2+ColumnIndex; If i>FImages.Count-1 then Exit; Authority := StringToJString(JStringToString(TAndroidHelper.Context.getApplicationContext.getPackageName) + '.fileprovider'); Uri:=TJFileProvider.JavaClass.getUriForFile(TAndroidHelper.Context, Authority, TJFile.JavaClass.init(StringToJString(FILE))); Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.setDataAndType(Uri, StringToJString('image/*')); Intent.setFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION); TAndroidHelper.Activity.startActivity(Intent); end; У меня в Delphi подключен SDK 25. Работа проверена на Андроид 4.4 и 8.0
  12. 2 балла
    Vitaldj

    Версия андроид

    Купил себе в конце прошлого года самый простой и дешевый телефон Смартфон Prestigio Wize Q3 Duo Gold (PSP3471) https://www.mvideo.ru/products/smartfon-prestigio-wize-q3-duo-gold-psp3471-30036911 Кроме низкой цены, есть еще плюсы. Так как это очень бюджетный телефон, то в нем всего 1 гб опетаривы и разрешение 480х960 и слабый проц. Но для разработчика это только плюс. Вы сразу увидите косяки из за низкого разрешения (не влезает интерфейс), медленную работу, лаги. Но если у вас все будет хорошо с вашим приложением (оптимизируете код и т.д.), то, у других, потенциально более сильных телефонах, все будет в порядке.
  13. 2 балла
    пообещали в бете 10.4, т.е. если разработчик на комьюнити или на лечении, то тогда ждет до релиза в конце 2019((, как бы с такими сроками все во флаттер не ушли, окончательно((
  14. 2 балла
    Продукты Apple не умеют корректно декодировать URL. Это исключительно ваша задача. Все другие платформы делают это автоматически. Вам нужно добавить код: uses System.NetEncoding; ... URL:='http://blabla.com/php/pay2.php?eks=' + System.NetEncoding.TURLEncoding.URL.Encode('блабла&sum=100&hash=блабла&orderid=205');
  15. 2 балла
    Все невизуальные компоненты, которые не используют код FMX прекрасно работают.
  16. 1 балл
    krapotkin

    Разбор JSON с мультизапросом

    arr:=SA(JSON); for i:=0 to arr.length-1 do arr2:=arr.a[i];
  17. 1 балл
    Бука

    Не могу выложить программу в гугл магазин

    Всем спасибо. Не знаю в чем была причина но через неделю попробовал опять выложить всё получилось.
  18. 1 балл
    Частая ошибка. Зайдите в настройки профиля в IDE. Там где прописаны Фреймворки. Нажмите "добавить". Пропишите в поле Имя фреймворка - последнее имя из ошибки. У Вас это "DocumentManager". IDE автоматом скачает нужный фреймфорк из Xcode. Повторите столько раз сколько вылезет ошибка. Если не поймете - поищите на сайте Ембаркадеро как добавлять фреймфорки.
  19. 1 балл
    Евгений Корепов

    Версия андроид

    Это происходит в основном или с русским ребрендингом, где пытаются скрыть настоящего производителя аппарата с помощью программный заглушек. Типа Dexp и прочий мусор. Или с контрафактной китайщиной без IMEI. Тут не студия не видит, а винда не понимает что к ней подключили. Обычно решается поиском на китайских форумах подходящих дров. Просто покупайте любой Xiaomi c Android One (чистый андроид). Его вы всегда сможете использовать по назначению для себя/семьи или продать. Или покупайте любой, в нормальном магазине - если что то не заработает, вернете в течении двух недель со словами "Его цвет не походит к моим глазам" )))
  20. 1 балл
    Barbanel

    Версия андроид

    Поддерживаю. На реальном железе быстрее и удобнее.
  21. 1 балл
    Vitaldj

    Не могу выложить программу в гугл магазин

    Они пока предупреждают только. Все выкладывается и в 32
  22. 1 балл
    Barbanel

    Версия андроид

    Никто ведь не собирается удаленно у нескольких миллионов пользователей выпиливать ОС со всеми личными данными. Даже если и сольют, на существующих устройствах все еще можно разрабатывать и тестировать под Андроид 6, 7, 8, 9 Но новые функции очевидно не протестировать, да. Хотя о чем мы, эмба и новые функции - понятия полярные)))
  23. 1 балл
    WebPuper

    Ошибка при отладке Cannot Deploy

    Причиной оказалось, что в Deploy убирал галочки с PNG иконок Android_Launcher
  24. 1 балл
    Евгений Корепов

    TMultiView состояние

    MultiView.IsShowed http://docwiki.embarcadero.com/Libraries/Rio/en/FMX.MultiView.TCustomMultiView.IsShowed
  25. 1 балл
    Tumaso

    Не могу выложить программу в гугл магазин

    Смотрите внимательнее, мы точно также выкладываем, хотя и нам точно также выдается предупреждение о 64х битности.
  26. 1 балл
    dnekrasov

    Помогите начать работу с Oracle

    Для того, чтобы это работало нужна FireDACOracleDriver25(6)0.bpl. Не факт что она идёт вместе с Trial (в Community её точно нет).
  27. 1 балл
    dnekrasov

    Помогите начать работу с Oracle

    В Community Edition его и не будет (как и многих других). Это одно из ограничений этой редакции студии. Выход - или купить Professional... или всем известный способ
  28. 1 балл
    Tumaso

    Помогите начать работу с Oracle

    @sulion посмотрел у себя, в 10.2.3 на закладке FireDAC Links есть компонент TFDPhysOracleDriverLink (а не TFDPhysORADriverLink), попробуй разместить на форме его. Ну а если и этого компонента у тебя нет, тогда я бы на твоем месте переустановил бы студию и внимательно при установке смотрел на все галочки устанавливаемых компонентов студии
  29. 1 балл
    Tumaso

    Версия андроид

    @Vitaldj не все так просто, ты забыл например про face id
  30. 1 балл
    Vitaldj

    Версия андроид

    с iPhone в этом плане проще. Если работает на одном устройстве, то точно будет работать на другом))
  31. 1 балл
    Tumaso

    Версия андроид

    Идеально конечно иметь телефоны со всеми версиями Android (начиная с 5), а также iphone (начиная с 6S). Но это далеко не бюджетно, увы
  32. 1 балл
    Tumaso

    Нужен пример осциллограф

    Используй TChart, стандартная версия идет из коробки. Примеры использования есть на сайте разработчика, https://www.steema.com/product/vcl (в том числе и для FMX)
  33. 1 балл
    Tumaso

    Не могу выложить программу в гугл магазин

    Выдается только предупреждение, при этом выкладывать 32-х битные приложения google play не запрещает. Вот с 1 августа да, без 64-и битного режима приложения не выложить
  34. 1 балл
    Wow, what a promising framework! Do we have more news to release to the public?
  35. 1 балл
    Ты откуда появился... человек? никто уже не помнит, что это и как делается... ставь RIO! :))
  36. 1 балл
    x11

    Проверить существование TJSONObject

    В общем, да. Я изначально просто был не прав. Вот так правильно: var JSONValue: TJSONValue; innerObject: TJSONObject; begin ... .... JSONValue := TJSONObject.ParseJSONValue(.....); if not (JSONValue is TJSONObject) then Continue else innerObject := JSONValue as TJSONObject;
  37. 1 балл
    Slym

    Проверить существование TJSONObject

    Не делайте слепое приведение типов... var JObj:TJSONObject; begin JObj:=TJSONObject(TJSONObject.ParseJSONValue('0')); try try if assigned(JObj) then JObj.AddPair('Access','violation'); except ShowMessage('Surprise MF!: '+JObj.ClassName); end; finally JObj.Free; end; end; ParseJSONValue возвращает TJSONValue, и необходима или проверка типа или использование только в рамках TJSONValue чего в большинстве случаев вполне достаточно.
  38. 1 балл
    slav_z

    Проверить существование TJSONObject

    Да нормально работает на XE8 и 10.3 procedure TForm6.Button1Click(Sender: TObject); var A: TJSONObject; begin A := TJSONObject(TJSONObject.ParseJSONValue('здесь неправильный json')); if Assigned(A) then A.ToString; end;
  39. 1 балл
    Barbanel

    Не могу выложить программу в гугл магазин

    Тут написано что вам нужно скомпилировать приложение также и для 64битных платформ. Сделайте это, и будет вам счастье
  40. 1 балл
    GASCHE

    Отображение картинок в ListView

    Грузятся если заменить if (FListViewUpdating) or (AAsyncResult.IsCancelled) then на if (FListViewUpdating) or (AsyncResult.IsCancelled) then. AAsyncResult у меня NIL
  41. 1 балл
    Ra72

    Мобильная разработка на Delphi 10.3 (Professional)

    Да, ответили следующее: Сделать Update лицензии, если "...with Mobile" не появилось, тогда удалить лицензию и повторно зарегистрировать. Update мне не помог, а вот удаление лицензии в License Manager-е и регистрация заново - помогло.
  42. 1 балл
    Евгений Корепов

    Разбор JSON с мультизапросом

    Мимо проходил. Вот вам код на php (собираем все данные в один массив и энкодим в json) $QueryArray = array( "SELECT ... FROM `...`;", "SELECT ... FROM `...`;", "SELECT ... FROM `...`;", "SELECT ... FROM `...`;", ); $Index = 0; $ResultArray = array(); foreach ($QueryArray as $query) { if ($mysqli_result = mysqli_query($DBLink, $query)) while ($row = mysqli_fetch_array($mysqli_result, MYSQLI_ASSOC)) $ResultArray[$Index][] = $row; $Index++; } $ResultJSON = json_encode($ResultArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); echo $ResultJSON;
  43. 1 балл
    Спасибо вам большое. И правда, перемудрил, вот так работает:
  44. 1 балл
    Slym, спасибо за ответ! Я, после написнаия своего вопроса, еще немного помыслил и в итоге: if ((ssCtrl in Shift)and (Key = vkRight)) then PerspEffect1.TopRight := TPointF.Create(PerspEffect1.TopRight.X + 5, PerspEffect1.TopRight.Y); По горячим клавишам можно растягивать TImage, как нужно.
  45. 1 балл
    PerspEffect1.TopLeft := PerspEffect1.TopLeft+ TPointF.Create(5,0);
  46. 1 балл
    Демо проект с быстрым списком (его подготовил Андрей Зубов) FastSimpleList.apk
  47. 1 балл
    Alex7wrt

    Что невозможно сделать на Delphi для Android?

    Первый раз слышу о проблемах с TThread.Synchronize.
  48. 1 балл
    вот так NotificationCenter1.ApplicationIconBadgeNumber := 0;
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...