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

Камышев Александр

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

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

  • Посещение

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

    9

Весь контент Камышев Александр

  1. а что тут понимать, на то он и IDE, среда быстрой разработки, а DataSnap уже старая технолигия, в принципе все должно само собраться и работать, не обязательно 80 лвл иметь
  2. в главной форме объявить void __fastcall OnOptFormReady(TObject *Sender); в вызываемой форме private: // User declarations TNotifyEvent FOnReady; public: // User declarations __property TNotifyEvent OnReady = { read = FOnReady, write = FOnReady }; показать форму if ( !fmLogin ) fmLogin = new TfmLogin(this); fmLogin->OnReady = OnOptFormReady; #ifdef WIN32 fmLogin->ShowModal(); #else fmLogin->ShowFullScreenIcon = true; fmLogin->Show(); #endif по кнопкам в "модальном" окне вызвать событие: Close(); ModalResult = mrOk; // если ок if ( FOnReady ) FOnReady( (TObject*)this ); и обработка callback: void __fastcall TForm1::OnOptFormReady(TObject *Sender) { if ( Sender == fmLogin ) { if ( fmLogin->ModalResult != mrOk ) return; ApplySettings(); } код получается кроссплатформенный
  3. Файлам при загрузке присваивать идентификатор, лучше первичный ключ, можно просто уникальный. Далее получить путь: String SUFileName( unsigned int id ) { unsigned int d1, d2; d1 = id / 0x3fffff; d2 = ( id - ( 0x3fffff * d1 ) ) / 0xfff; return "su_files\\" + (String)d1 + "\\" + (String)d2 + "\\" + (String)id + ".file"; } не забывать создавать подпапки: void CreateWarehouse( String path, unsigned int id ) { CreateDirectory( ( path + "\\su_files" ).c_str(), NULL ); unsigned int d1, d2; d1 = id / 0x3fffff; d2 = ( id - ( 0x3fffff * d1 ) ) / 0xfff; CreateDirectory( ( path + "\\su_files\\" + (String)d1 ).c_str(), NULL ); CreateDirectory( ( path + "\\su_files\\" + (String)d1 + "\\" + (String)d2 ).c_str(), NULL ); } Глубину вложения можно изменить в зависимости от ситуации.
  4. и возразить то нечего, да так удобно, файловые менеджеры есть с такой возможностью, открывают порт и пишут по какому адресу ftp доступен
  5. часики тикают: ку ти, ку ти, ку ти
  6. Менеджер отправился к Великому Программисту и показал ему техзадание для новой программы. Менеджер спросил Мастера: «Сколько времени займёт у вас разработка этой системы, если я назначу вам пять программистов?» «Один год» — быстро ответил Мастер. «Но нам она нужна вчера! Как долго вы будете её разрабатывать, если я вам дам десять программистов?» Мастер нахмурился, и сказал: «тогда два года». «А если я назначу вам сотню программистов?» Мастер пожал плечами: «В таком случае, она никогда не будет завершена»
  7. Зачем это все в потоке? FireDac компоненты могут работать в асинхронном режиме, не нужно их в поток засовывать. Вроде обсуждали что FireDac не работает на андроид... Этот код рабочий? т.е. Вы работали с устройства с базой данных?
  8. не успели линукс запилить, жаль...
  9. http - надстройка над TCP, всего лишь крайний, прикладной уровень в OSI, при каждом запросе так же точно как в случае с субд ждать таймаута и переподключаться,(если нет способа определить разрыв сразу), в каждом пакете слать регистрацию. Запрос к БД и запрос к серверу приложений - это в обоих случаях сессия TCP и обмен массивами, только в http еще добавляются строковые заголовки, которые надо парсить. Устойчивость здесь и близко не лежала. Те же яйца, только в профиль. И нет там никакой дорогой цены, отсутствие родных компонентов для прямого подключения - минус FMX. Я сторонник трехзвенки, она позволяет реализовать правила работы с данными и корректно работать с СУБД, но и только.
  10. Трехзвенная архитектура имеет много плюсов, однако устойчивости при плохой связи среди этих плюсов нет. И в трехзвенке и в прямом доступе сеанс TCP и обмен массивами, размеры массивов также примерно одинаковые. Правильно построенный запрос к напрямую к БД пройдет быстрее чем через сервер приложений. Для простых приложений pourquoi бы и не pas. Упавшая БД - ночной кошмар it-шников, ее стараются всячески оберегать и работать с ней трепетно. Трехзвенка как раз такой случай.
  11. VCL компоненты с красивыми шкурками тут, пользовался ими раньше, интересный дизайн и функционал, жаль что только VCL, под андроид не пойдет.
  12. void __fastcall TForm1::FormPaint(TObject *Sender, TCanvas *Canvas, const TRectF &ARect) { Canvas->BeginScene(); TRect rect = Rect( 10, 10, 100, 100 ); TRect src = Rect( 0, 0, ImageControl1->Bitmap->Width, ImageControl1->Bitmap->Height ); Canvas->DrawBitmap( ImageControl1->Bitmap, src, rect, 1, false ); Canvas->EndScene(); } Где проблема то?
  13. мдя, тут было http://fire-monkey.ru/topic/2011-androidmysql/, MyDac от devart собственно не так дорог, там тот же алгоритм, только имена другие TMyConnection и TMyQuery
  14. знакомо... это работало крайне медленно, перебор по пикселям, немного быстрее там было считывать line, тот же эффект в FMX даст Canvas->Blending = true
  15. white list на 8к пользователей в firewall? Вас одмин проклянет...
  16. Клади на форму TFDConnection, TFDQuery и TFDPhysMySQLDriverLink, Connection автоматом пропишется в Query, в Connection прописывай настройки соединения, там все просто, дальше Connection->Open(); - если настройки годные будет коннект. В Query->SQL->Text пишешь sql запрос, и Query->Open() - Query->Close() либо Query->ExecSQL() в зависимости от запроса Смотреть события AfterConnect, AfterDisconnect, ConnectionError, AfterOpen, AfterExecute, QueryError;
  17. Скорее никак, сглаживаются примитивы при прорисовке по канве компонента на форме. Вот тут обсуждали http://fire-monkey.ru/topic/1927-сглаживание-при-рисовании-в-буфер-bitmap/
  18. можно еще провода вырвать для полного спокойствия
  19. Чтобы не гадать, нужно скачать в googleplay любой SQLite браузер, проверить этой сторонней утилитой доступ к таблицам.
  20. закрыть в try-catch, и обработать исключение зачем его проверять? если WelcomeINI->Size != 0 и SaveToFile прошел без исключений - можно смело открывать инишник.
  21. Порты закрываются наружу в настройках СУБД, и/или пользователя. Оставляют доступ с localhost либо конкретному ip. Архитектура - это вопрос религии. Если брать релятивистские СУБД, то архитектура клиент-сервер проще и требует меньше ресурсов. Трехзвенная более устойчивая, сложнее в реализации. В клиент-сервере, если не писать хранимые процедуры, клиент может неосторожным запросом завесить базу, и вообще что ему в голову придет - неясная логика. В трехзвенной появляются дополнительные возможности, косяки разных технологий и кривизна пальцев сильно сказывается. REST не предполагает свободы выбора, плати за гигибайты и флопсы в облаке и не парься архитектурой.
  22. Делал на виндовс, в настройках url входа в систему по умолчанию, т.е. url сервера, который раздает линки по настройкам профиля. Профиль в хедерах http указывается. По линку(тоже url) движок приложения получает конфигурацию и доп. файлы. Сложно и оправдано только для больших проектов.
  23. tcp_client->Socket->Write( data_out, false ); data_out - TMemoryStream размером около 1,5 Мб, если использовать wifi все ок, в OnWork исправно AWorkCount по 96 байт шлет. Выключаю wifi проверяю интернет соединение - все ок, небольшие массивы по несколько килобайт уходят без проблем. Впихиваю 1,5 метра - AWorkCount показывает какие-то либо терабайты либо отрицательные значения. Ошибки нет, тупо висит. Что ему не так то? help
×
×
  • Создать...