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

xenon54

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

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

  • Посещение

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

    14

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

  1.   TListStyle = (Vertical, Horizontal);
    
      TTest = class(TComponent)
      private
        fq : TListStyle;
        fg: TListStyle;
        function get_fg : TListStyle;
        procedure set_fg(aa : TListStyle);
        { Private declarations }
      protected
        { Protected declarations }
      public
        { Public declarations }
      published
        property q : TListStyle read get_fg write set_fg;
        { Published declarations }
      end;
    

    Ну вот только что сделал вот так и все ок. Или я задачу не так понял?

  2. компонент который позволяет или метод который позволяет работать приложению фоновом режиме

    и компонент который позволяет потоками получить звук который записываешь с помощью микрофона, и их воспроизвести

    заранее спасибо

     

    Как я понял, в фоновом режиме на андроиде работают сервисы и в RadStudio его не написать, а вот реализовать фоновую активность приложения для IOS'a вполне можно. Возможно я ошибаюсь насчет андроида.

  3. Ничего что сама IDE имеет совсем непривлекательную цену? Встроенный магазин в IDE лично для Бровина, это из области фантастики, если конечно он не соучредитель :) А встроенный магазин от Embarcadero это рукалицо, ибо за что тогда вообще платить за новые версии...

  4. Большое спасибо за ответы.

     

    P.S.: И все таки терзает вопрос "зачем у конечного trackbar'a убрали доступ к объекту(свойству) Thumb". Хотя конечно это нужно спрашивать у разработчика компонента, так что вопрос практически риторический...

  5. Прикрепил. Только там через Дополнительный View (iPhone 4"). В мастере почему-то вообще игнорируется когда я выставляю height  в 0. В проекте показывает что 0, а когда запускаю приложение на телефоне, то панель имеет дефолтную высоту.

    test.zip

  6. Всем привет!

    У TrackBar есть внутренний контрол TThumb. Доступ к нему через свойство исчезает при переходе из TCustomTrack в TTrackBar. Добавил это свойство к TTrackBar. Получил доступ к нему все ок.

    Вообще доступ к нему мне нужен для двух вещей:

    1. Узнавать стоит ли сейчас палец на нем ( IsPressed )

    2. Поставить обработчик события OnMouseUp;

    Так вот с первым все хорошо, а вот со вторым получаю AV. Причем AV возникает именно тогда когда устанавливается обработчик событий.

    TrackBar1.Thumb.OnMouseUp := form1.ThumbMouseUp;
    

    Глушу это дело через Except и все отлично работает. Т.е. вылетает AV, но при этом обработчик устанавливается.

    Собственно вопрос: WTF!?

    С чего вдруг AV? И почему тогда отрабатывает строка по установке обработчика события.

    TrackBar лежит на панели у которой в момент установки обработчика высота равно нулю.

    Случайно наткнулся на такую вещь: Если сделать высоту у этой панели хотя бы "0,001", то AV не вылетает О_о.

    Такое ощущение что если у этой панели высота равна 0, то объект внутри нее вообще не создан =\

    Попахивает вообще какими-то чудесами...

  7. Notification server это "прокладка" между вашим сервером и устройством. Этот сервер сам знает как послать сообщение на устройство, вам не нужно заботиться об IP и всем вытекающем отсюда. Вы наверняка видели как всякие Viber и Whatsup присылают сообщения когда приложение свернуто. Появляются всплывающие сообщения. Так вот эти сообщения приходят с Notification Server'a.

     

    Почитайте тут и тут. Ну и вообще просто погуглите "Remote Push Notification Android Delphi".

  8. Это плохое взаимодействие.

    1. Если приложение выгружено, связи не будет.

    2. Оператор сотовой связи может вам 100 раз IP поменять пока вы будете слать что-то друг другу.

     

    В своем проекте под IOS я использую Apple push notification, для андроида тоже есть Notification. Суть в том, что ваше приложение на девайсе загружается и тутже отправляет запрос на notification сервер на регистрацию. Тот выдает обратно в ответ Device Token (некий уникальный идентификатор устройства). Вы этот  Device Token посылаете на сервер и запоминаете его, чтобы потом знать кому отправлять сообщение. Все. С этого момента ваше обращение к устройству происходит через Notification server. Вы посылаете запрос с сервера на Notification server с  Device Token устройства. А сервер доставляет это сообщение на устройство. Это сообщение может иметь текст, может не иметь, может быть со звуком и без, может быть вообще невидимым для пользователя, но при получении такого сообщение, устройство запускает в фоновом режиме приложение и выполняет то что вы там пропишете в обработчике. А если запущено приложение, то тут же выполняет то что вам нужно. Возможно под андроид есть свои нюансы, но принцип думаю такойже.

  9. Там же список возвращается? в нем только 127.0.0.1? Других значений нет?

    #include <linux/if.h>
    #include <linux/if_arp.h>
    #include <arpa/inet.h>
    #include <sys/socket.h>
    
    String strGetSocketAddressProperty(String strInterface, int iProperty)
    {
    int fd(0);
    int rv;
    struct ifreq ifr;
    char buffer[128];
    String strProperty = "" , IPAddr ;
    try
    {
    fd = socket(AF_INET, SOCK_DGRAM, 0);
    }
    catch (...)
    {
    ShowMessage("Error here");
    }
    
    ifr.ifr_addr.sa_family = AF_INET;
    
    memset(ifr.ifr_name,0,IFNAMSIZ);
    memcpy(ifr.ifr_name,AnsiString(strInterface).c_str(),AnsiString(strInterface).Length());
    
    rv = ioctl(fd, iProperty, &ifr);
    if (rv == 0)
    {
    /* display result */
    IPAddr = inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr) ;
    strProperty = IPAddr ;//buffer;
    strProperty = Trim(strProperty);
    
    }
    else
    {
    strProperty = (IntToStr(rv));
    //DEBUG_MESSAGE(std::string("rv: ") + itoa(rv) );
    }
    close(fd);
    
    return strProperty;
    }
    
    void __fastcall TForm1::btn1Click(TObject *Sender)
    {
    mmo1->Lines->Clear();
    mmo1->Lines->Add( strGetSocketAddressProperty(L"wlan0",SIOCGIFADDR) );//ip address
    mmo1->Lines->Add( strGetSocketAddressProperty(L"wlan0",SIOCGIFNETMASK) );//net mask
    mmo1->Lines->Add( strGetSocketAddressProperty(L"wlan0",SIOCGIFBRDADDR) );//broadcast address
    }
    

    Так пробовали?

  10. uses
    IdCustomTransparentProxy,
      IdSocks, IdIPWatch, IdStack, IdTCPConnection, IdTCPClient, IdHTTP;
    
    function TForm1.localip : string;
    var
      AAddresses: TStrings;
    begin
      AAddresses := TStringList.Create;
      try
        TIdStack.IncUsage;
        try
          GStack.AddLocalAddressesToList(AAddresses);
        finally
          TIdStack.DecUsage;
        end;
        if AAddresses.Count > 0 then
        begin
          if TOSVersion.Platform = pfiOS  then Result := AAddresses.Strings[AAddresses.Count-1];        //AAddresses
          if TOSVersion.Platform = pfWindows then Result := AAddresses.Strings[0];
    
    
        end;
      finally
        AAddresses.Free;
      end;
    end;
    

    ​В "AAddresses" вы получите все локальные IP. Это будет и IP от wifi и ip от LTE\GPRS и т.д.

  11.  

    Кто-нибудь может объяснить почему RefCount такой большой? Ведь по идее в самом начале на объект ссылается только сама переменная "T" и плюс ссылка в списке "components" у form1.

    t := TImage.Create(Form1);

    Этого вам для начала будет достаточно?

     

     "[Weak] FOwner: TComponent;" такое объявление делает так что RefCount не увеличивается от этой ссылки.

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