-
Постов
235 -
Зарегистрирован
-
Посещение
-
Победитель дней
9
Весь контент Камышев Александр
-
а что тут понимать, на то он и IDE, среда быстрой разработки, а DataSnap уже старая технолигия, в принципе все должно само собраться и работать, не обязательно 80 лвл иметь
-
в главной форме объявить 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(); } код получается кроссплатформенный
-
Файлам при загрузке присваивать идентификатор, лучше первичный ключ, можно просто уникальный. Далее получить путь: 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 ); } Глубину вложения можно изменить в зависимости от ситуации.
-
и возразить то нечего, да так удобно, файловые менеджеры есть с такой возможностью, открывают порт и пишут по какому адресу ftp доступен
- 9 ответов
-
- Delphi
- TIdTcpClient
-
(и ещё 1 )
C тегом:
-
tcp сервер на телефоне, жесть
- 9 ответов
-
- Delphi
- TIdTcpClient
-
(и ещё 1 )
C тегом:
-
часики тикают: ку ти, ку ти, ку ти
-
Менеджер отправился к Великому Программисту и показал ему техзадание для новой программы. Менеджер спросил Мастера: «Сколько времени займёт у вас разработка этой системы, если я назначу вам пять программистов?» «Один год» — быстро ответил Мастер. «Но нам она нужна вчера! Как долго вы будете её разрабатывать, если я вам дам десять программистов?» Мастер нахмурился, и сказал: «тогда два года». «А если я назначу вам сотню программистов?» Мастер пожал плечами: «В таком случае, она никогда не будет завершена»
-
не успели линукс запилить, жаль...
-
http - надстройка над TCP, всего лишь крайний, прикладной уровень в OSI, при каждом запросе так же точно как в случае с субд ждать таймаута и переподключаться,(если нет способа определить разрыв сразу), в каждом пакете слать регистрацию. Запрос к БД и запрос к серверу приложений - это в обоих случаях сессия TCP и обмен массивами, только в http еще добавляются строковые заголовки, которые надо парсить. Устойчивость здесь и близко не лежала. Те же яйца, только в профиль. И нет там никакой дорогой цены, отсутствие родных компонентов для прямого подключения - минус FMX. Я сторонник трехзвенки, она позволяет реализовать правила работы с данными и корректно работать с СУБД, но и только.
-
Трехзвенная архитектура имеет много плюсов, однако устойчивости при плохой связи среди этих плюсов нет. И в трехзвенке и в прямом доступе сеанс TCP и обмен массивами, размеры массивов также примерно одинаковые. Правильно построенный запрос к напрямую к БД пройдет быстрее чем через сервер приложений. Для простых приложений pourquoi бы и не pas. Упавшая БД - ночной кошмар it-шников, ее стараются всячески оберегать и работать с ней трепетно. Трехзвенка как раз такой случай.
-
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(); } Где проблема то?
-
мдя, тут было http://fire-monkey.ru/topic/2011-androidmysql/, MyDac от devart собственно не так дорог, там тот же алгоритм, только имена другие TMyConnection и TMyQuery
-
знакомо... это работало крайне медленно, перебор по пикселям, немного быстрее там было считывать line, тот же эффект в FMX даст Canvas->Blending = true
-
white list на 8к пользователей в firewall? Вас одмин проклянет...
-
Клади на форму TFDConnection, TFDQuery и TFDPhysMySQLDriverLink, Connection автоматом пропишется в Query, в Connection прописывай настройки соединения, там все просто, дальше Connection->Open(); - если настройки годные будет коннект. В Query->SQL->Text пишешь sql запрос, и Query->Open() - Query->Close() либо Query->ExecSQL() в зависимости от запроса Смотреть события AfterConnect, AfterDisconnect, ConnectionError, AfterOpen, AfterExecute, QueryError;
-
Скорее никак, сглаживаются примитивы при прорисовке по канве компонента на форме. Вот тут обсуждали http://fire-monkey.ru/topic/1927-сглаживание-при-рисовании-в-буфер-bitmap/
-
можно еще провода вырвать для полного спокойствия
-
закрыть в try-catch, и обработать исключение зачем его проверять? если WelcomeINI->Size != 0 и SaveToFile прошел без исключений - можно смело открывать инишник.
-
Порты закрываются наружу в настройках СУБД, и/или пользователя. Оставляют доступ с localhost либо конкретному ip. Архитектура - это вопрос религии. Если брать релятивистские СУБД, то архитектура клиент-сервер проще и требует меньше ресурсов. Трехзвенная более устойчивая, сложнее в реализации. В клиент-сервере, если не писать хранимые процедуры, клиент может неосторожным запросом завесить базу, и вообще что ему в голову придет - неясная логика. В трехзвенной появляются дополнительные возможности, косяки разных технологий и кривизна пальцев сильно сказывается. REST не предполагает свободы выбора, плати за гигибайты и флопсы в облаке и не парься архитектурой.
-
Делал на виндовс, в настройках url входа в систему по умолчанию, т.е. url сервера, который раздает линки по настройкам профиля. Профиль в хедерах http указывается. По линку(тоже url) движок приложения получает конфигурацию и доп. файлы. Сложно и оправдано только для больших проектов.
-
TIdTCPClient, ошибка на передаче 1,5 Мб через модем
Камышев Александр опубликовал вопрос в TIdTCPClient
tcp_client->Socket->Write( data_out, false ); data_out - TMemoryStream размером около 1,5 Мб, если использовать wifi все ок, в OnWork исправно AWorkCount по 96 байт шлет. Выключаю wifi проверяю интернет соединение - все ок, небольшие массивы по несколько килобайт уходят без проблем. Впихиваю 1,5 метра - AWorkCount показывает какие-то либо терабайты либо отрицательные значения. Ошибки нет, тупо висит. Что ему не так то? help