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

Опять про потоки и картинки


jornada

Вопрос

Здравствуйте уважаемые форумчане! У меня такой общий вопрос из нескольких) Исходные данные - есть база данных на SQL Server, на ней включен FileStream и хранятся там разные фотки. Приложение которое работает с этой базой писано на дельфи и для доступа к данным используется UniDac. Пользователям надоело фотки грузить на комп, с компа через эту программу добавлять в базу и хотят они теперь все это делать с мобилки (речь идет только об андроиде пока). Начал я эксперименты с мобильными приложениями.. т.к. я о них ничего не знаю, да и приложуха для внутреннего использования, то попробовал прямое чтение и запись через тот же unidac. Вроде бы все работает, как через wifi, так и через мобильные сети. Вопрос в отображении тех самых картинок. Сделал я некую галерею, накидал ректанглов на скролл, гружу фотки туда, но они, заразы, отображаются только после полной загрузки. Ладно, по одной фотографии стал грузить. То же самое. Начал потоки использовать, unidac пишет - неплохо бы для каждого обращения в потоке свой коннект открывать. Добавил код  а-ля CoInitialize(nil); далее инициализация потока, загрузка фото, отображение всего безобразия на событие OnTerminated. И вот, казалось бы оно счастье.. но нет. Не знает андроид о CoInitialize, работает только с виндой этот код (а может и знает, но скрывает от меня тайну эту). И вот отсюда вопрос - можно ли это как то домучить, чтобы фотки прорисовывались по мере их загрузки и куда для этого копать. Может все таки можно коннекты в потоке инициализировать или про DataSnap идти читать. Я не думаю, что задача какая то нетривиальная. Если кто подскажет или поделится своим опытом - буду очень благодарен.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

CoInitialize - это инициализация работы с COM-объектами. По понятным причинам COM на андроид и любой другой ОС не существует

Варианты прямой связи через любой DAC с мобилы в базу даже не рассматривайте. Стройте сервер. PHP самый простой. Можно Datasnap, но перспективы туманные...

И качайте свои файлы через HTTP в любую сторону

Ссылка на комментарий
  • 0
3 часа назад, krapotkin сказал:

CoInitialize - это инициализация работы с COM-объектами. По понятным причинам COM на андроид и любой другой ОС не существует

Варианты прямой связи через любой DAC с мобилы в базу даже не рассматривайте. Стройте сервер. PHP самый простой. Можно Datasnap, но перспективы туманные...

И качайте свои файлы через HTTP в любую сторону

Посоветовал мне один умный человек CoInitialize просто убрать для андроида. И оно таки взлетело. Теперь осталось разобраться почему вариант прямой связи я рассматривать не должен? Украдут, не долетит, поломают?

Ссылка на комментарий
  • 0

потому что мобильная связь это не провод с интернетом. дикие задержки и все время рвется

протоколы обмена с сервером не предусматривают постоянных переподключений

а вот HTTP специально разработан для такого режима

Ссылка на комментарий
  • 0

При переключении с соты на соту параметры сети могут меняться. Компонент на это не стабильно реагирует, и может порушить всю программу. Поищите как делать get запрос.

Посмотрите проект Равиля: https://github.com/rzaripov1990/ModernListView

Здесь есть все что вам надо.

Изменено пользователем ENERGY
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...