Am 23.09.2009 um 19:03 schrieb Chris Moeller:
Frage: kann man irgendwie beliebige Files fest in ein RB-Projekt
einbinden und dann per FolderItem darauf zugreifen? Ich bekomme das
erst mal nicht hin. Das FolderIem ist immer NIL.
Ja, das geht. Du musst einfach die Dateien per Drag&Drop in Dein Rb-
Projekt importieren. Wenn Du das Projekt kompilierst, werden die
Dateien in den Resources-Ordner im Programm-Paket kopiert. Ein
FolderItem auf die Dateien kannst Du z. B. so erzeugen (für das
Beispiel nennen wir Dein Programm "MyApp" und die gesuchte Datei
"MyData.dat"):
dim f as FolderItem = App.ExecutableFile // f verweist auf MyApp.app/
Contents/MacOS/MyApp
f = f.parent.parent // f verweist jetzt auf MyApp.app/Contents
f = f.child("Resources").child("MyData.dat") // f verweist jetzt auf
die gesuchte Datei
Du kannst das Ganze auch in eine kleine Hilfsmethode verpacken:
Function GetResource (Extends theApp as Application, resName as
String) as FolderItem
// Die folgende Zeile bewirkt, dass das FolderItem auf den Resources-
Ordner nur ein Mal, nämlich beim
// ersten Aufruf der Methode, erzeugt werden muss
static f as FolderItem = theApp.ExecutableFile.parent.parent.child
("Resources")
// Hier wird ein FolderItem auf die eigentliche Datei erstellt. Durch
die if-Abfrage brauchst Du das zurückgegebene
// FolderItem später im Programm nur noch auf 'nil' testen; den Test,
ob die gesuchte Datei auch existiert, kannst Du
// dir dort dann sparen
dim g as FolderItem = f.child(resName)
if g.exists then
return g
else
return nil
end if
Exception err as NilObjectException
return nil
End Function
Um das obige Beispiel wieder aufzugreifen, hier noch ein Beispiel, wie
Du die Hilfsmethode verwendest:
dim f as FolderItem = App.GetResource("MyData.dat")
if f Is nil then
// ups, da ist wohl was schief gelaufen
else
// was immer Du mit der Datei machen möchtest
end if
Ach ja, falls Du das Programm für verschiedene Plattformen kompilieren
möchtest, musst Du die Zeile
static f as FolderItem ...
selbstverständlich für die verschiedenen Plattformen anpassen.
Gruß
Christian
----------------------------------------
Christian Dorn
realbasic {a} online.de
REALbasic 2009r3 Studio
iMac 3.06 GHz Intel Core 2 Duo, 4 GB RAM
PowerMac G5 2x2GHz, 1.5 GB RAM
Mac OS X 10.6.1
Ubuntu Linux 9.04 on Parallels Desktop 4.0
Kernel 2.6.28-15-generic
GNOME 2.26.1
----------------------------------------