AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Problem mit Bilder laden
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Bilder laden

Ein Thema von Landfloh · begonnen am 13. Apr 2008 · letzter Beitrag vom 13. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2      
Landfloh

Registriert seit: 17. Feb 2008
75 Beiträge
 
Delphi 7 Personal
 
#1

Problem mit Bilder laden

  Alt 13. Apr 2008, 10:03
Hallo

Ich habe ein Problem.

Ich habe ein Programm geschrieben mit dem ich eigentlich nur Bilder schnell hitereinander abspielen möchte.

Hier der Quellcode:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var Fortschritt: Integer;
begin
  Fortschritt := Fortschritt + 1;
  if Fortschritt = 1 then
  begin
    Image1.Picture.LoadFromFile('C:\Dokumente und Einstellungen\Soz1L\Eigene Dateien\Eigene Bilder\X_Wing3.jpg');
  end;
  if Fortschritt = 2 then
  begin
    Image1.Picture.LoadFromFile('C:\Dokumente und Einstellungen\Soz1L\Eigene Dateien\Eigene Bilder\X_Wing5.jpg');
  end;
  if Fortschritt = 3 then
  begin
    Image1.Picture.LoadFromFile('C:\Dokumente und Einstellungen\Soz1L\Eigene Dateien\Eigene Bilder\X_Wing7.jpg');
  end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  Timer1.Enabled := true;
end;
Wenn ich das Programm starte gibt es keine Fehlermeldung nur eine Warnung das die Veriable möglicherweise nich initialisiert ist. Aber wenn ich auf den Button kliche passiert nicht?

Kannmir jemand helfen?

Landfloh
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Problem mit Bilder laden

  Alt 13. Apr 2008, 10:06
Da Fortschritt eine lokale Variable ist, wird sie bei jedem OnTimer-Ereignis neu gesetzt, un da du ihren Wert nicht bestimmst(bzw. nur 1 draufaddierst) ist der Wert unbestimmt(bzw. nicht initialisiert). Am besten bestimmst du Fortschritt im private-Teil der Form als Eigenschaft und setzt es beim OnCreate auf 0.
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    Fortschritt: Integer;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
Mfg
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Landfloh

Registriert seit: 17. Feb 2008
75 Beiträge
 
Delphi 7 Personal
 
#3

Re: Problem mit Bilder laden

  Alt 13. Apr 2008, 10:12
Zitat von Fussball-Robby:
Da Fortschritt eine lokale Variable ist, wird sie bei jedem OnTimer-Ereignis neu gesetzt, un da du ihren Wert nicht bestimmst(bzw. nur 1 draufaddierst) ist der Wert unbestimmt(bzw. nicht initialisiert). Am besten bestimmst du Fortschritt im private-Teil der Form als Eigenschaft und setzt es beim OnCreate auf 0.
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    Fortschritt: Integer;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
Mfg
Super! Es geht jetzt.
Danke.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#4

Re: Problem mit Bilder laden

  Alt 13. Apr 2008, 10:53
Mit case statt der If-Abfragen wäre das Ganze aber übersichtlicher (und AFAIR auch schneller).
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
const Pfad = 'C:\Dokumente und Einstellungen\Soz1L\Eigene Dateien\Eigene Bilder\';
begin
  Fortschritt := Fortschritt + 1;
  case Fortschritt of
    1: Image1.Picture.LoadFromFile(Pfad + 'X_Wing3.jpg');
    2: Image1.Picture.LoadFromFile(Pfad + 'X_Wing5.jpg');
    3: Image1.Picture.LoadFromFile(Pfad + 'X_Wing7.jpg');
  end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Problem mit Bilder laden

  Alt 13. Apr 2008, 10:57
Und ganz böse ist die Bilder von einem hardcodierten Pfad zu laden!

Kopiere die Bilder lieber ins Anwendungsverzeichnis Deines Programmes und hole Dir diesen Pfad mittels ExtractFilePath(Application.ExeName);
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Problem mit Bilder laden

  Alt 13. Apr 2008, 11:00
Außerdem könntest du die Bilder auch von 1 - 3 durchnummerieren, dann bräuchtest du Case garnicht:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var FName: String;
begin
  Inc(Fortschritt);
  FName := ExtractFilePath(ParamStr(0)) + 'X_Wing' + IntToStr(Fortschritt) + '.jpg';
  if FileExists(FName) then
    Image1.Picture.LoadFromFile(Fname);
end;
Mfg
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#7

Re: Problem mit Bilder laden

  Alt 13. Apr 2008, 11:06
Noch eine Möglichkeit:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
const Bilder: array[1..3] of string = ('X_Wing3.jpg','X_Wing5.jpg','X_Wing7.jpg');
begin
  Fortschritt := Fortschritt + 1;
  Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + Bilder[Fortschritt]);
  Timer1.Enabled := Fortschritt < 3;
end;
[edit] Eine Klammer vergessen [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Problem mit Bilder laden

  Alt 13. Apr 2008, 11:09
Und dann stellen wir noch sicher, dass auch immer der PathDelimiter dran ist:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
const Bilder: array[1..3] of string = ('X_Wing3.jpg','X_Wing5.jpg','X_Wing7.jpg');
begin
  Fortschritt := Fortschritt + 1;
  Image1.Picture.LoadFromFile(IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + Bilder[Fortschritt]);
  Timer1.Enabled := Fortschritt < 3;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#9

Re: Problem mit Bilder laden

  Alt 13. Apr 2008, 11:12
Und dann erstellen wir uns eine Funktion, die das für uns übernimmt (kann ja auch ein anderer Pfad sein) und eine weitere, die uns mitteilt, ob das Laden funktioniert hat
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Problem mit Bilder laden

  Alt 13. Apr 2008, 11:16
Ach, Du bist doch doof.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:46 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