Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   iOS Datein zur Laufzeit laden (https://www.delphipraxis.net/190036-datein-zur-laufzeit-laden.html)

XXcD 23. Aug 2016 17:05

Datein zur Laufzeit laden
 
Hallo,

ich habe ein Problem Datein in iOS zur Laufzeit zu laden.
Habe das ganze mit einem Bitmap und Testweise auch mit einer Textdatei probiert.

Delphi-Quellcode:
      image:=fmx.graphics.tbitmap.CreateFromFile(TPath.GetHomePath+'/Horizon_Background.bmp');
      try
      PaintBox1.Canvas.DrawBitmap(image, RectF(0,0,image.Width,image.Height), RectF(0,0,image.Width,image.Height), 255);
      finally
       image.Free;
      end;
Und die Textdatei:
Delphi-Quellcode:
      Memo1.Lines.Loadfromfile(TPath.GetHomePath+'/test.txt');
Ich bekomme beim Laden immer eine Fehlermeldung.
-Fehler beim Laden des Bitmaps
-...test.txt is no such file or directory

Weiß jemand wie man in Firemonkey die Datein laden kann?

himitsu 23. Aug 2016 17:16

AW: Datein zur Laufzeit laden
 
Pfade verbinden besser so
Delphi-Quellcode:
TPath.Combine(TPath.GetHomePath, 'test.txt')

Das achtet auf den "richtigen" Path-Delimiter und ob am "HomePath" schon ein / oder \ dran hängt.

"eigentlich" war es im Delphi mal so, dass xxxDir keinen abschließenden Delimiter besitzt und xxxPath besitzt einen, aber Boland/CodeGear/Embarcadero haben da manchmal bissl "Mist" gebaut und ihre eigenen Pläne nicht richtig durchgesetzt.

Und hat dein Programm auch Zugriff auf das HomePath-Verzeichnis?

XXcD 23. Aug 2016 17:35

AW: Datein zur Laufzeit laden
 
Ich habe das schon mit
Delphi-Quellcode:
TPath.Combine(TPath.GetHomePath, 'test.txt')
probiert, half leider auch nicht.

Falls ich wirklich kein Zugriff auf mein Home Verzeichnis haben sollte, wie kann ich das denn ändern?
Habs auch schon mit
Delphi-Quellcode:
TPath.GetDocumentsPath
und die Datein in StartUp/Documents kopiert, funktioniert aber auch nicht.

Rollo62 23. Aug 2016 20:04

AW: Datein zur Laufzeit laden
 
Bist du sicher das es wirklich da ist
Delphi-Quellcode:
FileExists(...)
?

Rollo

XXcD 23. Aug 2016 20:40

AW: Datein zur Laufzeit laden
 
Ja ich bin mir sicher, dass die Datei da ist.

Konnte jetzt eine Textdatei laden die sich im Documents Ordner befindet.
Leider lassen sich aber immer noch keine Bitmaps von da laden.

Die Datein habe ich überigens mit dem Bereitstellungsassistenten der Anwendung hinzugefügt.

Rollo62 25. Aug 2016 10:44

AW: Datein zur Laufzeit laden
 
Versuchs mal damit:

Delphi-Quellcode:
function Bmp_LoadFromStream( const aStrm         : TStream;
                              var   bmp          : TBitmap;
                              const sExt          : String) : Int64;
var
  aBCM: TBitmapCodecManager;
  aBMS: TBitmapSurface;

begin
    Result := 0;

    if not Assigned(aStrm) or not Assigned(bmp) then
      Exit;

    aBCM    := TBitmapCodecManager.Create;
    aBMS    := TBitmapSurface.Create;

    try

      begin

          if aBCM.LoadFromStream( aStrm,   aBMS ) then // This is no more reches
          begin
            Result := aStrm.Size; // the Operation was OK so far
          end else
          begin
            Result := 0; // the Operation was NOT OK
          end;

      end;

      if Result > 0 then
      begin // Copy was OK, so do Assign
        bmp.Assign( aBMS );
      end;

    finally
      aBMS.Free;
      aBCM.Free;
    end;

end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz