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

Alex7wrt

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

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

  • Посещение

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

    31

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

  1. Описанные вами отличия существуют, но сложностей они не вызывают.

    Достаточно единожды использовать конструкции для платформ вроде такой:

        {$IF DEFINED(MSWINDOWS)}
            start_index:=1;
        {$ELSE}
            start_index:=0;
        {$ENDIF}

     

     

  2. Не знаю, поможет или нет, но когда я пользовался TIdHttp, то обычно делал так:

    Var str: string;

    ..............

    str:=IdHttp.Get(s);

    ..............

    То есть без TMemoryStream. TIdHttp.Get является функцией типа string. Поэтому TMemoryStream для загрузки результата не использовал. А вот в THttpClient как раз использую такую конструкцию. 

    Может и не в этом дело, конечно, но сейчас нет возможности проверить точнее.

     

  3. Раньше использовал TIdHttp, затем перешёл на THttpClient.

    THttpClient и TNetHttpClient - по сути одно и то же, только последний является визуальным компонентом.

    Поэтому в вашем случае корректнее сравнивать THttpClient и TIdHttp.

    Конкретно для моих целей использование THttpClient предпочтительнее, поскольку он из коробки работает с https на всех платформах, а в случае TIdHttp для этого ещё нужно подключать ssl.

    Разницы в скорости работы не замечал.

  4. В вашем приложении «Пятнашки»  оно исчезает уже после того как приложение закрылось.

    То есть приложение уже закрыто, а надпись ещё висит. Хотелось бы без этого.

    Пока сделал все таки через TRectangle, TText и TFloatAnimation.

  5. А при реализации фишки с двойным нажатием кнопки "Назад" для выхода вы использовали какие-то системные функкции под Android?

    Хочу тоже такую сделать, но может быть, чем рисовать прямоугольники и делать анимацию, есть уже готовый системный метод?

  6. Можно ли средствами FireMonkey реализовать рассылку сообщений в Facebook со своего аккаунта?

    Сейчас приходится писать один и тот же пост много раз и рассылать по разным группам. Хотелось бы этот процесс облегчить.

    тематика - защита и устройство домашних животных.

    Выбор платформы не принципиален. 

  7. uses 
    .....
      FMX.Platform.Android, FMX.Helpers.Android, Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText, 
      Androidapi.JNI.JavaTypes, Androidapi.JNI.App, Androidapi.JNIBridge, Androidapi.JNI.Embarcadero, 
      AndroidApi.JNI.Net, Androidapi.JNI.Util;
    ...
    
    
    var Intent: JIntent;
    begin
        Intent := TJIntent.Create;
        Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
        try
            Intent.setData(StrToJURI('market://details?id=name_of_app')); //если установлен google play
        except
            Intent.setData(StrToJURI('http://play.google.com/store/apps/details?id=name_of_app')); //иначе открываем ссылку в браузере
        end;
        TAndroidHelper.Context.startActivity(Intent);

    В uses есть даже лишнее, поскольку взял из  проекта, где были и другие функции под Android

  8. Пытаюсь считывать данные с ком порта (RS232).

    При считывании иногда происходит сдвиг строки на байт, из-за чего происходят ошибки при обработке поступающих данных:

    2552525017500200333610166057255
    25250175002001410166053255252
    501750020034361016615725525250
    1750020024101661532552525017
    50020036361016635725525250175
    002004410166353255252501750
    02004036101651582552525017500
    200841016515425525250175002
    Тогда как правильно должно быть, чтобы каждая строка начиналась на 25. В сторонних прогах работы с ком портом всегда так и есть.

    В то же время, иногда после переключения ком порта считывание проиходит правильно, поэтому думаю, что ошибка может быть в настройках соединения с портом или задержках.

    Вот параметры работы ком порта, от изготовителя устройства:

    1.PNG.5bcb5c131be90c5703a41697fffec752.PNG

    Вот как я настраиваю порт в программе: 

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ComFile:=CreateFile('com2',GENERIC_READ,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_READONLY,0);
    if ComFile=INVALID_HANDLE_VALUE then begin
        ShowMessage('Не удалось открыть порт ');
     exit;
    end;
    SetupComm(ComFile,18,18);
    GetCommState(ComFile,DCB);
    with DCB do begin
        BaudRate:=57600;
        ByteSize:=8;
        Parity:=NoParity;
        StopBits:=OneStopBit;
    end;
    if not SetCommState(ComFile,DCB) then begin
        ShowMessage('Порт не настроен');
        CloseHandle(ComFile);
        exit;
    end;
    StartComThread;
    end;
    
    procedure TCommThread.Execute;
    begin
     Repeat
      QueryPort;
      Sleep(100);
     Until Terminated;
    end;
    
    rocedure TCommThread.QueryPort;
    var MyBuff:array [0..17] of Char;
        i: byte;
    Begin
        all_buf:='';
        FillChar(MyBuff,SizeOf(MyBuff),#0);
        ReadFile(ComFile,MyBuff,SizeOf(MyBuff),BytesRead,Nil);
        If BytesRead>0 Then Begin
            for i:=0 to length(Mybuff)-1 do begin
                all_buf:=all_buf+inttostr(ord(MyBuff[i]));
            end;
           // Form1.Memo1.Lines.Add(all_buf);
        End;
    end;

    Где может быть ошибка?

  9. Как вариант - загрузить файл в stringlist по делимитеру, а затем скопировать строки в stringgrid

    for(int i = 0 ; i<sl->Count ; i++) {sg->cells[0,i] = sl[i];}

    и потом удалить stringlist


     

  10. 2 часа назад, S0lexV сказал:

    Друзья, подскажите пожалуйста как реализовать на с++ в FMX загрузку и сохранение текста. В VCL раньше делал так:

    
    TStringList *sl = new TStringList;
    sl->LoadFromFile(path+"car.car");
    for(int i = 0 ; i<sg->RowCount ; i++)
    {
    sg->Rows[i]->DelimitedText=sl->Items->Strings[i];
    }

    Но в FMX нет метода "Rows"..... В инете есть примеры на делфи, но на C++ нет, переделать не получается. Очень нужно! Пожалуйста!

    16 минут назад, S0lexV сказал:

    да не нужен мне stringlist, мне нужно в STRINGGRID запихать текст из файла!:wacko:

    Я прошу прощения. Почему-то это было не очевидно))

  11. Столкнулся со следующей проблемой

    Конструкция типа:

    try
        HTTP:=THTTPClient.Create;
        Stream:= TStringStream.Create('',TEncoding.UTF7);
        HTTP.Get('http://some_url', stream);
        Stream.Position:=0;
        Result:=stream.DataString;
        HTTP.Free; Stream.Free;
    except
        Result:='error';
    end;
        

    Возвращает Result = 'error' при первом подключении через WiFi. При этом через мобильные сети работает отлично. Причем, если после нормального запуска через мобильную сеть, переключится на WiFi, то снова работает. А если изначально повторять много раз под WiFi - то нет. Платформа - Android.

    Куда копать? 

  12. Если баннер отображается, то в самом приложении больше ничего делать не надо. Анализировать события в том числе.

    По клику пользователя на баннере гугл будет автоматически зачислять какую-то сумму на ваш аккаунт в AdMob.

    Естественно, вашим приложением должны пользоваться люди, то есть приложение должно быть размещено в магазине приложений Google Play или на других площадках.

     

  13. Смотря каким проигрывателем. Windows Media Player - не запускает, остальные запускают. Конечно, не исключен вариант, что я что-то с кодеками нахимичил, потому как раньше и WMP запускал mpg вроде. 

    P.S. Но мне все равно стандартный плеер FireMonkey не нравится. Как ни одно, так другое. На разных компах по-разному. На некоторых все норм, на других черный экран со звуком, на третьих - вообще ничего. И поверх плеера ничего не выведешь. Да мне вообще нужно выводить одно видео в двух окнах )) Но это другая тема конечно.

  14. 18 часов назад, Alexander сказал:

    Справка скудна, но интуиция подсказывает, что последний параметр очень важен для заполнения

    Да он вроде и должен писаться в таком виде под Windows... 

    А кто-нибудь пользовался какими-нибудь другими, более универсальными компонентами плеера под FMX? Может быть, есть лучшая альтернатива?

     

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