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

Nik

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

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

  • Посещение

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

    1

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

  1. Не согласен с вашими доводами. Надо учитывать транзакционную модель Interbase/Firebird. Если у вас 2-5 клиентов - ваш вариант ещё может "прокатить". При больших нагрузках получите кучу deadlock'ов. И вообще правильнее будет, что зависит не от задачи, а от архитектуры программы.. Если уже имеется трёхзвенка, то не надо ничего иного придумывать.. И если вернуться к начальному вопросу темы, то запрос к базе - это текстовая строка.. учитывая, что имеется сервер, то вопрос стоит в том, чтобы отправить текст запроса на этот сервер и получить в ответ результаты запроса.. думаю FireDAC к этому отношения не имеет.. для начала надо узнать как устроен сервер и в каком формате он выдаёт результаты запросов - после этого можно будет думать какими компонентами получать эти результаты запросов.
  2. На мой взгляд ты сам себе создаёшь больше проблем, чем пользы всеми этими сторонними компонентами.. Разберись лучше с настройками подключения к базе через TFDConnection (там мастер настройки подключения имеется даже).. Это если ты хочешь напрямую к базе подключаться из клиентского приложения..
  3. uses System.IOUtils; function GetFileSize(APath: String): String; var Stream: TStream; begin Stream := TFile.OpenRead(APath); try Result := Format('%f MBytes',[Stream.Size/1048576]); finally Stream.Free; end; end; Можно так сделать..
  4. Не, мне FMX больше VCL нравится )) Но всё же нужно задумываться о целесообразности применения того или иного инструмента, а не забивать гвозди микроскопом..
  5. у меня исходники проекта занимают 288 209 байт, а ты предлагаешь мне дополнительно добавить всего-то два файла весом 142 718 байт. Думаешь оно того стоит? ))
  6. Я читал твои впечатления.. В принципе согласен с твоими теми выводами, но в моём конкретном случае количество данных небольшое и по структуре они очень простые.. Цеплять к программе дополнительную библиотеку по обработка JSON, чтобы прочитать 2-5 полей у одной записи - это слишком накладно по моему мнению. Но в целом с JSON надо будет познакомить для общего развития )
  7. Честно, я не вижу в этом проблемы.. Если количество видов запросов небольшое, то написать обработчики не является трудоёмкой задачей, а если большое, то написать один раз "обвязку" над запросами по парсингу проблем не составляет.. тем более XML-парсеры прекрасно работают и под windows, и под андроидом.. Вот прикручивать DataSnap там где он совершенно не нужен с его избыточной функциональностью - вот в этом смысла совершенно не вижу.. Для примера - у меня сейчас программа на андроиде одним типом запроса обрабатывает три варианта загрузки данных разного назначения. 1) это автоматическое скачивание обновления apk-файла 2) загрузка документов в формате jpg, pdf с сохранением в заданном каталоге 3) пакетная загрузка картинок с разбором пакета "на лету" и загрузкой в TBitmap (без сохранения на носитель) Команда при этом вызывается одна, но с разными параметрами. Парсер результатов выполнения занимает строчек 45-50.. при том, что я begin end и прочее пишу в отдельных строчках. Процедура чтения пакета картинок "на лету" занимает порядка 70-80 строк.. Но тут передача идёт через TStream... Если говорить про XML и JSON - честно скажу, что до JSON руки у меня не доходили, а первоначальный вариант программы мне достался с использованием XML. Этим и объясняется его использование в настоящий момент. А в своё время разработчику так было проще тестировать серверную часть проекта - XML-ки браузером легко читаются и отображаются. По этой же причине был выбран протокол http - так проще было тестировать серверную часть. Клиентская под андроид была написана значительно позже. Использование тех или иных технологий при разработке какого-либо проекта зависит от условий, которые накладываются в проекта на производительность, сетевой трафик, простоту сопровождения, стандартизацию подходов. В крупных компаниях (при корпоративной разработке) DataSnap и другие технологии зачастую используют из-за стандартизации подходов - так проще заменить разработчика на любого другого знакомого с данным стандартом. Про само использование JSON в делфи, кроме уменьшения трафика - других преимуществ я на данный момент не вижу. Но полноценно я его не использовал - возможно у меня сейчас просто мало опыта по работе с этим форматом.
  8. можно.. а на делфи 7 есть библиотеки соответствующие? лично я на делфи 7 очень давно уже не практикую.. года так с 2006-го.. а xml там точно есть.. P.S. у меня на работе как раз описанный вариант реализован был.. делфи 7 на сервере и андроидная программа на эклипсе между собой xml-ками обменивались по http..
  9. Как вариант - на базе http-протокола делать запросы к серверу и получать ответы в виде xml.. Indy под делфи 7 имеются.. xml сформировать проблем нет.. точно также как на андроиде разобрать..
  10. Аналогичная проблема возникла. Наткнулся на эту тему и решил свою проблему ) Вот таким кодом. var MS: TMemoryStream; Bitmap: TBitmap; ... TThread.Synchronize(TThread.CurrentThread, procedure begin Bitmap.LoadFromStream(MS); end);
  11. наверняка есть и другие варианты, но я старался использовать штатные возможности без привлечения сторонних компонентов.. и этот вариант кроссплатформенный - и под виндовс работает, и под андроидом..
  12. uses ..., Xml.xmldom, Xml.XMLIntf, Xml.XMLDoc, Xml.adomxmldom, ...; const csXMLVendor = 'ADOM XML v4'; type TCustomCommand = class(TPersistent) private ... fContentStream: TStream; fContentStr: string; ... public function GetXML(const AOwner: TComponent = nil): TXMLDocument; function GetXMLFromStream(const AOwner: TComponent = nil): TXMLDocument; ... property ContentStr: string read fContentStr write fContentStr; property ContentStream: TStream read fContentStream write fContentStream; ... end; function TCustomCommand.GetXML(const AOwner: TComponent): TXMLDocument; begin Result := TXMLDocument.Create(AOwner); Result.DOMVendor := GetDOMVendor(csXMLVendor); Result.LoadFromXML(ContentStr); Result.Active := True; end; function TCustomCommand.GetXMLFromStream(const AOwner: TComponent): TXMLDocument; begin Result := TXMLDocument.Create(AOwner); Result.DOMVendor := GetDOMVendor(csXMLVendor); ContentStream.Position := 0; Result.LoadFromStream(ContentStream); Result.Active := True; end; я такой код использую для загрузки ответа в формате XML, полученного через TidHTTP.. работает корректно из опыта использования данного метода под андроидом советую не оставлять входной параметр AOwner = nil
×
×
  • Создать...