• 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
5 минут назад, Alexs38 сказал:

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

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

 

 

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

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


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

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

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

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


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

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

 

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

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


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

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


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

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

 

 

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


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

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

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

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


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

 

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


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

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