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
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?
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.
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 ...
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
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?
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.
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,
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?
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.