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

Blind_Cat

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

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

  • Посещение

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

  1. В общем с билдером тоже самое. Единственное смущает, что файлы используемые в проекте в сам проект не добавлены.
    Для добавления всех файлов в проект необходимо обрамить платформозависимый код #ifdef/endif. 
    Рабочий пример в приложении. Тему можно закрывать)

    test_multifile_bcb.zip

  2. А можно рабочий пример увидеть

    19 минут назад, krapotkin сказал:

    файл в проект не включен

    Ок. Спасибо. Если кому-то понадобится, то образец разделения на Delphi в приложенном файле.

    В течение дня попробую сделать тоже самое на Builder.

     

    test_multifile.zip

  3. Почему не должны? Файл в проект влючен? Включен. Где сказано что его собирать не надо?

    Да и вопрос был не о Delphi, а о Builder. Но это как мне кажется несущественно.

    PS Имя файла, в частности его суффикс файла только подсказывает нам его содержимое. Файлы вообще могут называться 1.pas 2.pas 3.pas итд.

     

     

  4. 14 часов назад, krapotkin сказал:
    
    unit unit1;
    
    {$IFDEF MSWINDOWS}
    {$i unit1.win.pas}
    {$ENDIF}
    {$IFDEF IOS}
    {$i unit1.ios.pas}
    {$ENDIF}
    
    end;
    

     

    При этом файлы unit1.win.pas и unit1.ios.pas должны быть добавлены в проект. Соответственно при компиляции для ios, компилятор будет пытаться собрать и unit1.win.pas. Что приведет к ошибкам при использовании типов и функций Win32.

    Вероятно решением будет еще внутри unit1.win.pas и unit1.ios.pas обернуть все это добро в ifdef/endif.

    Спасибо за обсуждение =)

  5. 8 часов назад, RoschinSpb сказал:

    Можно кактотак обернуть весь код в IFDEF. Тогда можно компилировать под любой платформой.
    Но в процессе написания и отладки рекомендую все-таки закомментировать диррективы условной компиляции, а в окончательном варианте раскомментировать. 

    
    unit UnitWindows;
    //{$IFDEF MSWINDOWS}
    interface
      ...
    implementation
      ...
    initialization
      ...
    finalization
       ...
    //{$ELSEIF} 
    //implementation
    //{$ENDIF}
    end.

    Это получается код под разные платформы в одном файле. А этого хочется избежать.

  6. Спасибо. А не подскажете в iOS и OSX возможен запуск нескольких экземпляров приложения?
    Подозреваю, что в iOS -- только один экземпляр, а в OSX -- возможен запуск нескольких экземпляров.
    Как предотвратить повторный запуск приложения под OSX?

  7. Это в одном файле. В CPP можно конечно подключить, через что-то подобное

    === reailze.cpp ===
    #if defined (_Windows)
    #   include "win/reailze.cxx"
    #elif defined(__ANDROID__)
    #   include "anrdoid/reailze.cxx"
    #endif
    === reailze.cpp ===
    И туда уже вынести специфику... Но для успешной сборки/линковки оба этих файла должны быть добавлены к проекту.
    Соответственно при использовании платформенно зависимых типов внутри СХХ файлов мы получим невозможность сборки проекта.
     

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

  9. День добрый.

    Суть задачи: Есть мультиплатформенный код(Пока Android/Win64/Win32), как вынести код относящийся к разным платформам в отдельные файлы?
    При этом чтобы в проект для андроида были добавлены файлы допустим android/xxx.cpp,  а для windows win/xxx.cpp. Насколько я увидел IDE не поддерживает условное добавление файлов в проект.
    Как кто выкручивается в этих случаях?

  10. Здравствуйте, коллеги.

    Подскажите пожалуйста как запретить повторный запуск приложения под Windows при использовании FireMonkey.

    На VCL при старте приложения создавал уникальный Mutex и при старте приложения и по его наличию/отсутствию понимал, что приложение уже запущенно.

    Как такое аналогичное сделать в FireMonkey?

    #if    defined(_Windows)
    	// ...
    	// Код для Windows
    	// ...
    #elif defined(__ANDROID__)
    	// ...
    	// Код для андроид
    	// ...
    #elif defined(....)
    #	// ...
    #   // ...
    #   // ...
    #else
    #    error "Unknown platfrom type"
    #endif

    Так делать не очень хочется по множеству причин.

    PS RAD Studio 10 Seattle.

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