Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   [Tool] Bitmap to AVI (https://www.delphipraxis.net/69905-%5Btool%5D-bitmap-avi.html)

turboPASCAL 22. Mai 2006 09:53


[Tool] Bitmap to AVI
 
Liste der Anhänge anzeigen (Anzahl: 3)
Da in diesem Beitrag BMP in AVI wandeln die Frage gestellt wurde wie man aus Bitmaps eine AVI-Filmdatei erstellen kann, habe ich auf Basis der Unit (Kompnente) die obbschtkuche angeboten hat ein kleines Programm zusammengebaut.

In meiner Version habe ich die Unit ein klein wenig verändert, so das sie nicht mehr als Komponente Registriert/Verwendet wird.

Leider gibt es bei der Original und auch bei meiner Version beim freigeben im Destroy eine AV.
Ich kann den Fehler nicht finden.
Wer also Zeit und Lust hat, könnte mal nachschauen woran das liegt. Ich finde diesen bl. Fehler nicht.


Delphi-Quellcode:
// Unit AVICreator.pas
type
  TAVICreator = class
  private
    //...
  public
    constructor Create(aHandle: HWND);
    destructor Destroy; override;
    function CreateAVIFile: boolean;
    procedure AddAVIFrame(graphic: TGraphic);
    procedure CloseAVIFile;
  published
    //...
  end;

//...

constructor TAVICreator.Create(aHandle: HWND);
begin
  inherited Create;

  //...
end;

destructor TAVICreator.Destroy;
begin
  inherited; // Hier krachts beim Freigeben
end;

Warum mach ich den schon in Opensource mache? Damit ich ihn besser bearbeiten kann. :stupid:


So, hier mal das Programm, es ist nur mit Standardkomponenten von Delphi 6 geschrieben:

chaosben 22. Mai 2006 10:53

Re: [Tool] Bitmap to AVI (Problemchen)
 
Hi Matti!

Die Wurzel deines Problems habe ich jetzt gefunden. In der procedure CloseAVIFile gibst du 3 Objekte frei.
Delphi-Quellcode:
AVIStreamRelease(psCompressed);
AVIStreamRelease(ps);
AVIFileRelease(pfile);
(Ich würde das auch so machen. :) )
Aber: Genau diese Objekte will jemand (wer auch immer, ich bin nicht ganz so VFW-firm) bei dem TObject.Destroy auch freigeben. Und genau das, führt zu der AV.
Ich hab die 3 Freigaben einfach mal auskommentiert und der MemoryManger meint, das da keine Leaks übrig bleiben. Daher könntest du es mal so probieren.

turboPASCAL 22. Mai 2006 10:59

Re: [Tool] Bitmap to AVI (Problemchen)
 
Hi, hab ich schon. Bin mir aber nicht sicher gewesen ob das so i.O. ist.

Zitat:

Aber: Genau diese Objekte will jemand (wer auch immer, ich bin nicht ganz so VFW-firm) bei dem TObject.Destroy auch freigeben.
Das ist das was mich fast Irre macht. Wer! :gruebel: Die VfW.pas ist doch nicht OOP.?!

Daniel G 22. Mai 2006 11:15

Re: [Tool] Bitmap to AVI (Problemchen)
 
Für was steht eigentlich VfW? Video for Windows?

Ich finde über google nur

Veterans of Foreign Wars (VFW)
Verband feministischer Wissenschafterinnen

Und irgendwas sagt mir, dass es das wohl nicht ist.. :mrgreen:

MagicAndre1981 22. Mai 2006 11:16

Re: [Tool] Bitmap to AVI (Problemchen)
 
Zitat:

Zitat von Daniel G
Für was steht eigentlich VfW? Video for Windows?

:thumb: Richtig :wink:

mschaefer 22. Mai 2006 11:47

Re: [Tool] Bitmap to AVI (Problemchen)
 
Moin, schaut doch mal ob die drei Objecte nur Zeiger in einm Initialization/Finalization -Abschnitt sind.
Grüße // Martin

turboPASCAL 22. Mai 2006 14:02

Re: [Tool] Bitmap to AVI (Problemchen)
 
in der Unit VfW.Pas (Video for windows :mrgreen: ) gibt es kein Initialization/Finalization -Abschnitt wegen der Abwärtskompat. für ältere Delphiversionen ud es gibt ja noch andre Optionen als eine AVI-Datei zu schreiben oder was auch immer.

Wo anders werden diese nicht aufgerufen. Seltsam...

turboPASCAL 23. Mai 2006 09:48

Re: [Tool] Bitmap to AVI (Problemchen)
 
Kleines Update.

- Sortierung der Images in Liste kommt noch...

Do not wait with Mouse over Panda! :stupid:

Ydobon 23. Mai 2006 17:48

Re: [Tool] Bitmap to AVI (Problemchen)
 
Zitat:

Zitat von turboPASCAL
Leider gibt es bei der Original und auch bei meiner Version beim freigeben im Destroy eine AV.
Ich kann den Fehler nicht finden.

Kleiner Gruß von Borland, das _Release erfolgt automatisch, wenn die Objekte nicht mehr gültig sind. Sind sie vorher schon frei gegeben, landet die Sachen natürlich im Nirvana. Läßt sich mit Pointer(Variable):=Nil nach Freigabe vermeiden, zwar unnötig, sieht aber zumindest korrekter aus.

chaosben 23. Mai 2006 18:00

Re: [Tool] Bitmap to AVI (Problemchen)
 
Zitat:

Zitat von Ydobon
Kleiner Gruß von Borland, das _Release erfolgt automatisch, wenn die Objekte nicht mehr gültig sind.

Ich glaube, wir reden aneinander vorbei. Es geht hier nicht um Objekte von der Sorte TObject sondern um VFW-"Objekte" die mit irgendwelchen wilden Pointer-Schießereien und CopyMem Aktionen angelegt werden. :) (nein, nicht wirklich; Ich will nur sagen, das es höchstwahrscheinlich keine TObjects sind)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 Uhr.
Seite 1 von 2  1 2   

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