Autor |
Beitrag |
Prophet-
      
Beiträge: 29
Win 7
Delphi 7
|
Verfasst: Di 26.05.09 14:59
Hi liebe Community,
ich will für ein kleines Delphi Projekt mehrere Bilder in ein Array einlesen, das geht ja durch den Befehl .loadfromfile('Dateipfad'). Nun will ich aber nicht den genauen Dateipfad angeben, denn ich will ja das Projekt auf meinem USB-Stick speichern, damit ichs überall mitnehmen kann. Die Bilder liegen dann im selben Ordner wie das Projekt nur dort im Ordner GFX, leider hab ich vergessen, was ich eintippen muss, dass er auf den Ordner GFX zugreift. Könnt ihr mir helfen?
Vielen Dank im vorraus
Prophet- Moderiert von Gausi: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 26.05.2009 um 15:33
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 26.05.09 15:03
Den Dateinamen der Exe-Datei bekommst du mit ParamStr(0), den Ordner erhältst du daraus mit ExtractFilePath.
_________________ We are, we were and will not be.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 26.05.09 15:03
Den Pfad zum eigenen Programm bekommst Du mit
Delphi-Quelltext 1:
| ExtractFilePath(ParamStr(0)) |
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Di 26.05.09 15:14
Ich weiß jetzt nur leider im Moment nicht, ob Du dann dort nicht noch hinten ein solches Zeichen (Nur das in den Hochkommas"\") hinten anfügen musst, bevor Du den Namen Deiner zu ladenen Datei hinschreiben kannst.
Also würde ich (um das herauszufinden) mir dann erst mal das so anzeigen lassen:
Delphi-Quelltext 1:
| MessageBox(ExtractFilePath(ParamStr(0),'Pfadangabe',MB_OK) |
Zuletzt bearbeitet von ffgorcky am Di 26.05.09 15:16, insgesamt 1-mal bearbeitet
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 26.05.09 15:16
Oder einmal einen Blick in die Hilfe werfen, da steht nämlich, dass der Backslash am Ende enthalten ist 
|
|
Prophet- 
      
Beiträge: 29
Win 7
Delphi 7
|
Verfasst: Di 26.05.09 15:19
Wie mach ich das nun, dass das Bild mit dem Namen 'Spielfeld.jpg' in mein Bildarray[1] eingelesen wird?
Moderiert von Narses: 2. Frage entfernt.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 26.05.09 15:21
Mit LoadFromFile, hast Du doch selbst geschrieben. Wo hakt es denn?
|
|
Prophet- 
      
Beiträge: 29
Win 7
Delphi 7
|
Verfasst: Di 26.05.09 15:24
Delphi-Quelltext 1:
| Image1.Picture.LoadFromFile(ExtractFilePath + '\gfx\Spielfeld.jpg'); |
Das iss ja klar, nur will ich das Bild ja nicht in ein Image1 speichern, sondern in mein Bildarray[1].
€dit: Bildarray ist vom Typ TBitmap
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 26.05.09 15:29
Nimm eine Hilfsvariable vom Typ JPegImage aus der Unit Jpeg, erzeuge sie, lade die Jpeg-Datei da rein, und setze dann per Assig das Bitmap:
Ganz grob also so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| uses ... Jpeg ... jpg := TJpegImage.Create; try jpg.LoadFromFile(Filename); BildArray[1].Assign(jpg); finally jpg.free; end; |
_________________ We are, we were and will not be.
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 26.05.09 16:07
Moin!
Bei Gausis Ansatz würde ich BildArray: array of TBitmap; annehmen.
Denkbar wäre aber auch BildArray: array of TJpegImage;, dann könnte man direkt da rein laden.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Prophet- 
      
Beiträge: 29
Win 7
Delphi 7
|
Verfasst: Di 26.05.09 16:15
Also einfach?
Delphi-Quelltext 1: 2:
| jpg := TJpegImage.Create; bildarray[1]:=jpg.loadfromfile(filename); |
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 26.05.09 16:27
Moin!
Prophet- hat folgendes geschrieben : | Also einfach? Delphi-Quelltext 1: 2:
| jpg := TJpegImage.Create; bildarray[1]:=jpg.loadfromfile(filename); | |
Nein, das funktioniert doch gar nicht.  Hast du die Beiträge und Tipps wirklich gelesen?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Prophet- 
      
Beiträge: 29
Win 7
Delphi 7
|
Verfasst: Di 26.05.09 16:47
Lösung:
Delphi-Quelltext 1: 2:
| bildarray[1] := tbitmap.Create; bildarray[1].LoadFromFile(ExtractFileDir(ParamStr(0))+ '\gfx\Pacman.bmp'); |
@ Narses: Nein ich lese mir die Beiträge nie durch ist zu 99,99% eh schrott, ich frag nur lieber die ganze Zeit dumme Fragen[/ironie]
EDIT:
Nächstes Problem:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| for k:=1 to 8 do begin bildarray[k] := tbitmap.Create; end;
bildarray[1].LoadFromFile(ExtractFileDir(ParamStr(0)) + '\GFX\Pacman.bmp'); bildarray[2].LoadFromFile(ExtractFileDir(ParamStr(0)) + '\GFX\Mauer.bmp'); bildarray[3].LoadFromFile(ExtractFileDir(ParamStr(0)) + '\GFX\Punkt.bmp'); bildarray[4].LoadFromFile(ExtractFileDir(ParamStr(0)) + '\GFX\Schwarzes Feld.bmp'); bildarray[5].LoadFromFile(ExtractFileDir(ParamStr(0)) + '\GFX\Geist gelb.bmp'); bildarray[6].LoadFromFile(ExtractFileDir(ParamStr(0)) + '\GFX\Geist rot.bmp'); bildarray[7].LoadFromFile(ExtractFileDir(ParamStr(0)) + '\GFX\Geist lila.bmp'); bildarray[8].LoadFromFile(ExtractFileDir(ParamStr(0)) + '\GFX\Geist blau.bmp'); |
Dabei wird folgende Fehlermeldung angezeigt:
Moderiert von Narses: Bild als Anhang hochgeladen.
Einloggen, um Attachments anzusehen!
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 26.05.09 17:35
Moin!
In welcher Zeile tritt der Fehler auf? Das Bild existiert (Tiepvehler beim Namen?) und ist ein korrektes Bitmap (mal testweise in der IDE das Bild in ein TImage auf dem Formular laden)?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Prophet- 
      
Beiträge: 29
Win 7
Delphi 7
|
Verfasst: Di 26.05.09 17:56
Die erste Zeile funktioniert, die anderen alle nicht.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 26.05.09 18:11
Und das sind auch ganz sicher alles Bitmaps und nicht bloß umbenannte JPEGs oder sowas?
|
|
Prophet- 
      
Beiträge: 29
Win 7
Delphi 7
|
Verfasst: Di 26.05.09 18:16
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Di 26.05.09 18:17
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 26.05.09 18:38
Delphi 2007-Hilfe hat folgendes geschrieben: | Beschreibung
ExtractFileDir gibt einen String zurück, der als Parameter an die Funktionen CreateDir, GetCurrentDir, RemoveDir und SetCurrentDir übergeben werden kann. Enthält FileName keine Laufwerks- und Verzeichnisangabe, wird ein leerer String zurückgegeben.
Anmerkung: Diese Funktion arbeitet mit Multibyte-Zeichensätzen (MBCS). |
Das Wort "veraltet" kann ich da nirgends entdecken. Nichtsdestotrotz würde ich auch ExtractFilePath verwenden wie bereits oben geschrieben.
|
|
Prophet- 
      
Beiträge: 29
Win 7
Delphi 7
|
Verfasst: Mi 27.05.09 18:00
So habe jetzt gecheckt ob die alle vorhanden sind mit
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| if FileExists(ExtractFileDir(ParamStr(0))+ '\gfx\Pacman.bmp') and FileExists(ExtractFileDir(ParamStr(0))+ '\gfx\mauer.bmp') and FileExists(ExtractFileDir(ParamStr(0))+ '\gfx\Punkt.bmp') and FileExists(ExtractFileDir(ParamStr(0))+ '\gfx\SchwarzesFeld.bmp') and FileExists(ExtractFileDir(ParamStr(0))+ '\gfx\Geist rot.bmp') and FileExists(ExtractFileDir(ParamStr(0))+ '\gfx\Geist gelb.bmp') and FileExists(ExtractFileDir(ParamStr(0))+ '\gfx\Geist lila.bmp') and FileExists(ExtractFileDir(ParamStr(0))+ '\gfx\Geist blau.bmp') then showmessage('hi') else showmessage('error'); |
Ging alles. Der Fehler muss irgendwo anders sitzen.
€: Hab wie Narses gesagt hat alle überpfrüft, sind alle gültige Bitmaps.
Zuletzt bearbeitet von Prophet- am Mi 27.05.09 18:21, insgesamt 1-mal bearbeitet
|
|