Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - LoadFromFile ???


n@no - Di 24.12.02 17:39
Titel: LoadFromFile ???
hi,
ich hab mir nen kleines spiel gemacht mit verschiedenen hintergrundbildern. das funzt auch auf dem rechner hier ganz gut, weil ich im dem befehl "loadfromfile" die pfad drin stehen hab,
aber wenn ich das spiel jetzt auf nen aneren rechner unter nen anderes verzeichnis kopier stimmt der pfad nicht mehr, und nix geht mehr.
gibt es da nicht ne andere methode, so das er die bilder findet egal in welchem verzeichnis die sind??


Delete - Di 24.12.02 18:48

"egal in welchen Verzeichnis" wird schwer. Ich würde die Bilder in einem Unterprdner des Programmverzeichnisse ablegen.

PramStr(0) liefert dir dann immer den Pfad zu deinem Programm inklusive des Dateinames deiner Exe.


n@no - Mi 25.12.02 15:39

hm, hast du da auch ein beispiel für?? wiel ich find da nix zu in der delphi hilfe.

aber da fällt mir grad was ein..
wenn ich schreibe

Image1.Picture.LoadFromFile('c:\temp\test.BMP');

ist klar das das bild unter c:/temp/ liegt, aber wenn ich schreibe


Image1.Picture.LoadFromFile('test.BMP');

wird dann in dem verzeichnis gesucht wo die .exe ausgeführt wurde?? oder geht das so ohne pfad angabe gar nicht?


bis11 - Mi 25.12.02 15:56

Hi,

so kannste den Pfad vom Programm noch herrausbekommen :

Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject); 
var 
  sExePath: string; 
begin 
  sExePath := ExtractFilePath(Application.ExeName) 
    ShowMessage(sExePath); 
end;


n@no - Mi 25.12.02 19:41

@bis11

kann ich dann auch anstatt dem

ShowMessage(sExePath);

diese zeile schreiben??
->
Image1.Picture.LoadFromFile('sExePath\bild.jpg')


bis11 - Mi 25.12.02 20:02

So wird das nichts. Schreibe doch einfach mal das was bei LoadFromFile in den Klammern steht in die Klammer von ShowMessage rein. Und überprüfe mal, ob da das gleiche rauskommt wie bei meinem Beispiel.


Wolff68 - Mi 25.12.02 20:06

Naja, fast.
Die Variable sExePath muss natürlich ausserhalb der ' ' stehen.
Also Image1.Picture.LoadFromFile(sExePath+'\bild.jpg');
Wobei ich im Moment nicht weis, ob Dir ExtractFilePath den Pfad mit oder ohne \ am Ende gibt. Aber das siehste ja dann.


General Mengsk - Sa 28.12.02 18:07

n@no hat folgendes geschrieben:
Image1.Picture.LoadFromFile('test.BMP');

wird dann in dem verzeichnis gesucht wo die .exe ausgeführt wurde??

Ja, lokale Pfade sind kein Problem. Könntest z.B. auch nen Unterordner Bilder machen und dann mit
Image1.Picture.LoadFromFile('Bilder\test.BMP'); das Bild laden. Pfad suchen wäre reine Aufwandverschwendung ;)


Anonymous - So 29.12.02 09:47

General Mengsk hat folgendes geschrieben:
Pfad suchen wäre reine Aufwandverschwendung ;)

Solche Programme funktionieren - je nach Aufrufmethode - dann leider nicht mehr. Zudem ist der Aufwand den Pfad korrekt zu setzten schließlich minimal.

Aber bekanntlich ist jeder seines eigen Glückes Schmied.

Gruß Tom