AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi TJPEGImage in Schleife in Thread
Thema durchsuchen
Ansicht
Themen-Optionen

TJPEGImage in Schleife in Thread

Ein Thema von dizzy · begonnen am 26. Nov 2003 · letzter Beitrag vom 26. Nov 2003
Antwort Antwort
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#1

TJPEGImage in Schleife in Thread

  Alt 26. Nov 2003, 17:49
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
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: TJPEGImage in Schleife in Thread

  Alt 26. Nov 2003, 19:59
1. die schlechte Nachricht:

- TJPEGImage ist nicht Thread-Sicher
- bei mir äußert sich das indem er ab und zu Bilder ausläßt (nicht vollständig lädt)
- abstürze gab es noch keine

2. eine gute Nachricht

das Problem wurde hier schon mal genannt und auch eine alternative Komponente angeprisen bei der es funktionieren soll.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: TJPEGImage in Schleife in Thread

  Alt 26. Nov 2003, 21:41
Mist, sowas hab ich befürchtet... Ich kann aber leider mit der Suche (die ich tatsaächlich auch vorm Fragen mal konsultiert habe ) nichts in diese Richtung finden. Mit "threadsicher" alleine sind's nur ca. 10 Thread (höhö, auch Threads...), und keiner hat irgendwas mit TJPEGImage oder dergleichen zu tun

Könntest du, oder jemand anderes, wohl einen kleinen netten Link zeigen? Ich such mich seit Tagen dumm mit dieser Sache. Zumal es ja, wenn man diese Kompo vereinzelt einsetzt, problemlos klappt. Nur in der Menge, und so fix hintereinander haut das nicht hin. Blöder Fehler, schwer zu finden

Bin für so ziemlich alle Alternativen offen!


Heissen Dank schonmal und nochmal!
gruss,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:27 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