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

После обновления на Андроид 6.01


Alexs38

Вопрос

Подскажите в какую сторону копать?
После обновления с Андройд 5.0.2 на Андройд 6.0.1 перестал работать FTP-клиент.


Сервер находится на рабочей станции по Win7, а Клиент на Андройде,
все пути верные ничего не менялось, адреса и потры тоже, запись на сервер идет нормально,
слетает только при скачивании!

проверил, слетает именно на этой строчке:

  IdFTP1.Get('ff1.txt', '/sdcard/Arxiv_telefon/zz/Client/ff1.txt', True);

каталог Client находится в памяти телефона 

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

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

  • 0
5 минут назад, Alexs38 сказал:

да забыл самое главное:

все написано на Delphi XE7 и Indy 10.6.1

 

 

Что то мне подсказывает, что Delphi7 не догадывается про Андройд 6.0 ))

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

да уж..., Embarcadero  так быстро обновляется что за ней не успеть, лучше бы сделали упор на качество

XE7 c Андройд 6.01  вроде как все работает нормально кроме Indy FTP причем не работает только скачивание,

пробывал просто записать на это место текстовый файл средствами Delphi - все нормально, пробывал еще

так:

 

   MemStream1:=TMemoryStream.Create;
   Form1.IdFTP1.Get(filNam,MemStream1);

 //  Form1.Memo1.Lines.SaveToStream(MemStream1);

   MemStream1.Position := 0;  // в начало потока
   MemStream1.SaveToFile(PutiTel+filNam);
   MemStream1.Free;

c теми же путями  PutiTel+filNam =  '/sdcard/Arxiv_telefon/zz/Client/ff1.txt'       эффект тот же - слетает 

 

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

а проверить, что за ошибка, уже лень?

скорее всего, нет такого пути и все

indy не поддерживает https на Android 6, поэтому в новых версиях собственные библиотеки

Ссылка на комментарий
  • 0
  • Модераторы
7 часов назад, Alexs38 сказал:

krapotkin,  у меня андроид не подключен по USB, всю отладку делаю под WIN а потом через WiFi кидаю готовый *.apk на телефон, а  в win и в andr 5.02 все работает нормально :)

вы же в курсе что платформы разные? один и тот же код может вести себя по разному

Ссылка на комментарий
  • 0
9 минут назад, ZuBy сказал:

вы же в курсе что платформы разные? один и тот же код может вести себя по разному

точно так у меня есть  кнопки в стиля в которых отслеживаю клики  вин ругает а ios и android  отрабатывает все на ура без каких либо ошибок 

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

Всем спасибо за живое участие! Был немного занят, сегодня решил снова покопаться в проблеме, есть такой метод - убрать все лишнее по максимуму! В итоге дошел до трех кнопок :) в клиенте, сервер на Win7 взял чужой. В итоге остались 3 строчки кода а проблема та же!!!

Может у кого-нибудь есть какие-нибудь мысли на эту тему? Буду очень рад.

Вот полный текст проги:

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Objects,
  FMX.StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdExplicitTLSClientServerBase, IdFTP, FMX.Layouts, FMX.Memo;

type
  TForm1 = class(TForm)
    IdFTP1: TIdFTP;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure IdFTP1Connected(Sender: TObject);
    procedure IdFTP1Disconnected(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}
{$R *.NmXhdpiPh.fmx ANDROID}

procedure TForm1.Button1Click(Sender: TObject);
// вкл FTP
begin
// из-за этой хрени не конектился к FTP-серверам в интернете!
// не нашел информацию про это свойство!
 //   IdFtp1.UseHOST:=false;

    IdFtp1.Host:='192.168.0.98';    // Host
    IdFtp1.Port:=21;               // Port

    idFTP1.Username:='htc820';     // User
    idFTP1.Password:='12345';   // Password
    IdFtp1.Passive:=true;        // пассивный режим FTP
    IdFtp1.Connect;              // подключение к серверу
end;


procedure TForm1.Button2Click(Sender: TObject);
begin

// скачать файл с FTP-сервера
// 'имя_файла_на_сервере','имя_локального_файла'

    IdFTP1.Get('ff1.txt', '/sdcard/Arxiv_telefon/z3/zzClient/ff1.txt', True);  // работает на адроиде 5, не работает на 6

 //  IdFTP1.Get('ff1.txt', 'd:\zzClient\ff1.txt', True);   // работает на Win7
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
// отправить файл на FTP-сервер
// 'имя_локального_файла','имя_файла_на_сервере'

    IdFtp1.Put('/sdcard/Arxiv_telefon/z3/zzClient/ff1.txt', 'ff1.txt');  // работает на адроидах 5 и 6

  //  IdFtp1.Put('d:\zzClient\ff1.txt', 'ff1.txt');  // работает на Win7
end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
    IdFtp1.Disconnect;
end;

 

end.

 

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

да и еще одно, при скачивании программа слетает но в памяти телефона в '/sdcard/Arxiv_telefon/z3/zzClient/ff1.txt' файл ff1.txt все-таки создается но он 0-размера.

 

может кто-нибудь скинет мне  *.apk  этой программульки из 3-х кнопок откомпилированный в Studio 10 Seattle чтобы у меня появился железный стимул переходить на свежую версию :)

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

на всех андроид устройствах нет смысла пользоваться прямым указанием папки

доступные программе папки перечислены в class TPath из System.IOUtils.pas

пример

uses System.IOUtils;

fname := TPath.combine(TPath.GetDocumentsPath, 'myfile.txt');

 

Ссылка на комментарий
  • 0
В 08.11.2020 в 19:23, igor111 сказал:

Проблема именно в фтп инди по-моему, такая же ситуация, только по wifi работает а по мобильной связи нет. Никто так и не разобрался?

в Android начиная уже с 6 вы должны запрашивать разрешение на запись в файл у пользователя каждый раз при попытке этой записи

пример есть в делфи

Ссылка на комментарий
  • 0
35 минут назад, igor111 сказал:

Krapotkin  я ясно написал по вайфай программа работает а по мобильной сети не работает , причем здесь права на запись и версия андроид ?

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

UPD. Может быть проблема и не в записи, а в сетевом доступе. Под отладкой вообще запускали?

Изменено пользователем Tumaso
Ссылка на комментарий
  • 0
29 минут назад, igor111 сказал:

Krapotkin  я ясно написал по вайфай программа работает а по мобильной сети не работает , причем здесь права на запись и версия андроид ?

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

но мобильные-то блокируют только сайты по списку РПН

а тут FTP...

 

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

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

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

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

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

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

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

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

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

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

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