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

Лидеры

  1. brunnengi

    brunnengi

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


    • Баллы

      3

    • Постов

      293


  2. Brovin Yaroslav

    Brovin Yaroslav

    Администраторы


    • Баллы

      1

    • Постов

      2 124


  3. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      1

    • Постов

      2 517


  4. AngryOwl

    AngryOwl

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


    • Баллы

      1

    • Постов

      394


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

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

  1. Вообще, конечно, собрать видео из отдельных кадров можно. Вполне реально. Но не для всего) И это все "свистоперделки"... Что касается частоты кадров - реально получать 10-15. Еще и от устройства зависит, от камеры и т.д. Но все эти тормоза из-за класса "обертки" работы с видео. Именно он выдает так мало кадров. Сама камера работает. FMX работает тоже ничего, но основные тормоза из-за того что в TCameraComponent уже "приходит" мало кадров. На самом деле, как я считаю, разработка для мобильных платформ должна в первую очередь решать именно мультимедийные функции (я бы сказал, что это ОЧЕНЬ важно). А мы имеем пока-что их жалкое подобие, которое нужно допиливать ручками... Я уже не говорю о том, что почему-то если в той же iOS что-то "запрещено", то это же касается и Android, хотя в ней все намного проще и она более "открыта". Глупо как-то, уж простите за откровенность...
    1 балл
  2. procedure TForm22.Button1Click(Sender: TObject); var aParams: TMapsEngineYandexLocator; params, values: array of string; begin // 37.151.215.206 Астана, Казахстан SetLength(params, 1); SetLength(values, 1); params[0] := 'Внешний IP'; InputQuery('Введите...', params, values, procedure(const AResult: TModalResult; const AValues: array of string) begin if AResult = mrOk then begin mEngine.SetOptionsYandexLocator(''); aParams.IP.IPAddress_v4 := AValues[0]; TTask.Run( procedure begin mEngine.YandexLocator(aParams, TMapsEngineYandexLocatorType.IP, myLoc); mEngine.SetOptionsYandex(''); // получить через Yandex mEngine.Geocoding(myLoc, aData); TThread.Synchronize(nil, procedure begin lbCoordinate.Text := 'lat: ' + myLoc.Latitude.tostring + ' lon: ' + myLoc.Longitude.tostring; lbAddress.Text := aData.CountryCode + ' ' + aData.City + ' ' + aData.FormattedAddress; end); end); end; end); end;
    1 балл
  3. Не знаю то или не то что ты хочешь, но вот: Пример: Строка JSON: {"type1":199, "type2":"val2","ar":["arval1","arval2"]} первый это число, второе строка, третье массив Код на кнопку: procedure TForm1.Button1Click(Sender: TObject); var s : string; js : TJSONObject; begin s := '{"type1":199, "type2":"val2","ar":["arval1","arval2"]}'; JS := TJSONObject.ParseJSONValue(s) as TJSONObject; memo1.Lines.Add(JS.Pairs[0].JsonValue.ClassName); memo1.Lines.Add(JS.Pairs[1].JsonValue.ClassName); memo1.Lines.Add(JS.Pairs[2].JsonValue.ClassName); end; Запускаем и в memo1 попадают вот такие ответы: TJSONNumber TJSONString TJSONArray Думаю дальше ты знаешь что делать, если конечно я правильно тебя понял и правильно тебе насоветовал тут.
    1 балл
  4. Не за что. Если что спрашивай. 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; Тогда утечек не будет. Это я теперь точно знаю!)))
    1 балл
  5. могу только на пример в делфи, ибо С++ не знаю. Вот код, будут вопросы задавай, отвечу procedure TForm1.Button1Click(Sender: TObject); var JS : TJSONObject; JSAr : TJSONArray; s : string; begin s := Memo1.Text; JS := TJSONObject.ParseJSONValue(s) as TJSONObject; if Assigned(JS) then begin JS := TJSONObject.ParseJSONValue(JS.GetValue('response').ToString) as TJSONObject; JSAr := TJSONObject.ParseJSONValue(JS.GetValue('items').ToString) as TJSONArray; JS := TJSONObject.ParseJSONValue(JSAr.Items[0].ToString) as TJSONObject; Memo1.Clear; Memo1.Lines.Add('id: ' + JS.GetValue('id').Value); Memo1.Lines.Add('owner_id: ' + JS.GetValue('owner_id').Value); Memo1.Lines.Add('player: ' + JS.GetValue('player').Value); Memo1.Lines.Add('title: ' + JS.GetValue('title').Value); JS.Free; end; end;
    1 балл
  6. Добрый день, Да, действительно TTakePhotoFromCameraAction используем стандартный нативный интерфейс получении фотографий и съемки видео. Но в нем нет поддержки видео по той причине, что йос не дает прямого доступа к самому видео файлу и скрывает его за публичной оболочкой. Это значит, что записанное таким способом видео, можно просматривать и воспроизводить в штатном проигрывателе мобильного устройства, но при этом вам не получить прямой доступ к самому содержимого. Поэтому остается вариант использовать для записи видео компонент FireMonkey TCameraComponent. Этот компонент не позволяет в прямую сохранить видео, но он выдает поток кадров, с которыми вы можете работать на уровне TBitmap и записать их в том числе в видео файл. На счет андроида, там ситуация лучше. И в принципе можно использовать Апи Андроида для получения записанного видео с камеры.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...