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

Юрий Гусач

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

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

  • Посещение

Сообщения, опубликованные Юрий Гусач

  1. В 13.11.2018 в 09:36, Равиль Зарипов (ZuBy) сказал:

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

    Я придерживаюсь мнения что захардкоренные места не нужно держать в приложении, при обновлении параметров smtp сервера вы никак не сможете починить быстро

    самый простой способ это хостинг ну или текущий сайт компании, там реализовать отправку письма как предлагал @ENERGY

    Sorry! Когда я задавал вопрос по поводу проблем с  ошибками 'Could not load SSL', у меня была такая ситуация. Есть смартфон, работающий  как система сбора экспериментальных данных от некоторых блютусных датчиков.  Данные собираются, визуализируются и пишутся в виде двоичных файлов в память смартфона  вполне успешно.  В принципе все  хорошо, но хочется оперативно отсылать данные таким образом, чтобы у пользователя был минимум манипуляций, у него бывают руки заняты.  Программа поначалу просто отправляла файлы как вложения e-mail. Но на первом же смартфоне с седьмым андроидом отказалась загружать SSL. Я и обратился сюда, взывая о помощи,как можно относительно быстро и  просто решить эту проблему.  Я не адепт Indy и не обязательно использовать именно его. Сайта компании нет и сервера компании тоже нет, так как нет никакой компании, есть отдельные пользователи и их смартфоны. Программа помогает людям в их жизни, пишется на общественных началах.  Лично мне это не представляется в принципе глупым. То что написал Zuby понятно и спасибо за это. Но не понятно, что делать с этим мне в конкретной ситуации.  Кстати мне не удалось перейти по ссылке от @Energy, чтобы посмотреть на его пример,так как ссылка не открылась. У меня появилась легкая печаль... 

    .

     

  2. В 08.11.2017 в 13:54, Tumaso сказал:

    На stackoverflow описано решение этой проблемы. Суть в том, что мы принудительно заставляем Indy использовать OpenSSL вместо BorinSSL:

    1. добавляем в project deployment для андроида 2 файла: libcrypto.so и libssl.so (взять их можно на https://forums.embarcadero.com/thread.jspa?threadID=211147), в качестве Remote path для обоих файлов указываем .\assets\internal

    2. убеждаемся, что в .dpr модуль System.StartUpCopy указан самым первым

    3. при запуске приложения вызываем IdOpenSSLSetLibPath(TPath.GetDocumentsPath) 

    примечание к версии SSL - на файлы по ссылке из п.1 Google не выдает предупреждений, а на более старые версии будет ругаться

    Добрый день!

    На Androide7 у меня не работает! Все равно выдает Could not load SSL!  Как на Андроиде 7 передать почту используя SSL. На Андроиде 5 почта  с SSL передается вообще без проблем 

  3. 15 часов назад, Barbanel сказал:

    Так внешний вид абсолютно нормальный получается. Нужно лишь подготовить ресурсы для каждого коэффициента, но это везде так.

    Я сейчас не на рабочем месте, могу завтра показать как это выглядит на разных устройствах.

    Почему два а не три - роли не играет. Этот коэффициент можно получить, если необходимо.

    Спасибо!

    Интересно, как получить коэффициент масштабирования во время работы программы(у пользователя может быть любое устройство). 

    И все-таки было бы очень интересно узнать, что именно добиваются разработчики Fire monkey под Андроидом урезанием разрешения экрана.

    По видимому, какой то смысл в этом есть, но какой именно? 

      

       

  4. Delphi то работает без проблем. Но внешний  вид приложения хотелось бы получить немного получше. В принципе понятно, что применяется масштабирование. Не полностью понятно когда, какое, и почему?

    Например на  Samsung S3 из 1280 x 720  получаем 640 x 360. то есть коэффициент 2. Почему 2, а не 3 или 1.5  ?   

  5. Доброго дня!

    Проясните пожалуйста ситуацию: при запуске программы  под Андроидом на различных устройствах я получаю размеры формы, которые вроде всегда в разы меньше чем максимальное разрешение экрана конкретного устройства. Я пробовал планшеты и разные смартфоны. Написал тестовую прогу, которая выводит СlientScreen и  ClientWidth формы, на которой ничего больше нет. Например для крайне бюджетного смартфона Fly FS-549 получилось 497 х 320, а по паспорту 854x480. Разрешение и так хреновое, а Delphi его еще сильнее уменьшает. -       Почему это происходит и можно ли как то это обойти?

     

     

  6. Компоненты TIdMessage, TIdSMTP, TIdSSLIOHandlerSocketOpenSSL просто устанавливаются на форму и их свойства в инспекторе объектов я не менял. Настройка идет при выполнении программы. Значения настроек взял из примера в Инете. Пароль я изменил соответственно

    procedure TForm6.Button1Click(Sender: TObject);
    begin
        // IO HANDLER SETTINGS //
        with IdSSLIOHandlerSocketOpenSSL1 do
        begin
            Destination := 'smtp.gmail.com:25';
            Host := 'smtp.gmail.com';
            MaxLineAction := IdGlobal.TIdMaxLineAction.maException;
            Port := 25;
            SSLOptions.Method := sslvTLSv1;
            SSLOptions.Mode := sslmUnassigned;
            SSLOptions.VerifyMode := [];
            SSLOptions.VerifyDepth := 0;
        end;

        // SETTING SMTP COMPONENT DATA //
        IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
        IdSMTP1.Host := 'smtp.gmail.com';
        IdSMTP1.Port := 25;
        IdSMTP1.Username := ' spirometer2018@gmail.com';
        IdSMTP1.Password := 'MyPassword';
        IdSMTP1.AuthType := satDefault;
        IdSMTP1.UseTLS := utUseExplicitTLS;


      IdMessage1.Recipients.Clear;
        with IdMessage1.Recipients.Add do
        begin
            name := 'Юра';
            Address := 'yura@mail.ru';
       end;
    IdMessage1.CharSet:='UTF-8';
    IdMessage1.From.Address := 'spirometer2018@gmail.com';
    IdMessage1.From.Name :='Spirometer 2018';
    IdMessage1.Subject :=UTF8Encode('Спирометр Test 25.03.2018');
    IdMessage1.Body.Add(UTF8Encode('Тест спирометра на русском языке'));
    IdMessage1.Priority := mpNormal;
     try
            IdSMTP1.Connect();
            IdSMTP1.Send(IdMessage1);
            ShowMessage('Email sent');
            IdSMTP1.Disconnect();
        except
            on e: Exception do
            begin
                ShowMessage(e.Message);
                IdSMTP1.Disconnect();
            end;
        end;
    end;

     

    Все под Windows работает нормально. После компиляции под Андроидом, в пришедшем письме, имя пославшего и тема, написанные русскими буквами отображаются знаками вопроса. Русское тело письма отображается нормально.
     

  7. Есть немного странная проблема!

    Пытаюсь написать программу посылающую почту со смартфона.Используются Indy компоненты TIdSMTP,TIdMessage и TIdSSLIOHandlerSocketOpenSSL. Под Windows с компа все работает нормально.

    но если тема, имя адресата или имя посылающего содержат русские буквы, то если посылать почту со смартфона, они появляются в пришедшем письме вопросиками. Понятно, что дело в кодировке. Не могу найти что менять. Само тело письма пишется с кодировкой UTF-8 и отображается везде по русски совершенно нормально. Имена и тема с русскими буквами с компьютера и Windows приходят правильно, со смартфона(при компиляции под Android) приходят неправильно. Перепробовал вроде почти все комбинации.

    Почта со смартфона при наборе вручную тоже работает нормально. Дело по-видимому в конфигурации TIdMessage, а где не пойму.  Работаю в Delphi XE10, смартфон Samsung J3, Android 5.1.1  

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

  8. Печаль однако... У меня однозначно помогло. Поместил исправленный  FMX.Platform.Android.pas в папку с файлами проекта, включил файл в проект, перекомпиллировал и все заработало...  

    Приходится констатировать факт, что у меня частный случай,  когда помогло.  Мне тоже очень интересно, узнать как решится проблема. При этом во всех программах, поставляемых с данным планшетом, ввод

    через строку ввода работает?   

  9. Что еще можно добавить, так это то, что на этом планшете файлы, созданные планшетным Word-ом, видны через USB без каких то особых усилий.

    Ассоциации вызывает такой случай: На этом планшете, вызов текстового ввода  подвешивал систему. А на других устройствах все работало. Исправление вручную файла дельфийского файла  FMX.Platform.Android.pas( исправление было взято из форума StackOverflow и есть и на этом форуме) полностью решило проблему. Т.е. не конкретный планшет был виноват.  

    Пока  несколько часов усилий не дали особых результатов. После каких-то манипуляций файлы, созданные часа два назад, показались через USB. Те что записаны только что, по прежнему через USB не видно.

    Пробовал запись в каталоги /Downloads, /Pictures, /Documents. Все то же.

    Samsung смартфон при этом работает адекватно. 

    3 часа назад, krapotkin сказал:

    это MTP в андроиде так работает

    пока не будет рескана, MTP не выдает вновь созданные файлы

    Я смотрю это через AirDroid

    Sorry за  глупый вопрос, рескан когда происходит?

    ЗЫ

    Дело в том, что мы пишем файлы получаемые от приборов, и пока приходится вытаскивать карточку из планшета, втыкать ее в кардридер на компе, сливать данные и опять вставлять в планшет. Это надо делать б.м. часто. Эксперимент идет. Легче бы по человечески через USB. Сбор сигналов через Bluetooth, программирование Фурье преобразования , визуализация кривых и все в реальном времени и т.п. отняло намного меньше нервов чем эта хрень с видимостью файлов. Обидно, да... :):):)  На компе под Виндой давно все работает, но заказчику надо на  планшете.

  10. 1 минуту назад, Камышев Александр сказал:

    внешний накопитель может быть защищен от записи, это будет ошибка да

    папка Documents была создана при вызове SaveToFile у TStringList, когда я пытался эмулировать Вашу ситуацию на своем планшете, до того ее не было

    псс, а что еще живы программисты под DOS? :D  столько не живут...

    :) Живут, и нас еще много и DOS мы пережили на очень много лет. Программирование на ассемблере под DOS, это был просто праздник какой-то! Sorry за оффтоп.:)

    Защиту проверю. В принципе направление поиска понятно, огромное спасибо, Буду разбираться 

     

  11. 13 минут назад, Камышев Александр сказал:

    у меня на планшете есть SD, но GetSharedDocumentsPath указывает на папку Documents в корне somewhere inside internal storage :)

    и да, пока хотя бы одно приложение не обратится по этому пути, папки такой не будет, она появляется после первого обращения, точнее первой записи

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

    :):):) Создается впечатление, что программы написанные на RAD Studio для Андроида иногда работают. Если бы где нибудь узнать методику написания программ,

    которые работают хотя бы почти везде и почти всегда. Пишу программы для работы с внешней аппаратурой. Месяц наверно, как связался с Андроидом.

    А еще ругали DOS, что он плохой. Вот райская жизнь была :):):) 

    Разберемся конечно, всегда раньше разбирались,

  12.  

    14 минут назад, Камышев Александр сказал:

    вот отсюда поподробней, почему GetSharedDocumentsPath указывает на внешнюю карту, это в настройках?

    Я лично сам ничего в этом смысле не настраивал :).  Но в справке Embarcadero написано для Андроида :

    If device has external storage (for example, SD card), this method returns path name inside external storage.

    If device has no external storage, this method returns somewhere inside internal storage.

    Прикольно, то что я подключил смартфон Samsung J3 там каталога Documents я вообще не нашел.  То что файловый менеджер отнес к документам находится в каталоге .../Downloads 

    Однако все равно спасибо! Буду разбираться с документацией на Андроид.

     

  13. Что еще интереснее, если их прочитать один раз из компа через кардридер, то при следующем подключении их видно. Я обнаружил такое вот явление... 

    На одних планшетах файлы записанные таким образом видны через USB, а на других нет. Как сделать так чтобы у пользователя программы не было проблем.

    Никто ведь заранее не знает, какой у него будет конкретный планшет или смартфон.

    Я в данном случае работаю c DEXP Ursus TS-170.  Android 5.0.  

  14. 7 минут назад, Камышев Александр сказал:

    только что сохранил и в GetSharedDownloadsPath() и в GetSharedDocumentsPath(), и там и там все доступно для чтения из USB накопителя

    и в описании разница небольшая: 

    Returns the path to the directory where user stores shared downloaded files.

    Returns the path to the directory where documents shared between users are stored.

     Ау меня не видны ни там ни там... 

  15. Пожалуйста проясните ситуацию: Delphi программа, работая на планшете Android, создает файлы и пишет их в каталог Documents на внешнюю карту,

    Путь к каталогу получаю функцией System.IOUtils.TPath.GetSharedDocumentsPath.   Файлы - это текстовые файлы, созданные TStringStream.SaveToFile.

    Файлы видны  в диспетчере файлов планшета и  их содержимое планшетом вполне нормально  читается.

    Подключаю планшет к компьютеру, их компьютер не видит. Вытаскиваю карточку из планшета и вставляю в CardReader на компе. Теперь компьютер через CardReader их на карте видит, файлы вполне читаются и копируются.     

    В каких настройках и где проблема? 

  16.  

    В 23.09.2016 в 21:36, ZuBy сказал:

    никто незнает, все найденные "глюки" решаем по месту

     У меня такой интересный вопрос к ZuBy, другим продвинутым  пользователям а также к Ярославу:  на этом форуме по крайней мере в двух разных темах я видел разные варианты редактированного модуля  FMX.Platform.Android.pas.

    Исправленный вариант есть в этой теме, и еще один я видел в теме, посвященной работе с Intel процессорами под Android-ом.  А есть ли где-нибудь вариант исправленный наиболее полным образом на текущее время? 

    Можно ли его опубликовать? Вопрос не очень праздный.  На проект как всегда очень мало времени, а глюки уже  отняли много нервов. Я очень признателен участникам форума, он   

    реально очень помогает!  В работе с Android я новичок, а так начинал в Delphi, если можно сказать с Turbo Pascal 6.0 во времена DOS. Борьба с Глюками - это наше все!  :-) :-) :-)   

  17. У меня на планшете DEXP Ursus TS170 тоже была такая проблема. Компоненты типа TEdit  и TMemo  подвешивали программу. Хотя на нескольких других планшетах и смартфонах все работало. Допиливание  FMX.Platform.Android.pas указанное выше помогло. Спасибо всем!!!!!

    ЗЫ А сколько еще есть таких глюков?  

×
×
  • Создать...