tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
4087
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    chris4712 chris4712 ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    233
    Hallo!

    Ich möchte eine Art Animation machen. Soll heißen: Man klickt auf ein Bild, und es wird ein anders geladen.

    Hab mir dazu eine TImage Komponente genommen.
    Außerdem eine TImageList, in der ich die beiden Bilder habe.

    Wenn die TImage Komponente noch kein Bild enthält, kann ich das aus der TImageList laden.

    Wenn aber die TImage Komponente schon ein Bild hat, geht dies nicht mehr.

    Frage: Wie bekomme ich das Bild wieder aus der TImageKomponente

    Gruß

    Christian
     

  2. #2
    Avatar von Gawayn
    Gawayn Gawayn ist offline Mitglied Brokat
    Registriert seit
    Dec 2003
    Beiträge
    309
    Wie das geht, hängt davon ab, wie deine Aufgabenstellung ist. Die Lösung auf deine Frage findet sich, wie das ja fast immer so ist, in der Delphi-Hilfe.
     

  3. #3
    encom Tutorials.de Gastzugang
    Hallo, löschen kannst du das Bild aus der Timage so

    image1.Picture := nil

    danach kannst du ein neues reinladen.
     

  4. #4
    Avatar von Gawayn
    Gawayn Gawayn ist offline Mitglied Brokat
    Registriert seit
    Dec 2003
    Beiträge
    309
    Code :
    1
    
    image1.Picture := nil
    Das löscht nichts, das setzt nur den Zeiger auf 0 und die Referenz auf den Speicher ist futsch. Das ist eigentlich etwas, was man immer vermeiden will!

    Zum korrekten Freigeben eines Objektes sollte man in Delphi IMMER die Free-Methode verwenden.

    -Gawayn
    Geändert von Gawayn (13.06.05 um 23:22 Uhr)
     

  5. #5
    encom Tutorials.de Gastzugang
    ja so wie ich das mitbekommen habe will er eben nicht das Objet sondern das Bild aus der TImage löschen. Also wenn du ne bessere Idee hast dann lass sie uns wissen.
    Es ist nicht sonderlich hilfreich zu sagen man soll in die Hilfe schauen wenn man nicht weis wonach man zu suchen hat.
     

  6. #6
    Avatar von Gawayn
    Gawayn Gawayn ist offline Mitglied Brokat
    Registriert seit
    Dec 2003
    Beiträge
    309
    ja so wie ich das mitbekommen habe will er eben nicht das Objet sondern das Bild aus der TImage löschen.
    Aber das Bild belegt doch Speicher! Wenn man den Zeiger einfach auf 0 setzt, kann dieser Speicher nicht mehr freigegeben werden. Wenn ich das Bild entfernen will, ohne das Objekt freizugeben, könnte ich z.B. seine Dimensionen auf je 0 setzen. Damit wäre aller Bildspeicher freigegeben, das Objekt (also das TPicture) jedoch wäre noch da.

    Außerdem: Es geht hier um ein TImage. Wenn ich das TPicture freigebe, ist das Bild weg, das TImage jedoch noch da.

    Es ist nicht sonderlich hilfreich zu sagen man soll in die Hilfe schauen wenn man nicht weis wonach man zu suchen hat.
    Natürlich weiß man, wonach man zu suchen hat, nämlich nach der Klasse, um die es geht. Wenn man ein Problem mit TPicture hat, dann sucht man nach TPicture, wenn man ein Problem mit TImageList hat, dann sucht man danach. Und folgt den Links. Das ist elementar.

    -Gawayn
    Geändert von Gawayn (14.06.05 um 09:57 Uhr)
     

  7. #7
    Narrator Tutorials.de Gastzugang
    Ist doch egal wenn man den Speicher nicht freigibt. Er will das Bild ja vlt auch nochmal verwenden Und wenn er es dann versuchen würde(wenn es freigegeben ist), dann gibts nen hübschen Zugriffsfehler, und keiner weiß warum....
    Es ist ja noch in der ImageList, also is gar nix futsch.
    Davon mal abgesehen, gibt Delphi doch eh allen Speicher beim beendebn des Programmes wieder frei.
     

  8. #8
    Avatar von Gawayn
    Gawayn Gawayn ist offline Mitglied Brokat
    Registriert seit
    Dec 2003
    Beiträge
    309
    Ist doch egal wenn man den Speicher nicht freigibt. Er will das Bild ja vlt auch nochmal verwenden Und wenn er es dann versuchen würde(wenn es freigegeben ist), dann gibts nen hübschen Zugriffsfehler, und keiner weiß warum....
    Es ist ja noch in der ImageList, also is gar nix futsch.
    Also, ich glaube, hier herrscht grade ein wenig Konfusion.

    Davon mal abgesehen, gibt Delphi doch eh allen Speicher beim beendebn des Programmes wieder frei.
    Tja, das macht Delphi aber nicht deswegen, damit man den Speicher nicht mehr freigeben braucht, sondern damit die vom Programmierer *vergessenen* Objekte auch noch ihren Destruktor-Aufruf kriegen. Es handelt sich dabei um eine Präventionsmaßnahme. Wenn du so programmierst, wie du's hier vorschlägst, kannst du ausschließlich für deine eigenen Belange programmieren, im Team wird das nix.

    -Gawayn
     

  9. #9
    Narrator Tutorials.de Gastzugang
    Wird im Team nur was, wenn jeder davon weiß

    Also ist es schneller die Destruktoren nicht selbst aufzurufen. Die werdn eh nochma aufgerufen :P
    mein ich abr nur als scherz, mit dem nicht aufrufen. sollte man nat machen.
    will nur dass die leute nicht gleich angst kriegen, wenn sies mal vergessen :P
     

Ähnliche Themen

  1. Antworten: 13
    Letzter Beitrag: 23.01.09, 00:14
  2. Antworten: 5
    Letzter Beitrag: 16.10.07, 11:02
  3. $_POST wieder löschen
    Von Kona im Forum PHP
    Antworten: 18
    Letzter Beitrag: 21.08.06, 08:27
  4. Temporären Datein wieder löschen
    Von fabilazar im Forum PHP
    Antworten: 2
    Letzter Beitrag: 23.06.05, 19:05
  5. Antworten: 1
    Letzter Beitrag: 04.02.04, 12:45