Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi BeginThread mit 64bit compiler [gelößt] (https://www.delphipraxis.net/183604-beginthread-mit-64bit-compiler-%5Bgeloesst%5D.html)

himitsu 22. Jan 2015 21:23

AW: BeginThread mit 64bit compiler
 
Zitat:

Zitat von BUG (Beitrag 1287508)
Ist niemand aufgefallen das rec_ThreadParams auf dem Stack liegt? :gruebel:
Dem Thread wird nur die Adresse von rec_ThreadParams übergeben. Wenn prcCheckPaths zurückkehrt ist der Inhalt der Variable undefiniert. Der Thread greift über den Zeiger auf den String zu, der einen weiteren, ungültigen Zeiger enthält: Boom!

Noch besser:
Es gibt diese Variable nur einmal, Threads starten fast nie sofort, wenn man sie startet, und selbst wenn sie das tun, dauert es dennoch ein paar Befehle, bis es zum Auslesen der Veriable kommt ... also wenn die Variable für den nächsten Thread befüllt wird (siehe die Schleife), kann/wird/werden der/die vorher gestarteten Threads noch garnicht die Variable ausgelesen haben, oder sie machen es grade dann, wenn man die Variable nicht threadsave verändert usw.

Selbst mit TThread ist dieses Problem nicht gelöst.



Fazit: Man solle erstmal lernen und vorallem verstehen wie man Werte an Threads übergibt. (PS: mit Feldern in einer eigenen TThread-Klasse geht das natürlich auch sehr einfach, oder mir einer anonymen Threadmethode)

OlliWW 23. Jan 2015 08:01

AW: BeginThread mit 64bit compiler
 
Vielen Dank an alle für ihre Hilfe
Zitat:

Zitat von himitsu (Beitrag 1287513)
Fazit: Man solle erstmal lernen und vorallem verstehen wie man Werte an Threads übergibt.

Vielen Dank für den Seitenhieb :thumb:
Der eingangsgenutzte Code stammt übrigens hier aus dem Forum:
http://www.delphipraxis.net/889257-post4.html

Nutze jetzt TThread und es funktioniert :roll:

Bernhard Geyer 23. Jan 2015 08:52

AW: BeginThread mit 64bit compiler
 
Zitat:

Zitat von OlliWW (Beitrag 1287527)
Der eingangsgenutzte Code stammt übrigens hier aus dem Forum:
http://www.delphipraxis.net/889257-post4.html

Und gleich der nächste Poste weißt auf die Einschränkungen hin:
http://www.delphipraxis.net/889259-post5.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 Uhr.
Seite 2 von 2     12   

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