AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Bild in Image laden ohne Dateiendung anzugeben
Thema durchsuchen
Ansicht
Themen-Optionen

Bild in Image laden ohne Dateiendung anzugeben

Ein Thema von Danyel · begonnen am 25. Jul 2010 · letzter Beitrag vom 25. Jul 2010
Antwort Antwort
Danyel

Registriert seit: 7. Okt 2009
Ort: Lübeck
15 Beiträge
 
Delphi 5 Standard
 
#1

Bild in Image laden ohne Dateiendung anzugeben

  Alt 25. Jul 2010, 12:56
Delphi-Version: 2005
Hi,
ich möchte in meinem Programm ein Bild in ein Image reinladen.
Hierzu drückt man in der Listbox auf einen Namen, wodurch der
Dateiname definiert wird.
Klicken wir also zB auf Danyel, soll er das Bild Danyel laden.
ABER um ein Bild zu laden, muss ich ja den vollständingen Namen angeben, heißt zB Danyel.jpg. Nun kann es aber vorkommen, dass ich Bilder mit verschiedenen Dateiendungen haben werde. Kann man das realisieren, dass er in einem bestimmten Ordner nach einer Datei such, die Danyel heißt, wobei man die Endung nicht angeben muss?

Delphi-Quellcode:
procedure TForm1.bildladen(name:string);
begin
      if fileexists(ExtractFilePath(Application.ExeName)+'\Data\images\'+name) then bild.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\Data\images\'+name);
end;
Name wäre in diesem Falle zB Danyel
Auch wenn am Ende dein Programm nicht läuft,
so bist mit dem Weg gewachsen und nichts war
umsonst!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Bild in Image laden ohne Dateiendung anzugeben

  Alt 25. Jul 2010, 13:20
Ja, das geht. Stichwort: Delphi-Referenz durchsuchenFindFirst. Da gibt es in der Code-Library auch einen Code: FindAllFilesFindAllFiles, den du dir anpassen kannst. Gibst du als Maske *.* an, spielt die Dateiendung keine Rolle.

Nur was machst du, wenn es "Danyel.jpg" und "Danyel.bmp" gibt?

Wenn man diese Bilder aus einer ListBox auswählen kann, würde ich an deiner Stelle die zugehörigen Pfadangaben z.B. in einer TStringList hinterlegen, die du mit der ListBox synchronisierst.

Das könnte grob so aussehen:

Delphi-Quellcode:
// Bild in ListBox einfügen
ListBox.Items.Add('Danyel');
StringList.Add('Pfad zum Bild');

// laden
Image.Picture.LoadFromFile(StringList[ListBox.ItemIndex]);
Oder so in der Art. Sinnvoller wäre es natürlich, die GUI von den Daten zu trennen, sprich eine Funktion/Methode zu schreiben, der du als Parameter die entsprechenden Indizes o.ä. übergibst.

Wobei man die Daten evtl. auch direkt den ListBox-Items zuweisen kann. Da bin ich mir nicht ganz sicher. Aber ein Feld wie "Data", wie man es von TTreeNode kennt, gibt es hier meines Wissens nicht.
  Mit Zitat antworten Zitat
Danyel

Registriert seit: 7. Okt 2009
Ort: Lübeck
15 Beiträge
 
Delphi 5 Standard
 
#3

AW: Bild in Image laden ohne Dateiendung anzugeben

  Alt 25. Jul 2010, 13:38
Viele Dank
werde mir das gleich mal alles angucken ^^

Das mit dem Festen Pfad überlege ich mir noch, ist eigentlich ne sehr schöne Idee. (eigentlich soll man den Ordner, wo die Bilder später drinne sind, nicht bearbeiten, wird die Zielgruppe auch nicht tun )

EDIT
Interessant zu lesen bzw wieder was dazugelernt, dennoch werde ich es wohl doch nicht mehr brauchen und wie du bereits vorschlugst, feste Pfade bzw Dateiendungen vorgeben, das vereinfacht die Sache ungemein, bzw wirft nicht so viele Probleme auf, wenn man zB Danyel.jpg und Danyel.bmp hat, wie du sagtest.

Danke nochma, kann geclosed werden
Auch wenn am Ende dein Programm nicht läuft,
so bist mit dem Weg gewachsen und nichts war
umsonst!

Geändert von Danyel (25. Jul 2010 um 14:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Bild in Image laden ohne Dateiendung

  Alt 25. Jul 2010, 13:57
Wie kommt der Dateiname in die ListBox?

Intern speichert man sich zu dem Eintrag dann den vollständigen Namen.

PS: Was passiert, wenn es mal ein Danyel.jpg und ein Danyel.png gibt?
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Bild in Image laden ohne Dateiendung

  Alt 25. Jul 2010, 14:02
Wie kommt der Dateiname in die ListBox?

Intern speichert man sich zu dem Eintrag dann den vollständigen Namen.

PS: Was passiert, wenn es mal ein Danyel.jpg und ein Danyel.png gibt?
Hast du meinen Beitrag gelesen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: Bild in Image laden ohne Dateiendung

  Alt 25. Jul 2010, 15:08
nicht alle Zeilen (war zu schnell von deiner umfangreichen Signatur abgelenkt)
$2B or not $2B
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Bild in Image laden ohne Dateiendung anzugeben

  Alt 25. Jul 2010, 16:33
Aber von festen Datenpfaden und vorallem von fest"gecodete" datenpfaden würde ich abraten
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Bild in Image laden ohne Dateiendung anzugeben

  Alt 25. Jul 2010, 16:36
Was mir noch auffällt ist, dass du in deinen Pfadangaben 2 aufeinander folgende Blackslashes haben wirst:

Delphi-Referenz durchsuchenExtractFilePath gibt bereits einen Pfad mit abschließendem Backslash zurück.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz