AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte [Tool] Bitmap to AVI
Thema durchsuchen
Ansicht
Themen-Optionen

[Tool] Bitmap to AVI

Ein Thema von turboPASCAL · begonnen am 22. Mai 2006 · letzter Beitrag vom 11. Jan 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von turboPASCAL
turboPASCAL
Registriert seit: 8. Mai 2005
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.


So, hier mal das Programm, es ist nur mit Standardkomponenten von Delphi 6 geschrieben:
Miniaturansicht angehängter Grafiken
preview_770.gif  
Angehängte Dateien
Dateityp: zip bmp2avi.exe_147.zip (269,2 KB, 116x aufgerufen)
Dateityp: zip bmp2avi.source_111.zip (90,9 KB, 166x aufgerufen)
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
 
Benutzerbild von chaosben
chaosben

 
Delphi XE2 Professional
 
#2
  Alt 22. Mai 2006, 10:53
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.
Benjamin Schwarze
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

 
Delphi 6 Personal
 
#3
  Alt 22. Mai 2006, 10:59
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! Die VfW.pas ist doch nicht OOP.?!
Matti
  Mit Zitat antworten Zitat
Daniel G
 
#4
  Alt 22. Mai 2006, 11:15
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..
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

 
Delphi 7 Enterprise
 
#5
  Alt 22. Mai 2006, 11:16
Zitat von Daniel G:
Für was steht eigentlich VfW? Video for Windows?
Richtig
André
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

 
Delphi XE3 Enterprise
 
#6
  Alt 22. Mai 2006, 11:47
Moin, schaut doch mal ob die drei Objecte nur Zeiger in einm Initialization/Finalization -Abschnitt sind.
Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

 
Delphi 6 Personal
 
#7
  Alt 22. Mai 2006, 14:02
in der Unit VfW.Pas (Video for windows ) 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...
Matti
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

 
Delphi 6 Personal
 
#8
  Alt 23. Mai 2006, 09:48
Kleines Update.

- Sortierung der Images in Liste kommt noch...

Do not wait with Mouse over Panda!
Matti
  Mit Zitat antworten Zitat
Ydobon

 
Delphi 11 Alexandria
 
#9
  Alt 23. Mai 2006, 17:48
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.
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

 
Delphi XE2 Professional
 
#10
  Alt 23. Mai 2006, 18:00
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)
Benjamin Schwarze
  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 06:41 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