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

S0lexV

Пользователи
  • Постов

    13
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные S0lexV

  1. Пытаюсь адаптировать под ++, на шаге

    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-> // нет);
    	  }
    	}
  2. Судя по всему проблема действительно в этом, в 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++ ?

  3. Доброго времени!
    Использую следующий код для поиска файлов с расширением ".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. Пересобрал новый проект и проблема все равно осталась...

  4. Доброго времени!

    Друзья, подскажите в чем может быть проблема...

    На форме TabControl с некоторыми вкладками. Есть StyleBook с загруженным стилем. Применяю стиль, сначала все ок но потом стиль пропадает у первых двух вкладок TabControla.....

    Компилирую под винду - все ок, компилирую на Андрэ - результат на скриншоте.

     

    Capture+_2017-10-10-23-26-31.png

  5. Грубо но работает, кто знает код лучше напишите сюда

    Загрузка из файла в 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

  6. Друзья, подскажите пожалуйста как реализовать на с++ в 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++ нет, переделать не получается. Очень нужно! Пожалуйста!

  7. Доброго времени!

    Только начал знакомится с 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

     

×
×
  • Создать...