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

Pulsarius

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

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

  • Посещение

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

    3

Весь контент Pulsarius

  1. FireDAC использует внешний драйвер для работы с MS Access, который только под винду. Под Unix для работы с Access разработчики для своего ПО пишут свою какую-то библиотеку. Вообще я соглашусь с вышесказанным - в качестве СУБД для кроссплатформенных приложений лучше всего использовать SQLite. Я давно её уже использую в своих проектах. Это лучшая локальная СУБД на сегодняшний день. Access слишком замудрённая и тяжёлая, а также официально кросплатформенной поддержки её нет, только под винду.
  2. Отлично! Я ни разу не был на таких сходках. Нужно было как-то записываться заранее или можно просто подходить?
  3. Решено! Дело было действительно в слишком новой Xcode. Переустановил Xcode на версию 8.2 и всё стало компилиться.
  4. Pulsarius

    Ошибка компиляции на macOS

    Всем привет! Надеюсь кто-нибудь поможет, срочно нужно решить эту проблему. При компиляции на платформу OS X компилятор "ругается" на файл "SecBase.h", который находится в папке SDK "MacOSX10.13.sdk". Использую C++ Builder Tokyo 10.2, macOS Sierra 10.12.6, Xcode 9.1. Даже если попытаться скомпилить пустой проект таже самая ошибка. Если компилить Delphi проект, то всё нормально. Я подозреваю, что это скорее связано с неподдерживаемой версией Xcode, слишком новая. Помогите пожалуйста, а то не хочется переписывать проект на Delphi.
  5. И правильно, не используйте этот LiveBinding. Мне кажется использование LiveBinding это плохое решение. Я как-то решил попробовать это "чудо" средство и наткнулся на многие грабли. Например, у меня приложение категорически отказывалось запускаться при закрытом DataSet. LiveBinding выкидывал exception с такого рода сообщением. Зачем? Ведь мне и нужно открывать DataSet при необходимости, мне сначала эти данные не нужны. Просто не нужно ничего связывать в таком случает а не кидаться exception'ами. При закрытии DataSet тоже какие-то ошибки кидал. В общем все проблемы решились просто убрав этот LiveBinding и написанием своей функции отображения данных по старинке. Вот это совсем нехорошо. Так нельзя делать. А если вы удалите какие-то записи и id станут не по порядку? Будете каждый раз редактировать id в БД? Можно для этого использовать свойство Tag, которое есть у всех компонентов вот как раз для подобных целей.
  6. Я тоже с этим не согласен. Почти все терминалы, кассовые ПК и т.п. работают на Linux'е и в основном на ARM. Им нужно делать поддержку и x64, и ARM Linux. Иначе действительно смысла нет, если делать только x64. Я больше сторонник C/C++, т.к. это уже вроде как стандарт и код на этом языке можно перенести хоть куда, если конечно не использовать библиотеки среды, а на Delphi перенос уже более ограниченный. Да и, мне кажется, C/C++ более гибкие языки, на них можно писать от системных драйверов режима ядра до высокоуровневых приложений.
  7. Да, FMX очень хорошая идея, но очень сильно отстаёт. Visual Studio с Xamarin давно уже позволяет компилить ARM-32, ARM-64, x86 и x64 приложения, т.е. под все возможные процессоры. Тоже самое и с Linux - в Visual Studio на C++ можно собирать x86, x64 и ARM Linux приложения, а на Delphi только x64. А ARM архитектура сейчас очень популярна, та же Raspberry Pi набирает обороты.
  8. Pulsarius

    Сортировка FDTable

    Зачем вообще использовать FDTable? Не лучше ли использовать FDQuery и писать там нужные запросы к БД с нужной сортировкой (ORDER BY)? Необходимость в FDMemTable я ещё понимаю, частенько использую, но вот смысла существования FDTable я вообще не вижу. Если только просто в приложении отображать или считывать содержание таблицы, но это очень редко нужно. Обычно всегда требуются всякие сортировки, группировки, условия, JOIN'ы и т.д.
  9. Я заметил, что, если в приложении есть хоть один 3D объект, то приложение открывается и срузу закрывается, не выкидывая никаких exeption'ов. А недавно то же самое поведение я заметил, если в приложении есть функционал по работе с SOAP сервисом, добавленном через "Import WSDL".
  10. Сейчас внимательно всё проверил и заметил, что компилятор C++ Builder не такой уж и глупый. Если посмотреть каким-нибудь PE Explorer'ом, то исполняемый файл не содержит ссылок на неиспользуемые bpl, если компилить с динамическими рантаймами, и не содержит их внутри, если компилить со статическими рантаймами. Это Deployment Manager и Project Information делают выводы об используемых bpl, видимо, исходя из cbproj файла, а не из анализа скомпилированного исполняемого файла, что, по-моему, несовсем корректно. Ещё заметил такую неприятную вещь, исходя из опыта работы с другими IDE. У Embarcadero замечательные графические и неграфические библиотеки, которые очень ускоряют разработку софта и, как мне кажется, ни одна другая библиотека других фирм, не сравнятся с RAD Studio, плюс ещё и кроссплатформенность появилась. Но почему редактор кода-то такой отсталый? Напоминает нулевые года и вот почему: 1. Не высвечивает подсказки корректно, например, я пишу "TStringBuilder *builder = new ..." и разумеется логично в первой позиции подсказки предложить "new TStringBuilder()", но нет же, высвечивается всё, что угодно, но только не то, что по логике нужно. 2. Я считаю, что посказки должны показываться автоматом по первым символам, как в других IDE, а не по ручному нажатию "Ctrl + Space". 3. Поля и методы шаблонов и контейнеров STL вообще не подсвечивает, а это основа! 4. При требовании подсказки редактор может вообще задуматься на несколько секунд. Что там можно искать у класса из 3-х полей и 3-х методов, который объявлен в рядом лежащем файле?! 5. Почему, когда в хидере объявляешь метод, он автоматом не создаётся в сорс файле, а всё приходиться печатать вручную, как-будто кодишь в обычном текстовом редакторе? 6. При желании перейти от объявления метода к реализации или наоборот может перекинуть куда-нибудь не туда, либо вообще не отреагировать. В худшем случае "упасть". 7. Не предлогает переименовать все ссылки, если переименовывешь переменную или класс. 8. Зачем мне показывать хидер, где объявлен метод, когда я навожу мышкой на него, а не его сигнатуру, что тоже логичнее? 9. Бывает вообще никаких подсказок не выдаёт. Это когда что-то не дописал, решил вернуться чуть-чучть назад кое-что подправить, и всё, фиг с маслом. Для чего эта блокировка подсказок при якобы одной хотя бы ошибки? Или не высвечивает в таком случае "dynamicArray[dyn...]", а хочеться написать "dynamicArray[dynamicArray.Length - 1]". Всё, что я привёл здесь в пример, в других IDE это давным давно уже это не новость и всё давно подсвечивается и подставляется. Это в Visual Studio, Qt Creator, CLion и других, даже в не сишных (IntelliJ IDEA, PyCharm, NetBeans и т.п.) и небольших IDE. Интересно, редактор кода RAD Studio дорастёт когда-нибудь тоже до такого?
  11. Привет, форумчане! Я уже как-то задавал подобный вопрос, но видимо никто не сталкивался с этим. Может быть сейчас кто-нибудь столкнулся. Эта проблема качует из версии в версию и никто не исправляет это, а может быть я что-то не всё правильно делаю. Конкретнее, я в своём проекте использовал TcxPageControl от DevExpress и TFDConnection, TFDQuery от FireDAC. Теперь я удалил эти элементы из своего проекта, совершенно нигде не использую TcxPageControl и приложение у меня теперь не коннектится напрямую с базой данных. Вручную почистил все #include и #pragma link, но линковщик C++ Builder мне всё равно усердно впихивает cxPageControlRS25.bpl и firedac250.bpl в exe-шник. Если делать Deployment на удалённую машину с динамическими зависимостями от рантаймов, то соответственно туда тоже копируются эти ненужные cxPageControlRS25.bpl и firedac250.bpl. Открыл проект *.cbproj как текст и увидел там эти самые названия. Можно конечно вручную тоже их поудалять, но есть ли какой-то адекватный способ удаления зависимостей от уже ненужных библиотек, что бы вручную не выкосить что-нибудь лишнее? Это я как пример всего две bpl упамянул, а на самом деле там больше, ведь DevExpress и FireDAC там за собой тащат ещё кучу всяких bpl, типа там dxCore.bpl, datadb.bpl и т.п. Вот и происходит такая мусорка в скомпилированном файле и размер соответственно напрасно большой делается. В Visual Studio я с подобным не сталкивался.
  12. Я видел видео демо от г-на Крюкова. И что там прям полноценный FMX или просто подобие?
  13. Здравствуйте, Ярослав! Скажите, пожалуйста, есть ли какая либо информация о планах поддержки Linux в C++ Builder? Нашей компании очень подходит RAD Studio для наших целей и быстрой разработки. Планируем приобрести лицензию. В ближайшее время планируем разрабатывать наше решение для Windows, macOS и Android, пока этого достаточно. Но есть некоторые сомнения о выборе RAD Studio и всё из-за того, что примерно через год потребуется наше решение реализовать и для Linux. Какова вероятность, что C++ Builder обзаведётся поддержкой Linux'а в течении 1 - 1,5 года? Delphi не рассматриваем. Заранее спасибо за ответ.
  14. Pulsarius

    TIdTCPServer и данные

    Здравствуйте! Очень нужна помощь с TIdTCPServer или возможно моя задача решается каким-то другим компонентом или библиотекой. В общем, мне нужно получить с сокета не только данные, но и весь пакет целиком, т.е. со всеми TCP и IP заголовками. Возможно ли сделать это через TIdTCPServer? Конечно можно на C++ самостоятельно реализовать TCP/IP стек, но не хотелось бы терять на это время и "изобретать велосипед" в очередной раз. А конкретнее мне нужно получить весь TCP/IP пакет с заголовками и данными, запаковать его ещё в PPP и отправить на COM порт, чтобы добиться некого аналога виндового стандартного телефонного модема (Dial In). Буду благодарен за какую-либо помощь!
  15. Всем привет! Кто-нибудь может подсказать как можно удалить ссылку в проекте на неиспользуемую статичную либу, чтобы она не линковалась к исполняемому файлу? Обыскал всё в настройках проекта, так и не смог найти. Дело в том, что я как-то в FMX проекте использовал невизуальный VCL компонент, добавленный через дизайнер форм. Потом я его удалил, но линковщик всё равно линкует в exe-шник библиотеки типа vcl.lib, vclx.lib, что абсолютно напрасно увеличивает размер исполняемого файла.
  16. Здравствуйте! Может кто-нибудь уже проходил через подобное и знает как это реализовать и подскажет. Мне нужно программно создать виртуальный модем и входящее подключение через него. Ну или хотя бы через командную строку. Пробовал через RAS API, но получается не то, что мне нужно. Вот визуализация того, что мне нужно проделать:
  17. Pulsarius

    Сортировка в Tool Palette

    Всем привет! У меня такой вопрос. Я настроил порядок сортировки групп компонентов в Tool Palette через Tools -> Options -> Environment Options -> Component Toolbar, но при сохранении настроек и перезапуске студии никаких изменений в Tool Palette не наблюдается, всё равно остаётся дефолтная сортировка. RAD Studio Berlin.
  18. Да, Update 1 со всеми хотфиксами. С Delphi всё в порядке, подобный проект компилится нормально.
  19. Привет всем! Скажите, кто-нибудь сталкивался с проблемой компиляции проекта с использованием FireDAC в C++ Builder (RAD Studio 10 Seattle) под Windows 64-bit? В проекте есть такие компоненты, как TFDConnection, TFDQuery, TFDTable. TFDConnection настроен на работу с SQLite. При компиляции в режиме Release, естественно с отключенными Dynamic RTL и Link with runtime packages, под Windows 32-bit всё в порядке, а вот под Windows 64-bit происходит ошибка, как я понял, линковщика: [ilink64 Warning] Warning: Out of memory [ilink64 Error] "ilink32" exited with code 2. Мне так кажется, что нет статических библиотек FireDAC для Windows 64-bit, и тем самым не удастся собрать проект со статической линковкой нужных либ, а только придётся таскать нужные библиотеки за exe-шником. Я правильно понимаю?
  20. Нет, не вызывал. Прочитал в хелпе про FetchOptions, выставил FetchOptions.Manual = fmAll и теперь всё работает как надо. Только не пойму смысла. Если эта опция отвечает якобы за ограничение получения записей, то почему по факту в TFDQuery количество записей было больше выставленного максимума, т.е. все записи, которые возвращает мне запрос? По идее в данном случае в память DataSet не должно было грузиться более 50 записей. А так получается смысла в этой опции нет, она только не даёт свойству RecordCount стать выше установленного максимума, а в DataSet всё равно грузятся все записи, возвращённые запросом, и пройтись по ним можно вызывая в цикле Next() пока свойство Eof не будет истинным.
  21. Спасибо большое за ответы! Проблема решена. CFF Explorer помог. Я так понял, что идёт статическая линковка BORLNDMM.dll, но ни одна функция от туда не вызывается. Т.е. получается бесполезная зависимость от этой борландовской библиотеки. Обидный баг конечно. Такое ощущение, что специально делают такие якобы нечаянные и нелепые баги в билдере, вынуждая переходить на Delphi. Т.к. в Delphi таких нелепых багов я не встречал. В ходе написания DLL я заметил, что есть ещё один скорее всего баг, при работе с TFDQuery (FireDAC). Свойство RecordCound имеет значение 50 всегда, когда количество записей по факту больше 50-и. Решается это вызовом метода Refresh.
  22. Pulsarius

    C++ Builder и BORLNDMM

    Привет всем! Кто-нибудь уже заметил, что приложения для десктоп, скомпилированные в последней версии C++ Builder (RAD Studio 10 Seattle), стали зависеть от BORLNDMM.dll? В предыдущих версиях студии такого не было. Я знаю, что это Борландовская библиотека для работы с памятью, и от неё зависели программы, написанные на ранних версиях C++ Builder, ещё будучи при Борланде. Чем же интересно обосновано возвращение такой зависимости и можно ли как-нибудь от неё избавиться? P.S. Я пишу DLL. Пробовал избавиться от зависимости, отключив в настройках проекта "Use 'classic' Borland compiler", т.е. чтобы использовать Clang. Пришлось немного отредактировать код. Зависимость исчезла, но, при выгрузке моей DLL в главной программе функцией FreeLibrary, вылетает ошибка типа access violation. Такая ошибка возникает только тогда, когда DLL скомпилирована в режиме Release, в режиме Debug всё работает нормально, и поэтому отследить в чём дело очень сложно. Когда возникает ошибка, при отладке главной программы, отладчик перебрасывает в окно дизассемблера, где вместо ассемблерных команд знаки вопроса. Т.е. такое ощущение, что при вызове функции FreeLibrary, в каком-то месте происходит "прыжок" на адрес в памяти, где нет никаких инструкций. Если скомпилировать DLL с использованием классического компилятора Borland, то и в режиме Debug, и в режиме Release всё работает нормально.
  23. Насколько я знаю, последняя версия RAD Studio поддерживает пока только максимум iOS 8.4. На iOS симуляторе выполняется x86 код, а на реальном девайсе ARM код. Это всё и объясняет. Если у Вас на девайсе iOS 9, то Delphi приложение вряд ли будет работать. Код для симулятора генерируется корректно, а вот конечный для ARM нет. Вам нужно собрать приложение с использованием iOS SDK 8.4.
×
×
  • Создать...