Форум программистов, компьютерный форум, киберфорум
Delphi: FireMonkey
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 29.08.2019
Сообщений: 20
1

Как получить доступ к TPatch

29.08.2019, 21:07. Показов 2107. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Делал проект, где хотел реализовать сохранение резервной копии папки с файлами.
Это всё работает отлично. Если выйти из приложения и снова зайти, то можно извлечь копию папки из указанного пути
Но есть один момент. Если произвести заново компиляцию или установку apk на телефон, то
мне сообщает об недоступности того пути, куда я сохранял копию папки. Видится мне, что этот путь где-то хранится, до того, пока заново не произвести установку. Проверить визуально наличие файлов я не могу, так как использую путь к внутренней памяти, которая скрывает мои файлы. Что тут требуется сделать?

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
Копирую папку с файлами по другому TPath
 
procedure TForm4.Button12Click(Sender: TObject);
begin
Tdirectory.Copy(TPath.GetDocumentsPath + '/' + 'dir',
TPath.GetHomePath + '/' + 'dircopy');
end;
 
Копирую папку обратно
procedure TForm4.Button13Click(Sender: TObject);
begin
Tdirectory.Copy(TPath.GetHomePath +  '/' + 'dircopy',
TPath.GetDocumentsPath +  '/' + 'dir');
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2019, 21:07
Ответы с готовыми решениями:

Как получить доступ к ftp, http и ssh по VPN через роутер, если есть доступ к samba?
Есть системник с Ubuntu Server 12.04. Он находится за роутером. На системнике стоит PPTP VPN. На...

Как получить доступ к файлам через сетевую папку (создать файлы в сетевой или просто получить список)?
Как получить доступ к файлам через сетевую папку (создать файлы в сетевой или просто получить...

как получить доступ?
Здравствуйте! Я выполняю нужный мне запрс при помощи ADOQuery. Подскажите как мне получить доступ...

Как получить доступ
Если вы использовали когда нибудь систему сборки Scons то как вы получали доступ к установке в...

10
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
29.08.2019, 22:16 2
папки GetDocumentsPath GetHomePath доступны только самому приложению и убиваются вместе с приложением при его удалении
0
0 / 0 / 0
Регистрация: 29.08.2019
Сообщений: 20
29.08.2019, 22:32  [ТС] 3
Тогда выход какой? Прописывать ручками пути типа '/storage/sdcard/........./ ?
и создавать свои пути. Но я изначально не любитель таких методов, так как возможно на другом устройстве такой путь
и работать не будет. А какие ещё есть варианты?
0
0 / 0 / 0
Регистрация: 29.08.2019
Сообщений: 20
30.08.2019, 12:52  [ТС] 4
В общем, если кому надо, я пока использовал такой вариант:

в папке проекта, в AndroidManifest.template.xml и AndroidManifest.xml выставил разрешение на запись и чтение с внешней памяти устройства

XML
1
2
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Далее в проекте:
Delphi
1
var  MyPath:TFileName='/storage/sdcard0/MyFolder';

В Deployment выставил
значение assets/external

B проекте:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm4.Button12Click(Sender: TObject);
begin
Tdirectory.Copy(MyPath + '/' + 'dir',
MyPath + '/' + 'dircopy');
end;
 
procedure TForm4.Button13Click(Sender: TObject);
begin
Tdirectory.Copy(MyPath + '/' + 'dircopy',
MyPath + '/' + 'dir');
 
end;
С таким вариантом всё прекрасно робит. Только нужно ещё файлы и папки сделать скрытыми.
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
30.08.2019, 13:48 5
и в целом зря
потому что пути /storage/sdcard0/ запросто может и не быть...
кроме того, при работе в новых ОС Андроид, вам мало иметь разрешение в манифесте (оно, кстати в свойствах проекта есть, можно не лазить руками)
нужно еще каждый раз запрашивать разрешение пользователя
0
0 / 0 / 0
Регистрация: 29.08.2019
Сообщений: 20
30.08.2019, 20:55  [ТС] 6
Да, я понимаю это, но то крайность и могу только конкретно для своего устройства сделать так. Поэтому и хотел найти иные правильные решения.

Добавлено через 5 часов 44 минуты
А Вы Можете подсказать насчёт TDirectory.SetAttributes?
Сколько перерыл форумов, ничего подходящего не нашёл. С Первым параметром понятно, а вот второй никак не хочет рабоать.
Не могу сообразить TDirectory.SetAttributes('fileName', FileAttributes......); вот этот второй параметр что то требует, он подчёркивает красным. Как с ним рабоать, может есть примеры внятные?
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
30.08.2019, 22:20 7
чем не подошли папки GetSharedxxx ?
0
0 / 0 / 0
Регистрация: 29.08.2019
Сообщений: 20
31.08.2019, 00:38  [ТС] 8
Да, хорошо что вы подсказали. У меня для манёвра негусто путей


Delphi
1
2
3
4
5
6
7
TPath.GetSharedRingtonesPath;
TPath.GetSharedDownloadsPath;
TPath.GetSharedAlarmsPath;
TPath.GetSharedMoviesPath;
TPath.GetSharedMusicPath;
TPath.GetSharedCameraPath;
TPath.GetSharedPicturesPath;

путь TPath.GetSharedDocumentsPath не подходит, так как образуется такая же
Android\data\com.embarcadero.Project4\ в которой все файлы удаляются к чёрту.

Единственный подходящий выбор это TPath.GetSharedDownloadsPath;
Вот с ним всё работает как надо. Всё сохраняется, не зависимо от удаления приложения.


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
var
  Form4: TForm4;
   MyPath: string;
 
 
procedure TForm4.FormCreate(Sender: TObject);
 
begin
 
  MyPath:=TPath.GetSharedDownloadsPath;
 
end;
Теперь только как сделать их скрытыми?
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
31.08.2019, 07:47 9
ну же по каждой функции есть оф. доки, и там написано, что и как
нужно их просто прочитать
например, вот
http://docwiki.embarcadero.com... PublicPath
0
0 / 0 / 0
Регистрация: 29.08.2019
Сообщений: 20
31.08.2019, 10:11  [ТС] 10
Там я уже лазил, но там примеров нет, только описание метода. Но что-то не получается. Вот я пишу метод

Delphi
1
TFile.SetAttributes('C:\Test3\test1.txt', [TFileAttribute.faHidden]);
и компилятор ругается на faHidden что это неправильный тип Erroneous type.

Чего то не хватает, я чего то недопонимаю.
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
01.09.2019, 09:44 11
у меня не ругается совершенно, компилирует

есть замечательная вещь - исходники
делаем Ctrl+Click и проваливаемся туда в System.IOUtils.pas
и видим там
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
{$IFDEF MSWINDOWS}
  TFileAttribute = (faReadOnly, faHidden, faSystem, faDirectory, faArchive,
    faDevice, faNormal, faTemporary, faSparseFile, faReparsePoint, faCompressed,
    faOffline, faNotContentIndexed, faEncrypted, faSymLink) platform;
{$ENDIF MSWINDOWS}
{$IFDEF POSIX}
  TFileAttribute = (faNamedPipe, faCharacterDevice, faDirectory, faBlockDevice,
    faNormal, faSymLink, faSocket, faWhiteout, faOwnerRead, faOwnerWrite,
    faOwnerExecute, faGroupRead, faGroupWrite, faGroupExecute, faOthersRead,
    faOthersWrite, faOthersExecute, faUserIDExecution, faGroupIDExecution,
    faStickyBit) platform;
{$ENDIF POSIX}
faHidden бывает только под windows
если у вас Traget Platform - Android, то тут сразу две ошибки
путь такой не бывает и типа такого тоже нет
0
01.09.2019, 09:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2019, 09:44
Помогаю со студенческими работами здесь

Как получить доступ к памяти ?
Добрый день. Не подскажет ли кто: &quot;Подправляю&quot; чужую DLL-ку (Win32). Понадобилось сохранить...

Как получить доступ к переменной?
не могу получить значение переменной username

Как получить root-доступ?
Подскажите, как получить рут доступ на устройстве asus fonepad ME371MG 3G . За ранее спасибо.

Как из VB получить доступ к БД в и-нете?
Привет всем! Как из VB получить доступ к БД в и-нете? Хочу из локальной проги на VB...

Как получить доступ к фрагментам?
пытаюсь написать приложение. в которм будет несколько страниц со списками объектов. Объект из...

Как получить доступ к данным
Подскажите пожалуйста как получить доступ к полученой таблице после SQL-запроса в компонентах ADO?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru