2016-07-30 3 views
0

Ich arbeite an einer App in Delphi XE8.Wie lade ich ein Bild zu einer Apk in Delphi XE8

Wenn ich das Programm auf meinem Handy laufen, es gibt mir eine Fehlermeldung:

Loading bitmap failed(image.png)

Mein Code funktioniert wie folgt:

if ListBox1.ItemIndex = 0 then 
begin 
    img.bitmap.LoadFromFile('Image.png'); 
    iMin:= Round(iNumber * 1); 
    iMax:= Round(iNumber *13.24); 
    iAvg:= Round(iNumber * 2.59); 
    label7.Text:= inttostr(iMin); 
    label5.Text:= inttostr(iAvg); 
    label6.Text:= inttostr(iMax); 
    label2.Text:= 'Minimum'; 
    label3.Text:= 'Average'; 
    label4.Text:= 'Maximum'; 
end 
else 
    ... 

Bitte beachten Sie, das Bild im gleichen Ordner gespeichert wird als mein Programm.

Antwort

2

Verwenden Sie keine relativen Pfade. Verwenden Sie immer absolute Pfade.

Sie müssen die Deployment Manager verwenden, um die Bilddatei in einem entsprechenden Ordner auf dem Telefon zu implementieren und dann die System.IOUtils.TPath-Klasse verwenden, um diesen Ordner zur Laufzeit zu finden:

Standard RTL Path Functions across the Supported Target Platforms

Auf Android, bereitstellen die image-Datei auf den ./assets/internal Ordner, und verwenden Sie dann die TPath.GetDocumentsPath() Methode zur Laufzeit, wie in diesem Blog dokumentiert:

Deploying and accessing local files on iOS and Android

In der EDN-Dokumentation und im Blog wird nicht erwähnt, dass Sie auch die System.StartupCopy Einheit zu Ihrer uses Klausel Ihrer App hinzufügen müssen.

uses 
    ..., System.IOUtils, System.StartupCopy; 

... 

img.bitmap.LoadFromFile(TPath.Combine(TPath.GetDocumentsPath, 'Image.png')); 
Verwandte Themen