![]() |
[Tool] Bitmap to AVI
Liste der Anhänge anzeigen (Anzahl: 3)
Da in diesem Beitrag
![]() ![]() 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: |
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:
(Ich würde das auch so machen. :) )
AVIStreamRelease(psCompressed);
AVIStreamRelease(ps); AVIFileRelease(pfile); 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. |
Re: [Tool] Bitmap to AVI (Problemchen)
Hi, hab ich schon. Bin mir aber nicht sicher gewesen ob das so i.O. ist.
Zitat:
|
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: |
Re: [Tool] Bitmap to AVI (Problemchen)
Zitat:
|
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 |
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... |
Re: [Tool] Bitmap to AVI (Problemchen)
Kleines Update.
- Sortierung der Images in Liste kommt noch... Do not wait with Mouse over Panda! :stupid: |
Re: [Tool] Bitmap to AVI (Problemchen)
Zitat:
|
Re: [Tool] Bitmap to AVI (Problemchen)
Zitat:
|
Re: [Tool] Bitmap to AVI (Problemchen)
Mit Objekten habe ich nicht Vertreter von Delphis TObject gemeint, sondern Interfaces.
|
Re: [Tool] Bitmap to AVI (Problemchen)
Zitat:
Zitat:
Nachteil ist bei der Unit das wenn man mit mehreren Files arbeiten möchte die procedure CloseAVIFile nich in der gedachten Art verwenden kann. Gegebenenfalls werden ich die Unit ohne OOP machen. |
AW: [Tool] Bitmap to AVI
Zitat:
|
AW: [Tool] Bitmap to AVI
Weiß jemand, wo dieser Fehler seine Ursache hat?
|
AW: [Tool] Bitmap to AVI
Japp, CreatorState <> csWriting. Hast Du vorher CreateAVIFile aufgerufen?
|
AW: [Tool] Bitmap to AVI
Hey,
Ich bekomme keine AV-Exception oder ähnliches. Bei mir wird problemlos alles erstellt wenn ich die BMP einfüge. Super Tool! :thumb: |
AW: [Tool] Bitmap to AVI
Zitat:
Der Button "Make AVI" hat folgenden Code:
Delphi-Quellcode:
bmp := TBitmap.Create;
bmp.LoadFromFile(ListView1.Items[0].SubItems[0]); AVICreator := TAVICreator.Create(Handle); AVICreator.Filename := ''; AVICreator.Width := bmp.Width; AVICreator.Height := bmp.Height; AVICreator.FPS := StrToInt(cbxFPS.Text); AVICreator.ResRestriction := TResRestriction(cbxRestriction.ItemIndex); AVICreator.CreateAVIFile; // Selbst ohne diese Zeile kommt der Fehler ProgressBar1.Max := ListView1.Items.Count - 1; for i := 0 to ListView1.Items.Count - 1 do begin bmp.LoadFromFile(ListView1.Items[i].SubItems[0]); Image1.Picture.Bitmap.Assign(bmp); Image1.Refresh; ProgressBar1.Position := i; AVICreator.AddAVIFrame(bmp); end; bmp.free; fn := AVICreator.Filename; // Return the Filename selected of SaveDialog AVICreator.CloseAVIFile; AVICreator.free; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz