• 0
Alexs38

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

Вопрос

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


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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

20 ответов на этот вопрос

  • 0

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

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
5 минут назад, Alexs38 сказал:

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

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

 

 

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

zairkz понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
2 минуты назад, Vitaldj сказал:

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

Ну описался, конечно XE7

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

или думаешь пришла пора перейти на Embarcadero RAD Studio 10 Seattle Architect

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
7 минут назад, Alexs38 сказал:

или думаешь пришла пора перейти на Embarcadero RAD Studio 10 Seattle Architect

 

Давно пора! Только на Берлин

zairkz понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 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

путь есть вставляю    //  Form1.Memo1.Lines.SaveToStream(MemStream1);

вместо  Form1.IdFTP1.Get(filNam,MemStream1);

файл нормально записывается :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

я тоже сначала подумал что не дает записывать  в  '/sdcard/Arxiv_telefon/zz/Client/ff1.txt'       

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

ну, так отладчик хоть и кривущий, но часто перед смертью говорит человеческим голосом

молчит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Я уже писал об этой проблеме. Её не решить, что-то совсем внутри XE7 делает некорректно.

zairkz понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
7 часов назад, Alexs38 сказал:

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

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

master webs понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
9 минут назад, ZuBy сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

да даже использование/неиспользование Free колоссально отличает Win программы от 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');

 

Andrey Efimov и wamaco понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу