LoadFromFile() in Android-Umgebung



  • Kann jemand weiterhelfen?

    Ich versuche mich gerade mit Embarcadero - geräteübergreifenden Anwendung. Von meinem Android Handy möchte ich eine Datei von meiner Fritz-Box laden.

    Unter Windows funktioniert folgender Code ohne Probleme:

    AnsiString TeilStr1 = "\";
    AnsiString TeilStr2 = "\fritz.box\PC-Home\Elements\Filme\FilmDatenbank\KatalogList.csv";
    FilmKatalogKomplett->LoadFromFile(TeilStr1 + TeilStr2 );

    Das geht aber nicht in der Android-Umgebung. Trotz googelns bin ich aus den angebotenen Lösungsansätzen schlau geworden. Hat jemand eine relativ einfache Lösung für dieses Problem.

    Schon jetzt: Herzlichen Dank für die mögliche Unterstützung.

    Werner



  • Ich würde eher die schlaue Lösung benutzen



  • ok.. manchmal ist das Schlaue auch das Einfache (-;



  • ... um keine Mißverständnisse zu produzieren: ich habe leider ein "nicht" vergessen. Kurz, ich bin aus den gegoogelten Vorschlägen nicht schlau geworden..



  • Tut mir Leid ich hab dich schon richtig verstanden.

    Aber vielleicht kann ich dir besser helfen wenn du deinen Beitrag besser formatierst und konkreter wirst wo das Problem ist (Fehlermeldungen, ...).



  • In der Android-Umgebung wir folgende Fehlermeldung ausgeben:
    "Cannot open file "/\\fritz.box\PC-Home\Elements\Filme\FilmDatenbank\KatalogList.csv". Not a directory"

    Meine Vermutung ist, dass Android ein anders Format des Strings erwartet.



  • Schon double-Backsläshes ausprobiert? Also

    AnsiString TeilStr1 = "\\";
    AnsiString TeilStr2 = "\\fritz.box\\PC-Home\\Elements\\Filme\\FilmDatenbank\\KatalogList.csv";
    FilmKatalogKomplett->LoadFromFile(TeilStr1 + TeilStr2 );
    

    Und ächz... Embarcadero. Du lässt dich auch im Puff peitschen, oder?



  • Gut. Ich war wohl gestern etwas zu wuschig.
    Double-Backsläshes -'hatte ich gedacht'- habe ich gemacht. Nun gut, ich habe jetzt folgendes versucht:

    AnsiString TeilStr1 = "\\";
    AnsiString TeilStr2 = "\\fritz.box\\PC-Home\\Elements\\Filme\\FilmDatenbank";
    AnsiString TeilStr3 = "\\KatalogList.csv";
    FilmKatalogKomplett->LoadFromFile(TeilStr1 + TeilStr2 + TeilStr3);
    

    Funktioniert unter Windows!
    Funktioniert aber eben nicht in der Android-Umgebung und wird dort mit der oben angegeben Fehlermeldung bemängelt.

    😊 und das mit dem Puff. Sollte alles halt schnell gehen. Ich hab ja schon Probleme den Code hier im Forum richtig, für andere nachvollziehbar zu formatieren. ☺
    Hoffentlich klappt das jetzt.



  • Kann eine VCL app denn einfach so auf ein SMB share zugreifen? Ich hab mal ne minute aus langeweile gegoogelt, aber bin nichtmal schluessig wonach ich bei "android + vcl" suchen muss...LoadFromFile finde ich viele, aber keine die wirklich passend fuer den fall hier aussieht.

    Wenn der path im error grundsaetzlich mit / beginnt, wuerde ich ggf. mal nach etwas wie PathCombine suchen, oder etwas in das du einfach einen path steckst, und er fuer das aktuelle OS korrekt hinten raus faellt.



  • Wird so nicht funktioniere. Das es unter Windows funktioniert liegt halt daran dass dein Windows account zugriff auf den SMB share auf der Fritzbox hat.
    Unter Android musst du explizit eine API nutzen, welche SMB Shares unterstützt.



  • @Werner-Kraus sagte in LoadFromFile() in Android-Umgebung:

    und das mit dem Puff. Sollte alles halt schnell gehen. Ich hab ja schon Probleme den Code hier im Forum richtig, für andere nachvollziehbar zu formatieren.

    Ich übersetze mal DocShoes Kommentar: Embarcadero konnte in der letzten Zeit nicht mehr mit Qualität überzeugen und hat mit seiner Kundenpolitik einige Nutzer vergrätzt.

    Das Ganze war auch von Thema im Form: Nun weg vom Embarcadero



  • Erst mal Danke für die Hinweise. Ich war wohl etwas zu naiv und dachte, dass sich eine LoadFromFile-Anweisung relativ einfach und unkompliziert auch in der Android-Umgebung realisieren läßt.
    Trotzdem sollte es ja irgenwie - auch aus Android - möglich sein, Dateien aus dem vorhanden Netzwerk zu laden. 🙁

    LG Werner



  • Dazu kannst du die Indy-Komponente IdHttp benutzen, s. z.B. How to load PNG files from internal network into Android? (ob nun Bilddatei oder Textdatei ist ja völlig gleich).