TMSFMXCloudDropBox v3.7.1.0 with Delphi 11

an iPad/Android App recompiled with Delphi11 is using this component to download files from DropBox. It worked with previous versions of Delphi 10.1,10.2,10.3 and previous versions of the Cloud Pack.
There is a ListView that is showing the content of the DB root dir. When clicking on an item of the list i have the following (partial) code:

var
   SelFolder : TTMSFMXCloudItem;

begin
     CurrIdx := LVdrb_Cloud.Items[ItemIndex].Tag;
     if CurrIdx < DrBEntriesList.Count
        then begin
        isFolder := DrBEntriesList.Items[CurrIdx].ItemType = TTMSFMXCloudItemType.ciFolder;
        if isFolder
           then begin
           SelFolder := DrBEntriesList.Items[CurrIdx];
           setLength(DrBParents, 1 + DrBParentsElm);
           DrBParents[DrBParentsElm] := SelFolder;
           inc(DrBParentsElm);

           Ldrb_Cloud.Text := SelFolder.FileName;
           lString := SelFolder.FileName;

           try
              DrBEntriesList := DropBox.GetFolderList(SelFolder);
              lString := '';
              except
              DrBEntriesList := nil;
              end;

If the clicked item is a folder, then the call DropBox.GetFolderList is raising an exception with the message "Missing Folder Path" at this code part from "GetFolderListInt", in the file FMX.TMSCloudCustomDropBox:

  if Assigned(Folder) then
  begin
    if (Folder as TDropBoxItem).Path <> '' then           **<----- here**
      encfolderpath := UTF8Encode((Folder as TDropBoxItem).Path)
    else
      raise Exception.Create('Missing Folder Path');
  end
  else
    encfoldername := '';

What can i do to get the contens of the folder?
Thanks

Hi,

We are not aware of any issues with TTMSFMXCloudDropBox to get the folder contents.
Can you please provide some more information so I can further investigate this?

Does the SelFolder have it's Path value assigned?
Does the issue also happen on Windows or only on Android/iOS?
Is the CloudStorage demo working as expected for you?

Hi Bart,

as you can see in the furst code snipet SelFolder (defined as TTMSFMXCloudItem) is assigned in the seventh line:
SelFolder := DrBEntriesList.Items[CurrIdx];
TTMSFMXCloudItem has no "Path" so the SelFolder also has no Path.
SelFolder need to be a TTMSFMXCloudItem as the procedure DropBox.GetFolderList requires it to be TTMSFMXCloudItem.

In the second snipet the Folder (it's the SelFolder) is type casted to a TDropBoxItem (that has a Path, but the Path is not set anywhere.

The CloudStorage demo is working, on Windows and on Android, but it doesn't use the procedure "GetFolderList" ...

I modified my app to compile and run on Windows - same behaviour: calling TTMSFMXCloudDropBox.GetFolderList raises the exception with the message "Missing Folder Path".
Well, no wonder, as the path is empty / not allocated ...

Hi Viktor,

Please note that a path value is required to be able to use the GetFolderList with TTMSFMXCloudDropBox.

You can cast a TTMSFMXDropBoxItem to a TTMSFMXCloudItem while retaining the path value to pass it as the GetFolderList parameter.

Hi Bart,

sorry, but the GetFolderList expects a TTMSFMXCloudItem that has no Path ...
I wonder how come the same (unmodified) source code worked in iOS in the last four years, with previous versions of Delphi and TMS FMX Cloud Pack

Hi Viktor,

Please note that TDropBoxItem inherits from TTMSFMXCloudItem. If you cast a TDropBoxItem to TTMSFMXCloudItem the Path value will persist and can be accessed if the TTMSFMXCloudItem is later casted to a TDropBoxItem again.

I have not been able to reproduce an issue with TMS FMX Cloud Pack in combination with Delphi 11.
Adding the GetFolderList call to a click on the TreeView in the CloudStorageDemo is working as expected:

procedure TForm4.ShowItem;
var
ci: TTMSFMXCloudItem;
begin
if Assigned(TreeView1.Selected) then
begin
ci := TTMSFMXCloudItem(TTMSFMXCloudTreeViewItem(TreeView1.Selected).DataObject);
TMSFMXCloudDropBox1.GetFolderList(ci);
end;
end;

I'm not sure what could be causing the issue on your side as there have been no recent code changes in this area in TMS FMX Cloud Pack.
Can you reproduce the issue in a new standalone project?

Hi Bart,

i changed all corresponding variables to TDropBoxItem(s), then casted to TTMSFMXCloudItem(s) where necessary -> still the same exception is beeing raised "Missing Foöder Path".
I know the Storege Demo is using a TreeView - I don't want to use a TreeView as many customers tend to have several hunderts (even up to 2-3000) media files, distributed in a lot of folders and subfolders - that gives a very long list in the TreeView. I prefer to only show the content of the current folder - gives a cleaner view on the files.
I'm using "DropBox.GetFolderList(nil)" to get the files and folders of the root dir. Then subsequently "DropBox.GetFolderList(SelFolder)" to get the content of the folders.
I will move all DropBox code to a standalone project and send it to you.

Hi Bart,

did you received the standalone project, that i have send you via reply to your email?

Hi Viktor,

I haven't received any emails from you. Can you please try sending your project again?
Please use a ZIP file and make sure to remove any executable files.

Hi Bart,

just resent the zip file (containig no executable) as a reply to the email from you "supportcenter@tmssoftware.com".

Hi Viktor,

Can you please send the zip file to help@tmssoftware.com or in a personal message as a reply to this message on the Support Center website?

Hi Bart,

i have sent the zip file to help@tmssoftware.com and attached to a personal message.
Hope you'll get it now.

Hi Viktor,

I received your zip file now. The solution for this issue was provided in a reply to the personal message.

Hi Bart,

any news on the matter?

Hi Bart,
I got it working using "GetFolderListHierarchical" instead of "GetFolderList" - thanks for the hint!

But now I installed the latest TMSFMXCloudPack v3.7.2.1. Unfortunately the Dropbox is not usable on Android anymore, because instead of showing the browser for authentication i get an AV stating "JCustomTabsIntent_Builder not found".
Am I doing something wrong?

With the latest version CustomTabs.jar file is no longer necessary in Delphi 11. Please move it from the Android libraries, clean and rebuild your application

thank you for the hint, but unfortunately my Delphi 11 is refusing to do the clean – it simply doesn’t execute any of functions from the popup above or below “clean”.
Is there any other way to do a clean, except from that popup?

Thank you,
Victor

i restored my pc to the state from one month ago and Delphi 11 does clean the project.
Unfortunately, with CustomTabs.jar removed and Cloud v3.7.2.1 the same error message is displayed instead of the login in a external browser.