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

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

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

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

  • Посещение

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

    9

Активность репутации

  1. Like
    Камышев Александр отреагировална Pax Beach в Помогите с MySQL   
    Да, я помню, там каждый высказал свое мнение, ни к чему не пришли, остались при своем.
    У меня есть мнение, что прямые руки при настройке ролей БД и правильная обработка соединения с распределенной БД отлично заменяют трехзвенку.
    А безаппеляционное заявление «ХХХ — зло» — это флэйм и холивар, бесполезный мусор на форуме ;-)
     
    L2C and have right hands!
  2. Like
    Камышев Александр получил реакцию от Kitty в ShowModal not implemented on this platform   
    в главной форме объявить 
    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. Like
    Камышев Александр получил реакцию от Равиль Зарипов (ZuBy) в ShowModal not implemented on this platform   
    в главной форме объявить 
    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();     } код получается кроссплатформенный
  4. Like
    Камышев Александр отреагировална Евгений Корепов в TIdTCPClient на Android   
    Почему? Для некоторых нужд очень даже. К примеру регулярно пользуюсь ftp-сервером на телефоне - намного удобнее заливать/сливать (по wifi) книги, музыку и прочее, сидя за компьютером в Far manager, чем перетаскивая мышкой в убогих индусских синхронизаторах или пользоваться облачными решениями (залить 30 гигов в dropbox с компьютера (тут нет проблем, инет 450 мегабит), а потом их выкачивать из инета на телефон даже по wifi ac то еще удовольствие).
  5. Like
    Камышев Александр получил реакцию от dnekrasov в Перспективы RAD   
    Менеджер отправился к Великому Программисту и показал ему техзадание для новой программы. Менеджер спросил Мастера: «Сколько времени займёт у вас разработка этой системы, если я назначу вам пять программистов?»
    «Один год» — быстро ответил Мастер.
    «Но нам она нужна вчера! Как долго вы будете её разрабатывать, если я вам дам десять программистов?»
    Мастер нахмурился, и сказал: «тогда два года».
    «А если я назначу вам сотню программистов?»
    Мастер пожал плечами: «В таком случае, она никогда не будет завершена» 
  6. Like
    Камышев Александр получил реакцию от Sergionn в Перспективы RAD   
    Менеджер отправился к Великому Программисту и показал ему техзадание для новой программы. Менеджер спросил Мастера: «Сколько времени займёт у вас разработка этой системы, если я назначу вам пять программистов?»
    «Один год» — быстро ответил Мастер.
    «Но нам она нужна вчера! Как долго вы будете её разрабатывать, если я вам дам десять программистов?»
    Мастер нахмурился, и сказал: «тогда два года».
    «А если я назначу вам сотню программистов?»
    Мастер пожал плечами: «В таком случае, она никогда не будет завершена» 
  7. Like
    Камышев Александр получил реакцию от AngryOwl в Перспективы RAD   
    Менеджер отправился к Великому Программисту и показал ему техзадание для новой программы. Менеджер спросил Мастера: «Сколько времени займёт у вас разработка этой системы, если я назначу вам пять программистов?»
    «Один год» — быстро ответил Мастер.
    «Но нам она нужна вчера! Как долго вы будете её разрабатывать, если я вам дам десять программистов?»
    Мастер нахмурился, и сказал: «тогда два года».
    «А если я назначу вам сотню программистов?»
    Мастер пожал плечами: «В таком случае, она никогда не будет завершена» 
  8. Like
    Камышев Александр отреагировална Равиль Зарипов (ZuBy) в Перспективы RAD   
    это явно не плюсы:
    такой продукт это не калькулятор и в него нужно войти с головой чтобы понять всю архитектуру и количество качеством не покрывается
  9. Like
    Камышев Александр отреагировална Kitty в Перспективы RAD   
    Основатель FMX Евгений Крюков в поисках работы: https://plus.google.com/u/0/105338484741532774705/posts/SnK5twK939Y
    Основатель FireDAC Дмитрий Арефьев тоже больше не работает.
    По Вашему мнению какие все же перспективы RAD при такой кадровой политике?
  10. Like
    Камышев Александр получил реакцию от Kitty в Ресурсы и ссылки для новичка в доступе к MySQL   
    http - надстройка над TCP, всего лишь крайний, прикладной уровень в OSI, при каждом запросе так же точно как в случае с субд ждать таймаута и переподключаться,(если нет способа определить разрыв сразу), в каждом пакете слать регистрацию. Запрос к БД и запрос к серверу приложений - это в обоих случаях сессия TCP и обмен массивами, только в http еще добавляются строковые заголовки, которые надо парсить.  Устойчивость здесь и близко не лежала. Те же яйца, только в профиль. И нет там никакой дорогой цены, отсутствие родных компонентов для прямого подключения - минус FMX.
    Я сторонник трехзвенки, она позволяет реализовать правила работы с данными и корректно работать с СУБД, но и только.
  11. Like
    Камышев Александр получил реакцию от Kitty в Ресурсы и ссылки для новичка в доступе к MySQL   
    Клади на форму TFDConnection, TFDQuery и TFDPhysMySQLDriverLink,
    Connection автоматом пропишется в Query, в Connection прописывай настройки соединения, там все просто, дальше Connection->Open(); - если настройки годные будет коннект.
    В Query->SQL->Text пишешь sql запрос, и Query->Open() - Query->Close()  либо Query->ExecSQL() в зависимости от запроса
    Смотреть события AfterConnect, AfterDisconnect, ConnectionError, AfterOpen, AfterExecute, QueryError; 
  12. Like
    Камышев Александр получил реакцию от Kitty в Прочитать файл на хостинге   
    закрыть в try-catch, и обработать исключение
    зачем его проверять? если WelcomeINI->Size != 0 и SaveToFile прошел без исключений - можно смело открывать инишник.
  13. Like
    Камышев Александр получил реакцию от Kitty в [FireDAC][Phys][SQLite] ERROR:attempt to write a readonly   
    Нет разрешения на редактирование файлов, где лежит файл базы? Можно попробовать поместить в общедоступные папки, documents, downloads.
    Разрабы в Google закручивают гайки, не дают писать на флешки и внешние накопители, ибо нечего, покупайте устройства с бОльшим объемом памяти на борту - они дороже.
  14. Like
    Камышев Александр получил реакцию от Rusland в Методы шифрования delphi   
    Есть надежные, быстрые библиотеки для шифрования на С, но похоже к Delphi их никак не включить в проект. 
    Казалось бы основное направление Rad Studio - объектный паскаль, однако же CBuilder принимает *.pas файлы, а Delphi сишные файлы игнорит.
    Если собрать Static Library c библиотекой на С, наверное Delphi его поймет?
    Попробовал... Delphi и lib не понимает... печаль
  15. Like
    Камышев Александр получил реакцию от sviat9440 в Методы шифрования delphi   
    из известных blowfish и ГОСТ 28147-89, у меня библиотеки на сях, вот тут обсуждают реализацию blowfish на object pascal http://www.sql.ru/forum/1192261/ishodnik-blowfish-ne-poymu-kak-s-nim-rabotat
    ГОСТ 28147-89 - алгоритм шифрования, принят к использованию в госструктурах, но это так, к слову
  16. Like
    Камышев Александр получил реакцию от Kitty в Вопрос Администратору! Какие планы на Россию?   
    Если до сих пор ленился разбираться с другими IDE, с чего бы теперь вдруг перестать лениться?
    Сидим плотно на rad studio и ждем вкусняшки, вроде поддержки линуха.
    А Си бросать никак нельзя, он велик и от него исходит сияние.
  17. Like
    Камышев Александр получил реакцию от Прикладной в Вопрос Администратору! Какие планы на Россию?   
    тогда уж соскакивать с rad studio на qt, если не хотят С++ поддерживать, там и линукс и андроид и библиотек куча
    до сих пор builder используется больше из-за старых проектов и наработок
  18. Like
    Камышев Александр отреагировална krapotkin в Файлы созданные в Delphi программе на планшете не видны на компьютере   
    это MTP в андроиде так работает
    пока не будет рескана, MTP не выдает вновь созданные файлы
    Я смотрю это через AirDroid
  19. Like
    Камышев Александр получил реакцию от Pax Beach в Изображения из mySQL в приложение   
    Если VCL там есть DBGrid, MyDataSource указать, все само отрисуется. В FMX по сути тоже должен быть способ, типа LiveBindings.
    Можно рисовать в рукопашную
    for ( int i = 0; i < fquery->RecordCount; i++ ) { // пройти по записям fquery->RecNo = i + 1; // получить массив данных TByteDynArray da = fquery->Fields->FieldByNumber(0)->AsBytes; // скопировать массив в Stream, // возможно есть другие способы скопировать TByteDynArray в TStream, я на вскидку скопировал побайтно TMemoryStream *ms = new TMemoryStream; ms->SetSize( da.Length ); // занять область под копирование char *ms_data = (char*)ms->Memory; // именованый указатель на область память for( int j = 0; j < da.Length; i++ ) char[i] = da[i]; // копирование побайтно в цикле TBitmap *b = new TBitmap; b->LoadFromStream( ms ); // здесь в битмап уже должно быть изображение delete ms; delete b; }  
  20. Like
    Камышев Александр получил реакцию от Andrey Efimov в Обработка разрыва соединения в FireDAC   
    разрыв соединения - все корректно обрабатывается
    void __fastcall TMyDBClient::ConnectionError( TObject *ASender, TObject *AInitiator, Exception *&AException ) { status = dbcError; #ifdef AUX_MODE error_string = AException->Message; #endif if ( FOnError ) FOnError( (TObject*)this ); Abort(); } //--------------------------------------------------------------------------- void __fastcall TMyDBClient::QueryError(TObject *ASender, TObject *AInitiator, Exception *&AException) { status = dbcError; #ifdef AUX_MODE error_string = AException->Message; error_string += "\r\nsql: " + fquery->SQL->Text; #endif if ( FOnError ) FOnError( (TObject*)this ); Abort(); } //--------------------------------------------------------------------------- void __fastcall TMyDBClient::AfterDisconnect(TObject *Sender) { status = dbcNotConn; #ifdef AUX_MODE log_string = "db - disconnect"; if ( FOnLog ) FOnLog( (TObject*)this ); #endif } Abort() - чтобы не было исключения в Application
    так тишина и только логи шелестят переподключениями
  21. Like
    Камышев Александр получил реакцию от Kitty в OpenDialog для мобильных платформ   
    String fn; String path = System::Ioutils::TPath::GetSharedDownloadsPath(); #ifdef __ANDROID__ TSearchRec sr; if ( !FindFirst( path + "/*", faAnyFile, sr) ) { do { if ( sr.Name=="." || sr.Name==".." ) {} else if ( (sr.Attr & faDirectory) == faDirectory ) {} // dir else {} // file // отрисовать в список sr.Name sr.Name; } while ( !FindNext(sr) ); FindClose(sr); // по клику в списке получить fn = path + "/" + name; } #else OpenDialog->InitialDir = System::Ioutils::TPath::GetSharedDocumentsPath(); if ( !OpenDialog->Execute() ) return; fn = OpenDialog->FileName; #endif вот так сделал, кому понадобится, на паскале тоже работает, только синтаксис другой
  22. Like
    Камышев Александр получил реакцию от Равиль Зарипов (ZuBy) в OpenDialog для мобильных платформ   
    String fn; String path = System::Ioutils::TPath::GetSharedDownloadsPath(); #ifdef __ANDROID__ TSearchRec sr; if ( !FindFirst( path + "/*", faAnyFile, sr) ) { do { if ( sr.Name=="." || sr.Name==".." ) {} else if ( (sr.Attr & faDirectory) == faDirectory ) {} // dir else {} // file // отрисовать в список sr.Name sr.Name; } while ( !FindNext(sr) ); FindClose(sr); // по клику в списке получить fn = path + "/" + name; } #else OpenDialog->InitialDir = System::Ioutils::TPath::GetSharedDocumentsPath(); if ( !OpenDialog->Execute() ) return; fn = OpenDialog->FileName; #endif вот так сделал, кому понадобится, на паскале тоже работает, только синтаксис другой
  23. Like
    Камышев Александр получил реакцию от Rusland в OpenDialog для мобильных платформ   
    String fn; String path = System::Ioutils::TPath::GetSharedDownloadsPath(); #ifdef __ANDROID__ TSearchRec sr; if ( !FindFirst( path + "/*", faAnyFile, sr) ) { do { if ( sr.Name=="." || sr.Name==".." ) {} else if ( (sr.Attr & faDirectory) == faDirectory ) {} // dir else {} // file // отрисовать в список sr.Name sr.Name; } while ( !FindNext(sr) ); FindClose(sr); // по клику в списке получить fn = path + "/" + name; } #else OpenDialog->InitialDir = System::Ioutils::TPath::GetSharedDocumentsPath(); if ( !OpenDialog->Execute() ) return; fn = OpenDialog->FileName; #endif вот так сделал, кому понадобится, на паскале тоже работает, только синтаксис другой
  24. Like
    Камышев Александр получил реакцию от Kitty в Обработка разрыва соединения в FireDAC   
    разрыв соединения - все корректно обрабатывается
    void __fastcall TMyDBClient::ConnectionError( TObject *ASender, TObject *AInitiator, Exception *&AException ) { status = dbcError; #ifdef AUX_MODE error_string = AException->Message; #endif if ( FOnError ) FOnError( (TObject*)this ); Abort(); } //--------------------------------------------------------------------------- void __fastcall TMyDBClient::QueryError(TObject *ASender, TObject *AInitiator, Exception *&AException) { status = dbcError; #ifdef AUX_MODE error_string = AException->Message; error_string += "\r\nsql: " + fquery->SQL->Text; #endif if ( FOnError ) FOnError( (TObject*)this ); Abort(); } //--------------------------------------------------------------------------- void __fastcall TMyDBClient::AfterDisconnect(TObject *Sender) { status = dbcNotConn; #ifdef AUX_MODE log_string = "db - disconnect"; if ( FOnLog ) FOnLog( (TObject*)this ); #endif } Abort() - чтобы не было исключения в Application
    так тишина и только логи шелестят переподключениями
  25. Like
    Камышев Александр получил реакцию от Евгений Корепов в Обработка разрыва соединения в FireDAC   
    Раньше тоже пользовался продуктами devart, хоть и недорогие, удобные, надежные, но все же они платные, плюс вообще не люблю подключать сторонние компоненты. 
    На oldschool теплом ламповом CBuilder приходилось много всего подключать: скины, компоненты доступа к бд, инди последних версий, компоненты для отчетов, png и т.п. С тех пор стараюсь избегать всего не родного.
    FireDAC понравился, хорош CmdExecMode amAsync - The calling thread and GUI are not blocked. The called method will return immediately.
    Позволяет работать с базой из основного потока без завешивания, отправил запрос и занимайся другими задачами пока callback не придет.
×
×
  • Создать...