S0lexV
-
Постов
13 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные S0lexV
-
-
В принципе направление куда двигаться я понял, спасибо за подсказку!
-
Судя по всему проблема действительно в этом, в AndroidManifest прописано следующее:
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" /> <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MANAGE_MEDIA" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:requestLegacyExternalStorage="true">
Но файлы по прежнему не видятся. Видимо нужно в RunTime делать запрос на получение права?
Можете подсказать пример как это реализовать на C++ ?
-
Такой вариант пробовал тоже:
TStringDynArray A = TDirectory::GetFiles(TPath::GetSharedDownloadsPath(), "*.car", TSearchOption::soTopDirectoryOnly); FindBox1->RowCount = A.Length; for(int i = 0; i < A.Length; i++) FindBox1->Cells[0][i] = A[i];
-
Доброго времени!
Использую следующий код для поиска файлов с расширением ".car" на устройстве:DownloadPath = System::Ioutils::TPath::GetSharedDownloadsPath(); TSearchRec sr; FindFirst( DownloadPath + "/*.car", faAnyFile, sr); { do { if ( sr.Name=="." || sr.Name==".." ) {} else if ( (sr.Attr & faDirectory) == faDirectory ) {} else { FindBox1->RowCount ++; FindBox1->Cells[0][i] = sr.Name; i++; } } while ( !FindNext(sr) ); FindClose(sr); }
Принцип работы таков, что из приложения сохраняется файл в данную директорию, а затем его нужно подгрузить. На старом Андроиде 7 все работает как надо, в StringGrid падают названия файлов с нужным расширением, но на версии 13 проблема заключается в следующем: если создать файл из этой копии приложения, а затем попытаться его найти то он видится и без проблем загружается его содержимое, но если переустановить приложение (тупо снести и заново поставить), в этом случае приложение просто перестает видит какие либо файлы. Пусто. И опять если создать новый файл, то приложение видит только свежий файл(ранее созданные не отображает, хотя в проводнике я их вижу). В User permission есть права на Read / Write external storage, правда в телефоне они видятся как "Доступ к видео и фото" и Доступ к музыке и аудио". Что может быть ? заморочка последних версий Андроида ?
Также был переустановлен Билдер последней версии, установлены последние SDK/NDK. Пересобрал новый проект и проблема все равно осталась...
-
Доброго времени!
Друзья, подскажите в чем может быть проблема...
На форме TabControl с некоторыми вкладками. Есть StyleBook с загруженным стилем. Применяю стиль, сначала все ок но потом стиль пропадает у первых двух вкладок TabControla.....
Компилирую под винду - все ок, компилирую на Андрэ - результат на скриншоте.
-
Грубо но работает, кто знает код лучше напишите сюда
Загрузка из файла в SG
TStringList *ts1=new TStringList; TStringList *ts2=new TStringList; TStringList *ts3=new TStringList; ts1->LoadFromFile(path+"car.car"); // Подгружаем файлик ts2->StrictDelimiter = true; ts2->Delimiter = '#'; ts2->DelimitedText = ts1->Text; // По разделителю разбиваем текст и сливаем его в ts2 ts3->Text = ts2->Text; Memo1->Lines->Text = ts3->Text; // В мемо для наглядности int ic=0,ir = 0;// Счетчики строк и столбцов for ( int j = 0; j < ts3->Count; j++) { if(ts3->Strings[j].operator ==('*')) { ic=0; ir++; sg->Cells[ic][ir] = ts3->Strings[j+1]; } else { sg->Cells[ic][ir] = ts3->Strings[j]; ic++; } }
Содержимое файла должно быть вида:
String 1#1#2#3#4
*#String 2#1#2#3#4
*#String 3#1#2#3#4
# - разделитель, * - идентфикатор новой строки
Результат работы программы(как отобразится в SG):
String 1 1 2 3 4
String 2 1 2 3 4
String 3 1 2 3 4
-
14 минуты назад, Alex7wrt сказал:
и потом удалить stringlist
да неужели
-
да не нужен мне stringlist, мне нужно в STRINGGRID запихать текст из файла!
-
ошибка, не влияющая на решение задачи.... Мне нужно залить в SG текст по делимитеру
-
Друзья, подскажите пожалуйста как реализовать на с++ в FMX загрузку и сохранение текста. В VCL раньше делал так:
TStringList *sl = new TStringList; sl->LoadFromFile(path+"car.car"); for(int i = 0 ; i<sg->RowCount ; i++) { sg->Rows[i]->DelimitedText=sl->Items->Strings[i]; }
Но в FMX нет метода "Rows"..... В инете есть примеры на делфи, но на C++ нет, переделать не получается. Очень нужно! Пожалуйста!
-
Проблема в файле bmp...
JPEG грузит без проблем. Разве с БМП нельзя работать ?
-
Доброго времени!
Только начал знакомится с FMX, казалось бы от VCL отличий не так уж и много но все же....
Пытаюсь загрузить картинку в ImageViewer (в Image тоже пробовал).ImageViewer1->Bitmap->LoadFromFile(System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), "1.bmp"));
Но получаю ошибку (failed to loading bitmap "путь_к_папке_с_файлами_приложения" )
В deployment загружен файл "1.bmp", remote path прописан assets\internal
Пробовал похожим способом загрузить с помощью deployment текстовый файл в мемо все работает!
Когда компилю под винду - картинка грузится, под андроид: вылетает вышеуказанная ошибка
PS Среда C++B10 Seattle
Не корректно работает поиск файлов
в Работа с файловой системой
Опубликовано · Изменено пользователем S0lexV
Пытаюсь адаптировать под ++, на шаге
if TJEnvironment.JavaClass.isExternalStorageManager = false then
Нет метода isExternalStorageManager. А у
Intent:= TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
Нет метода
ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
Мой код примерно такой:
if(TJBuild_VERSION ::JavaClass->SDK_INT>=30) { if(TJEnvironment::JavaClass-> //нет { _di_JIntent intent; intent = TJIntent::JavaClass->init(TJIntent::JavaClass-> // нет); } }