Autor Beitrag
Prophet-
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win 7
Delphi 7
BeitragVerfasst: 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 user profile iconGausi: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 26.05.2009 um 15:33
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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



BeitragVerfasst: Di 26.05.09 15:03 
Den Pfad zum eigenen Programm bekommst Du mit
ausblenden Delphi-Quelltext
1:
ExtractFilePath(ParamStr(0))					
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: 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:
ausblenden 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



BeitragVerfasst: 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- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win 7
Delphi 7
BeitragVerfasst: 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 user profile iconNarses: 2. Frage entfernt.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 26.05.09 15:21 
Mit LoadFromFile, hast Du doch selbst geschrieben. Wo hakt es denn?
Prophet- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win 7
Delphi 7
BeitragVerfasst: Di 26.05.09 15:24 
ausblenden 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 user profile iconNarses: Delphi-Tags hinzugefügt
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Prophet- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win 7
Delphi 7
BeitragVerfasst: Di 26.05.09 16:15 
Also einfach?
ausblenden Delphi-Quelltext
1:
2:
jpg := TJpegImage.Create;
bildarray[1]:=jpg.loadfromfile(filename);
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 26.05.09 16:27 
Moin!

user profile iconProphet- hat folgendes geschrieben Zum zitierten Posting springen:
Also einfach?
ausblenden 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? :gruebel:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Prophet- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win 7
Delphi 7
BeitragVerfasst: Di 26.05.09 16:47 
Lösung:
ausblenden 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:
ausblenden 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 user profile iconNarses: Bild als Anhang hochgeladen.
Einloggen, um Attachments anzusehen!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win 7
Delphi 7
BeitragVerfasst: Di 26.05.09 17:56 
Die erste Zeile funktioniert, die anderen alle nicht.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 26.05.09 18:11 
Und das sind auch ganz sicher alles Bitmaps und nicht bloß umbenannte JPEGs oder sowas?
Prophet- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win 7
Delphi 7
BeitragVerfasst: Di 26.05.09 18:16 
Das sind 100%ige BMP'S
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Di 26.05.09 18:17 
user profile iconProphet- hat folgendes geschrieben Zum zitierten Posting springen:
Lösung:
ausblenden Delphi-Quelltext
1:
2:
bildarray[1] := tbitmap.Create;
bildarray[1].LoadFromFile(ExtractFileDir(ParamStr(0))+ '\gfx\Pacman.bmp');

Wie kommst du denn plötzlich auf ExtractFileDir? Das ist irgendwas veraltetes. Was du brauchst, ist ExtractFilePath. Da ist dann auch der Backslash dabei, dann musst du den in den Informationen zum Pfad natürlich weglassen.

Außerdem könntest du noch probieren, ob die Dateien wirklich existieren (und ob die Pfadangaben so stimmen!). Verwende dazu

ausblenden Delphi-Quelltext
1:
FileExists(ExtractFileDir(ParamStr(0))+ '\gfx\Pacman.bmp')					

um wirklich sicher sein zu können.

user profile iconProphet- hat folgendes geschrieben Zum zitierten Posting springen:
@ 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]

Leider könnten das einige hier auch ohne Ironie von sich behaupten :(

Und du könntest ruhig auch mal Stellung zu user profile iconNarses' letztem Beitrag nehmen, anstatt eine Antwort mit vier Wörtern abzuschicken :roll:

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
[...] mal testweise in der IDE das Bild in ein TImage auf dem Formular laden
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Win 7
Delphi 7
BeitragVerfasst: Mi 27.05.09 18:00 
So habe jetzt gecheckt ob die alle vorhanden sind mit
ausblenden 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