Hallo,
ich habe folgendes Problem: ich will/muss eine große Anzahl von bmp-Dateien in jpg-/png-Dateien umwandeln. Das wollte ich in einen Thread auslagern, u.a. um die Forms flüssig laufen zu lassen. Allerdings scheitert das an dem
nicht threadsicheren TBitmap(.Canvas).
Also habe ich die Idee, die Berechnung in einem (unsichtbaren) Konsolenprogramm ausführen zu lassen
und dieses wiederum über Messages vom Hauptprogramm zu steuern. Den Rumpf stelle ich mir so vor:
Delphi-Quellcode:
Program Packer;
{$APPTYPE CONSOLE}
{$R *.res}
{$DEFINE DEBUG}
Uses
Winapi.Windows, System.SysUtils, System.Classes,
Vcl.Graphics;
Var
bRet : Integer;
Msg :
Winapi.Windows.TMsg;
Begin
While True
Do
Try
// Hier kommt das Laden und Komprimieren des Bitmap
Sleep(50);
Except
On E:
Exception Do
With TStringList.Create
Do
Try
Try LoadFromFile('
Log.txt');
Except End;
Append(E.ClassName + '
: ' + E.
Message);
SaveToFile('
Log.txt');
Finally
Free;
End;
End;
End.
Wo/wie kann ich die Messages abfangen?
Wie das mit dem
Message Loop grundsätzlich funktioniert, habe ich anhand diverser Beispiel-Codes gesehen (
GetMessage
,
TranslateMessage
,
DispatchMessage
). Dann hätte ich die Messages. Allerdings habe ich Test-Code an diversen Stellen eingefügt, ohne dass dieser ausgeführt würde...
Gruß, Alex