Erstmal möchte ich ein dickes
HALLO an die Community los werden!
(Bin nämlich ganz ein frischer Frischling hier...)
Und damit ihr euch nicht zu lange mit Begrüßungsfloskeln langweilen müsst, habe ich auch direkt eine Frage. Die bezieht sich auf einen meiner Threads von delphi-groups, nur habe ich den Eindruck, dass dort keinem mehr was dazu einfällt (ist auch kein alltägliches Problem...), und meiner einer total auf'm Schlauch steht.
http://www.delphi-groups.de/YaBBSe/i...threadid=18036
Kurzeschreibung, damit ihr nicht den Riesenthread oben ganz durchackern müsst:
In meinem Programm werden in einer Schleife sehr schnell hintereinander *.jpg-Bilder mit "TJPEGImage.LoadFromFile" gelesen, und dann einem Bitmap übergeben. Das ganze soll dazu dienen eine große Menge an jpeg's miteinander zu vergleichen (in meinem Fall gut 13.000 jpegs...).
Da der Vorgang schon etwas Zeit in Anspruch nimmt und die Kiste sehr lange lahm legt, habe ich mir mal TThread angeschaut, und mein (bis dahin klaglos funktionierendes Programm) mit einem hübschen 2. Thread versehen, in dem die Vergleiche ablaufen.
Nur spuckt mir TJPEGImage da kräftig in die Suppe
Und zwar, sobald man das Programm zu Laufzeit etwas "ärgert" (sprich: Resizen, draufklicken, rumschieben), bekomme ich die Fehlermeldung: "Für diese Operation steht nicht genügend Speicher zur Verfügung".
Die Krux ist: Das Teil lief vorher (als es noch alles im Mainthread lief), und mit der Splittung in 2 Threads habe ich keinerlei Änderungen an dem Lade-/Suchverfahren vorgenommen.
Das Programm belegt im Speicher selten mehr als 10MB, und trotzdem hauts mich irgendwann raus...
Nach längerer "Auskommentier-Session" habe ich dann TJPEGImage als Fehlerquelle ausgemacht. Sobald ich (nahezu kompletter Quelltext unter obigem Link!) die Zeilen "jpg.LaodFromFile(sowieso)" rauslasse rennt das Programm wie 'ne eins.
Dann hab ich's mal mit TMemoryStream versucht, da TJPEGImage auch ein "LoadFromStream" bietet, aber das Symptom war das gleiche. Auch ein kleiner "Sleep(100)" nach dem Laden des jpegs, um etwas Zeit fürs dekomprimirern zu lassen, half kein bischen; zumal das auch unlogisch gewesen wäre, da es ja genau so, nur halt im MainThread, gelaufen ist. Sogar eine ganze Nacht durch...
Weiss da wohl einer von euch, warum mich TJPEGImage in nem Thread nicht mag?
Ich danke schonmal kräftig im Voraus!
Herzlichsten,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel