AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi TImage überlastet ?
Thema durchsuchen
Ansicht
Themen-Optionen

TImage überlastet ?

Ein Thema von DataCool · begonnen am 12. Feb 2005 · letzter Beitrag vom 14. Feb 2005
Antwort Antwort
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#1

TImage überlastet ?

  Alt 12. Feb 2005, 03:39
Hi Leute,

vorweg erstmal den Workaround :
Es geht um Bildübertragung und Anzeige der empfangenen Bilder!

Das Problem:
In einer alten Version meines Programms habe ich die empfangenen Bilder, in einem TImage innerhalb der Main-Form angezeigt.
Die Bilder habe ich innerhalb eines seperaten Threads empfangen und diese dann aus dem Thread in das Image gespielt :

Code:

(*

  Thread holt Bild ....
  Synchronize(PaintImage);

*)

procedure TVideoStreamThread.PaintImage;
begin
  DrawImage.Picture.Assign(aktPic);
end;
Das lief alles wunderbar !

Jetzt in der neu Version meines Programms habe ich das Bild in eine seperate Form(nicht Main-Form) ausgelagert.
Wenn ich jetzt innerhalb meines Threads mit Syncronize arbeite steht alles.
Lasse ich es weg, läuft es sogar noch etwas schneller als in der alten Version.
Jetzt bekomm ich aber von einigen Beta-Tester, immer wieder Hinweise von sporadischen, aber doch sehr häufigen Fehlermeldungen, diese gehen von "Ungültige Zeigeroperation", über einfache "Zugriffsverletzungen" bishin zu "Abstrakten Fehlern".
Die Bildübertragung ist eigentlich exakt der gleiche Code wie in der vorgänger-Version, einziger Unterschied :
- Kein syncronite des PaintImage, weil Image nicht auf der Main-Form sitzt.

Ich hab das ganze jetzt auch mal durch Logfile nachvollziehen können, es knallt wirklich mit den oben genannten Fehlermeldungen immer im PaintImage.

Hat jemand ne Ahnung oder nur den Ansatz einer Idee, wo da der Hund begraben liegt ?

Thx Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: TImage überlastet ?

  Alt 12. Feb 2005, 09:57
Im synchronize
Die VCL ist nicht Threadsafe. Wenn du es ohne synchronize machen möchtest, musst du API-Funktionen verwenden, wie z.B. MSDN-Library durchsuchenStretchBlt
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#3

Re: TImage überlastet ?

  Alt 12. Feb 2005, 10:07
Delphi-Quellcode:
canvas.lock
canvas.unlock
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: TImage überlastet ?

  Alt 12. Feb 2005, 18:45
Hi,

@Gandalfus:
Canvas.lock und Canvas.unlock habe ich probiert, es zeichnet sich kein einziges Bild:!

@jfheins:
Das die VCL nicht Threadsafe ist, ist mir auch klar !
Die hab ich in der alten Version meines Progs(wo das Image ja auf der Main-Form war) mit syncronize gearbeitet, obwohl nur im ein Thread das Bild liefert.
In der neuen Version habe ich auch nur einen Thread der Bilder besorgt, wie gesagt nur das Image liegt jetzt nicht auf der Main-Form, ich kann nicht wirklich verstehen oder glauben, das es an der VCL liegen sollte.
Aber ich werds mal mit der API testen.
Probieren geht über studieren.

Thx an beide,

Data

Nachtrag: Die Bilder sind keine Bmps sondern Jpgs und nun ? Jedesmal vorher umwandeln ?
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: TImage überlastet ?

  Alt 14. Feb 2005, 02:22
Push

@jfheins:
Hab das mit StretchBlt und jpg nicht hinbekommen, ne ahnung wie ich da ansetzen muss, worauf zeichne ich den dann ?

Gruß Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  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 09: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