Page 1 of 3 1 2 3 LastLast
Results 1 to 15 of 43

Thread: Bestand openen in App

  1. #1

    Bestand openen in App

    Ik probeer een bestand in te lezen met een App (Mobiele telefoon).
    Maar mijn App kan dit bestand niet gevonden krijgen.

    Bij een bestand op mijn PC geef ik op c:\Map\Map\Bestand
    Nu heb ik inmiddels al van alles geprobeerd maar krijg dit niet voor elkaar, dus hoe pak ik dat aan bij een App ?
    Stel dat ik het bestand Data.db wil openen, welk pad geef ik dan precies op ?

    Click image for larger version. 

Name:	Map.jpg 
Views:	269 
Size:	29.3 KB 
ID:	7248
    Last edited by MMSoft; 12-Apr-16 at 12:03.

  2. #2
    Ik ben al druk bezig geweest met TPath, en met GetHomePath, maar krijg het helaas niet voor elkaar.

    Dus hoe geef ik het Path op als het bestand in de map MMSoft staat ?
    Last edited by MMSoft; 13-Apr-16 at 13:34.

  3. #3
    Registered User TOPX's Avatar
    Join Date
    Apr 2016
    Location
    Bogotá
    Posts
    7
    Quote Originally Posted by MMSoft View Post
    Dus hoe geef ik het Path op als het bestand in de map MMSoft staat ?
    Het pad naar de feitelijke opslag is verschillend tussen mobiele apparaten en besturingssystemen. Kon je /data/data/, /data/storage/, /storage/emulated/0/, /storage/sdcard0/, enz.

    Dus, de manier om te bereiken dat het zou worden met behulp van een GetSharedXXXPath leden van TPath, zoals deze:
    Code:
    function getPath: String;
    begin
      Result := 
        TDirectory.GetParent(
          ExcludeTrailingPathDelimiter(
            System.IOUtils.TPath.GetSharedDocumentsPath
          )
        );
    end;
    En je het ook noemt, als volgt:
    Code:
    var
      dir, bestand, antwoord: String;
    begin
      dir := 'mmsoft';
      bestand := 'data.db';
    
      antwoord := 
        System.IOUtils.TPath.Combine(
          getPath, dir
        );
      antwoord := 
        System.IOUtils.TPath.Combine(
          antwoord, bestand
        );
    end;
    -

  4. #4
    Bedankt !

  5. #5
    System.IOUtils.TPath.Combine( getPath, dir ); //geeft: /storage/sdcard0/Android/data/com.embarcadero.Project1/MMSoft

    Maar ik heb deze map nodig (zie plaatje).

    Ik heb in middels al van alles geprobeerd, maar ik krijg het niet voor elkaar, dus hoe pak ik dit aan ?

    Click image for larger version. 

Name:	Dir.jpg 
Views:	186 
Size:	29.8 KB 
ID:	7257

  6. #6
    Ik ben er inmiddels achter dat dit path werkt: '/storage/sdcard0/MMSoft/

  7. #7
    Het juiste path is dus (althans zo werkt het): '/storage/sdcard0/MMSoft/
    Maar met de bovenstaande code krijg ik dit path: /storage/sdcard0/Android/data/com.embarcadero.Project1/MMSoft

    Hoe kan ik deze code aanpassen zodat deze wel het juiste Path geeft ?

  8. #8
    Registered User TOPX's Avatar
    Join Date
    Apr 2016
    Location
    Bogotá
    Posts
    7
    Zeker weten dat je al door nu, maar met een try-and-error ik net ontdekt dat het gebruik van
    GetSharedPicturesPath,
    GetSharedCameraPath,
    GetSharedMusicPath,
    GetSharedAlarmsPath or
    GetSharedRingtonesPath
    in plaats van GetSharedDocumentsPath een meer geschikte weg terug.
    -
    ... dank u voor het verdragen van mij met mijn arme Nederlanders.

  9. #9
    Bedankt.
    Ik ga hier binnenkort eens naar kijken.

  10. #10
    Is hier inmiddels al een oplossing voor ?

    De mappen structuur op een mobiel is altijd zo wazig, dus wat is de beste manier om dit path op te vragen ?

  11. #11
    Quote Originally Posted by MMSoft View Post
    Bedankt.
    Ik ga hier binnenkort eens naar kijken.
    Dit is overigens nooit gelukt, maar had dit wel even moeten vermelden (anders is het net of ik er geen moeite voor doe en dat is wel degelijk zo).
    Ik wou hier de oplossing plaatsen, maar die heb ik helaas tot op vandaag niet gevonden.

  12. #12
    Ik neem aan dat dit bestand mee geleverd wordt met je app.
    Dan kan je aangeven via deployment waar het bestand moet komen.

    Ik weet niet welke delphi je gebruikt dus hoop dat alles op dezelfde plek te vinden is als bij mij

    Via Project > Deployment kan je aangeven welke bestanden je wilt inpakken en dus ook wilt plaatsen bij de installatie.
    Je kan dan ook aangeven waar het bestand terecht moet komen.

    Als je "Remote Path" op .\ laat staan kan je het bestand vinden via TPath.Combine(TPath.GetHomePath, 'data.db');

  13. #13
    Omdat het alleen voor eigen gebruik is heb ik alle Data bestanden (die ik nog wel eens wijzig en aanvul) in 1 Map staan (deze plaats ik los van de App in deze map).
    Ik ben opzoek naar een mogelijkheid om de Root van mijn telefoon op te vragen.

    Zoiets als:
    Root_Path := …

    En dan als path dit gebruiken:
    Memo1.Lines.LoadFromFile( Root_Path + '/MMSoft/Test.txt' )

    De Root_Path zou er bij mij dan zo uit moeten zien: /storage/emulated/0

    Is dit mogelijk denken jullie ?

  14. #14
    Als je "Remote Path" op .\ laat staan kan je het bestand vinden via TPath.Combine(TPath.GetHomePath, 'data.db');
    Als test lever ik het bestand nu mee met de app., en laat "Remote Path" op .\ staan.

    path := TPath.Combine(TPath.GetHomePath, 'Test24.txt');
    Showmessage( Path );

    Dit Geeft: /data/user/0/com.embarcadero.Test_1/files/Test24.txt
    Het bestand lijkt dus gevonden te zijn.

    Maar dit werkt dan weer niet (het is een normaal tekst bestand dat normaal door Memo weergegeven kan worden):

    Memo1.Lines.LoadFromFile( path );

    Fout melding: Cannot open file '/data/user/0/com.embarcadero.Test_1/files/Test24.txt'. No such file or directory

    Ik heb inmiddels van alles geprobeerd.

    Dit werkt wel:
    "Remote Path" op "assets\" zetten.

    path := TPath.GetPublicPath;
    Memo1.Lines.LoadFromFile( path + '/Memo24.txt' )

    Maar dan staan de bestanden verspreid in diverse mappen en zou ze graag in een zelf gekozen map hebben staan zoals ik nu ook deed, maar bij XE10.3 heb je daar blijkbaar geen toegang meer toe en krijg je te maken met user Permission en daar kom ik dus ook niet verder mee.

    Wie weet een oplossing ?
    Last edited by MMSoft; 27-Aug-19 at 13:23.

  15. #15
    Als test lever ik het bestand nu mee met de app., en laat "Remote Path" op .\ staan.

    path := TPath.Combine(TPath.GetHomePath, 'Test24.txt');
    Showmessage( Path );

    Dit Geeft: /data/user/0/com.embarcadero.Test_1/files/Test24.txt
    Het bestand lijkt dus gevonden te zijn.
    Dit betekent niet dat het bestand gevonden is. Dit is alleen een samengesteld pad.
    Daar zit (voor zover ik weet) geen controle op of het pad ook daadwerkelijk correct is.

    Dan zal je FileExists moeten gebruiken (of wat daar dan ook de android variant van is)

    Edit:
    Kijk hier even naar https://stackoverflow.com/questions/...les-on-android

Page 1 of 3 1 2 3 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •