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

brunnengi

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

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

  • Посещение

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

    21

Сообщения, опубликованные brunnengi

  1. Такое ощущение что программисты всегда оторваны от реальных пользователей!

    На всех предприятиях нашего города стоит именно ВинХР. В кафе, в ресторанах, в терминалах, в аптеках, больницах, в школах, в администрации, на рабочих ноутбуках, в библиотеках, и даже в офисах ростелекома. И этому есть много причин. 

    Во-первых ВинХР для многих задач более чем достаточна. И переходить на новые оси смысла нет. 

    Не забывайте что ВинХР вышел уже как 13 лет назад. А значит и компы на которых она стоит не такие уж и новые. А значит переход на новые ОСи связан с затратами на замену оборудования. И вы должны понимать что поменять что то одно в системном блоке даже 5-ти летней давности не вариант. Почти всегда приходится брать все железо новое, т.е. новый комп. Да, Вин8 не такая дорогая. Но компаниям и тем более гос учреждением заменить все железо и поставит новую ОС почти не вариант, ведь в отчетах нужны мотивации,  а их нет, ибо и так "всё работает".

    Мало этих причин?

    Поехали дальше.

    Кассовые аппараты. Многие из них не имеет драйверов под новые ОСи. Есть кассы которые пашут на USB через эмулятор COM порта. Но нет драйверов на Вин8 для эмуляции COM порта! 

    Мало? Держите еще.

    Великая и могучая 1С. Она стоит почти в любом УГ предприятии, и у многих (внимание ща вы будете шокированы) стоит все еще версия 7,7! Ибо переход на 8 версию сопряжен как с затратами на программистов которые берут ой как не мало денег за это, та еще и простоями на предприятии, что тоже влечет финансовые потери. А значит никто не будет сносить 1С 7,7 которая стоит на ВинХР, ради мнимой выгода перехода на Вин8.

    Мало? Вот еще.

    Банковские программы (ДБО которые) у многих банков идет только на ВинХР! Более того, даже те кто использует Java сталкиваются с тем что Java машину нельзя обновить. Ибо в новых версиях исправлены баги с безопасностью. И как следствие старые версии ДБО не запускаются! Сами разработчики ДБО (есть компании которые разрабатывают ДБО, и банки покупают у них) выпускают новые версии, но банки не покупают обновки ибо "и так все работает", и клиенты и так проживут.

    И конечно же не сметное количество терминалов оп всей стране. Многие думают что платежные терминалы приносят кучу денег (так и было на заре расцвета бизнеса), но в реалях это не так. Часть дохода съедает плата за аренду, ремонт железа, замена сенсорных стекол, мониторов, купурников (хороший купюрник стоит от 25.000 руб), бензин (инкассировать надо, менять чековую ленту надо), ЭКЛЗ от 7000 в год + ежемесячное обслуживание. Так что и для терминальщиков переход на новые оси с заменой железа не выход.

    Так что писать о том что всем надо переходить на Вин8, а затем на Вин9 не стоит.

    Да они хороши. Да мне и самому очень нравится Вин8, но всетаки для большинства задач типа "офис" windows xp более чем достаточен.

     

    Что касается сглаживания.

    Как я понял, это зависит от железа и дров. Во первых SP3 должен быть это точно (на ниже чем sp3 вроде даже и не запускается), во-вторых все драва на видюху. Ну и конечно же сама видюха должна быть не самым УГ. 

    Может я конечно и не прав и ты имеешь ввиду совсем другое сглаживание. Но похожая проблема была и у меня.

    Я накидал круглый прогрессбар. Делал на Вин8. Все идеально. Потом перекинул exeшник на WinXP и - О! Кошмар! Круги были все с квадратиками. Вид ужасный. На компе стоял СП3, все дрова. Но видюха встроенная и не самая адекватная. Но потом запускал и на рабочем компе на ВинХР, и кассах нескольких и там все сглаженно (не так конечно как в Вин8, но вполне смотрибельно, а не так что аж глаза хочется выкинуть)

  2. Скажите пожалуйста, appMethod вышел, вроде, чуть позже XE5, если память не изменяет. Потом вышел XE6. Вот в с какой скоростью исправленные баги и добавленные фичи в XE, появляются в AppMethod после выхода очередной версии XE и/или апдейтов?

  3. Быстро решаемых проблем почти не бывает. Все проблемы приходится решать хоть какое то время.

    Но ты либо начнешь писать на FMX проект либо вообще не сможешь действительно с ней работать.

    Я тоже не раз хотел подступиться к FMX именно в плане перевести на него свои проекты с VCL.

    И до версии ХЕ3 (ищи ХЕ4 не помню точно) откладывал это. А потом взял и перевел.

    В первую очередь сыграло роль удобство разработки, которое стало комфортнее благодаря TLayout, DisignVisible, Lock.

    За эти вещи разрабам прям большое спасибо!

    Я думаю что если они это на VCL поставят, с VCL опять десять лет никто не пересядет))

    Конечно есть лаги. Причем они бывают двух типов, лаги которые появляются из-за не знания как это делать именно в FMX, и второе, лаги самой FMX. Сверх критичных лагов с которым нельзя было ужиться почти нет. Просто иногда приходится из-за них отказаться от реализации какой то идеи именно "вот так".

    Свой проект один я перевел с VCL на FMX. Второй пишу сразу на FMX. Потихоньку осваиваю мобильный вариант. 

    По-сути в VCL за последние два года я делал только легкий сервер для работы с принтером. И то потому что поленился разбираться (и даже пытаться сделать на FMX), так как на VCL уже были наброски. Позже, когда времени будет побольше, тоже переведу.

    И конечно выход AppMethod с чистым FMX и при его ценовой политике это конечно подарок для меня.

     

    Словом, нельзя сказать что фреймфорк на все 100% стабилен. Это не так. Это факт, и не надо его смущаться и боятся. С чем то приходится мириться, что то обходить, а что то просто учиться делать как надо. Мой проект работает полностью стабильно. 

    Стоит ли писать и поднимать проект на FMX? Как по мне, так да на 100%

     

    P.S. Со sqlite я раньше работал через штатные средства, без FireDAC. Ибо первые варианты, работы FireDAC с SQLite были медленее чем тревиальный подход.  К тому же подключение FireDAC сразу занимало в оперативке от 45 до 200 МБ (на WinXp почти 200мб, на Win8 >45мб). Но в ХЕ5 и ХЕ6 работа с SQLite через FireDAC если не быстрее обычного варианта, то уж точно не медленее. Память больше не жрет.  Работа стабильнее. Кол-во ошибок при записи/чтение в базу через FireDAC на 1000,000 позиций 0, в то время как обычный от 2-30 (тесты делались на двух разных жестких дисках IDE, оба после неоднократного ремонта, одному 6 лет, другому >7, оба диска, все эти года жестко и активно эксплуатировались). 

  4. Здравствуйте.

    Создал пустое приложение.

    Сделал шапку, тело. Подвала нет.

    В самой шапке есть логотип, название программы, и в правой части пару кнопок, показывающих TLayout "О Программе" и "Письмо в тех. поддержку".

    Когда нажимаешь на кнопку "о программе", то становиться видимым layout "о программе", а вверху, в шапке, я меня название программы на надпись "о программе".

    Если нажать на кнопку "письмо в тех поддержку", то станет видимым соответствующий layout. А в шапке поменяется название на "Письмо в тех. поддержку". Кроме того станет видимой кнопка "отправить" которая находится в шапке.

     

    Т.е. сейчас у меня в шапке три кнопки, которые то visible true, то false.

    Подскажите пожалуйста может надо как то по другому строить приложение?

    Т.е. может делать каждое на каждое отображаемое окно свой layout, со своей шапкой, вместо одной общей на которую все накидано?

    И может еще какие советы кто даст?

  5. Дело в том что во всей системе "Вставить" появляется только после некоторого удержания пальцем в области ввода. И только в приложении на FMX он выскакивает сразу.

    CheckSpelling не исправил ситуацию (((

     

    Update 1:

    После перезагрузки телефона (я его просто очень редко перезагружаю его  ибо пашет отлично) подчеркивание вернулось во всех остальных приложениях. Значит оно так и должно быть.

    Но вот что касается "Вставить", а оно все равно выскакивает слишком быстро. Так то что бы оно появилось в других приложениях надо поддержать малость. А тут в приложении на FMX он практически моментально выскакивает.

     

    У меня Андроид 4.4.2 

    Телефон Samsung Note 3

  6. Здравствуйте.

     

    Положил TEdit на форму в Андроид приложении.

    Когда я нажимаю на Edit, то выскакивает клавиатура для ввода данных, а так же всплывает кнопочка "Вставить". А при вводе текста, он подчеркивается.

     

    Подскажите пожалуйста, как сделать так что бы, текст не подчеркивался и "Вставить" не выползала, когда просто нажимаешь пальцем на Edit?

  7. Скорее всего и чаще всего именно в игровом варианте может и требуется такой функционал. Прямым примером может служить создание симулятора игры на фортепиано, где пока левой рукой удерживаешь пару клавишь, правой же продолжаешь играть для создания нужной тональности и мелодии. Да и рисовать несколькими пальцами по мультитач экрану тоже приятно и можно, где каждое прикосновение рисуется своим цветом. Скорее всего ТС имел ввиду что то из этой области.

  8. Вечер добрый.

    В принципе не проблема три аниматора сделать.

    Просто я не знаю даже как это сделать.

    Если я кидаю TPathAnimation для кнопки в 2D, и пишу в Path Data например "M0,0 L50,0", то при PathAnimation1.Start смещается, и все отрабатывает как и ожидалось.

    Но перенесся этот же PathAnimation к Цилиндру или Кубу, то реакции нет.

    Подскажите пожалуйста, как это должно выглядеть.

    -=Delphi XE6=-

    Проблема еще актуальна, помогите плз.

  9. String s = Memo1->Text; //Берём строку из Мемо
    TJSONObject* jOb = new TJSONObject(); //Создаём экземпляр класса
    jOb->ParseJSONValue(s); //Парсим значение
    TJSONPair* jP = jObj->Get(0);//Получаем первый элемент

    Как-то так) Коменты конечно же отсебятина)

     

    А дальше без dynamic_cast утечка памяти :(

     

    А где у тебя аналог Free, после того как ты попользовался всем тем что ты создал? Без освобождения, память будет есть.

  10. Не за что.

    Если что спрашивай. 

    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;
    

    Тогда утечек не будет. Это я теперь точно знаю!)))

  11. могу только на пример в делфи, ибо С++ не знаю.

    Вот код, будут вопросы задавай, отвечу

    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;
    
  12. Здравствуйте.

    Можно ли задать общее освещение, без TLight?

    Я создал 3d модель платежного терминала в SketchUp'е.

    А потом перенес созданную модель в FMX.

     

    SketchUp:

    24030_term_sketch.png

     

     

     

    FMX:

    24031_term_fm.png

     

     

    Как видно на картинке сами цвета стали Серыми, а задняя часть черная, из игры света и тени.

    Как сделать освещение типа "солнце", как в SketchUp'е?

     

     

    И как  можно сделать обводку контуров в fmx, так же как и в SketchUp'е?

  13. Здравствуйте.

    Создал пяти секундный анимированный эффект в Abobe After Effects. 

    Сохранил в PNG формате с прозрачностью, по кадрам. Всего вышло 120 кадров.

    Через что можно создать в FMX Desktop приложение анимацию из последовательности этих кадров/файлов?

    Подскажите пожалуйста.

  14. Здравствуйте.

    1. Как узнать какие рекомендуемые минимальные и максимальные системные требования нужны для программ на FMX?
    2. Какое мин. железо?
    3. Параметры видеокарты?
    4. Версия шейдеров и т.д.?

    А то на одних машинах запускается на других нет. Там где запускается не всегда анимация идет гладко. Из опыта знаю что Windows XP Service Pack 3, это точно минимальное что нужно, хотя бы для запуска.

×
×
  • Создать...