AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Thread mit komischem Verhalten

Ein Thema von Schwedenbitter · begonnen am 18. Jan 2016 · letzter Beitrag vom 19. Jan 2016
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

AW: Thread mit komischem Verhalten

  Alt 19. Jan 2016, 11:55
TCanvas ist nicht thread-safe und kann auch nicht thread-safe verwendet werden (intern gibt es da globale Abhängigkeiten) und darum ist TBitmap nicht thread-safe.
OK, das erklärt es. Man könnte dann aber auf die Windows API Bitmap Funktionen zurückgreifen und so die Klasse TCanvas vermeiden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#12

AW: Thread mit komischem Verhalten

  Alt 19. Jan 2016, 12:33
manuell in den ScanLines kann man auch rumhantieren, bzw auf dem HDC ohne die Funktionen des TCanvas (wie Luckie anregte), aber da natürlich nur TCanvas.Handle zusammen mit Delphi-Referenz durchsuchenTCanvas.Lock.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#13

AW: Thread mit komischem Verhalten

  Alt 19. Jan 2016, 13:46
Ich ändere doch gar nichts am Bitmap. Ich lade lediglich die Datei, um dann mittels TPngImage.Assign(); aus dem Bitmap eine PNG zu machen und diese dann zu speichern.

Ich habe jetzt den Units runtergeladen, um TBitmap32 nutzen zu können. Allerdings weigert sich das laufende Programm - der Compiler bringt keinen Fehler -, die Bilddaten mittels Assign an ein TPngImage weiterzugeben. Ich bilde mir ein, gestern Abend bei meinen Recherchen so etwas wie ein ein passendes PNG gesehen zu habe. Ich finde das aber irgendwie nicht wieder.

Kann mir dabei jemand noch helfen?
Hier hat leider niemand mehr geantwortet.
Alex Winzer
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
294 Beiträge
 
Delphi 12 Athens
 
#14

AW: Thread mit komischem Verhalten

  Alt 19. Jan 2016, 14:43
Schau mal hier vorbei http://sourceforge.net/projects/gr32pnglibrary/
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#15

AW: Thread mit komischem Verhalten

  Alt 19. Jan 2016, 14:54
Ich ändere doch gar nichts am Bitmap. Ich lade lediglich die Datei,
Lesen oder Schreiben ... du greifst multithreaded auf Dinge zu, die nicht threadsave sind.

Auch beim Lesen gibt es manchmal Schreibzugriffe (1), bzw. es knallt, wenn man was lesen will, daß jemand anderes grade verändern täte.

1) Gutes Beispiel sind (File)Streams. Da wird der Lesezeiger/Position veändert, während man liest. (außer man verwendet die entsprechenden asynchronen Lesefunktionen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#16

AW: Thread mit komischem Verhalten

  Alt 19. Jan 2016, 17:13
Danke. Das funktioniert perfekt.
Gibt es dazu auch ein Pendant für JPG? Ich suche schon eine ganze Weile. Und alles was ich bislang dazu gefunden habe basiert darauf, dass TBitmap32 zunächst zu einem TBitmap assigned und dieses wiederum zu einem TJPEGImage assigned wird.
Damit habe ich aber wieder das TBitmap drinnen, was mir gerade die Probleme mit dem Thread verursacht
Alex Winzer
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#17

AW: Thread mit komischem Verhalten

  Alt 19. Jan 2016, 18:08
Natürlich, den Canvas muss man in Threads locken. Beim Assign() wird, wenn ich das richtig vermute, wohl auch über den Canvas gearbeitet (bzw. dessen Handle via BitBlt o.ä.). Davon bin ich ausgegangen, sorry.
Ließe sich damit evtl. nicht auch das Problem von Schwedenbitter lösen? Auch müsste noch geklärt werden, wie sich ggf. TPNGImage in einem Thread verhält.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#18

AW: Thread mit komischem Verhalten

  Alt 19. Jan 2016, 18:25
Haben wir schon alles durchgekaut

http://www.delphipraxis.net/186810-t...-bitmap-4.html
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#19

AW: Thread mit komischem Verhalten

  Alt 19. Jan 2016, 20:13
Gibt es dazu auch ein Pendant für JPG? Ich suche schon eine ganze Weile. (...)
Scheinbar gibt es hier etwas, was funktionieren könnte. Leider sind die Links auf der Seite vom Entwickler irgendwie alle tot, obwohl das letzte Update vom 8. Juni 2015 stammen soll.

[OT] Kann mir jemand sagen, wie man dieses Verzeichnis runterladen kann, ohne jede einzelne Datei anklicken zu müssen?[/OT]
Alex Winzer
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#20

AW: Thread mit komischem Verhalten

  Alt 19. Jan 2016, 22:50
Ich habe jetzt 2 Versionen von Hand heruntergeladen
Die benötigten Dateien habe ich isoliert, compiliert etc. Das Programm lässt sich compilieren.
Allerdings bekomme ich jetzt beim TsdJpegGraphic32.Assign(TBitmap32); die Fehlermeldung
Zitat:
Can't allocate the DIB handle.
Wie finde ich die Ursache heraus?

Ich vermute, dass der Entwickler eine ältere Version von GR32 genutzt hat und diese Versionen nicht mehr kompatibel sind. Ich habe den Quellcode inkl. den zugehörigen Dateien mal angehängt.
Angehängte Dateien
Dateityp: zip Bitmap32.zip (471,2 KB, 5x aufgerufen)
Alex Winzer
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 01:51 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