Re: Problem mit Threads
Na dann hat aber Borland Mist gebaut. TThreadProc ist in meinem D6 nicht mit stdcall deklariert.
Gerade geht mir ein Licht auf. StatusProc greift vermutlich auf die VCL zu und die ist natuerlich nicht threadsafe. Bitte StatusProc posten. |
Re: Problem mit Threads
Delphi-Quellcode:
procedure StatusProc(buffer: Pointer; len, user: DWORD); stdcall;
begin if (buffer <> nil) and (len = 0) then SendMessage(win, WM_INFO_UPDATE, 8, DWORD(PChar(buffer))); end; |
Re: Problem mit Threads
Na das ist gesund. Mist, schon wieder eine Fehlerquelle weniger.
|
Re: Problem mit Threads
*push*
[ich habe jetzt schon ein paar Tage gewartet] |
Re: Problem mit Threads
Lade am Besten mal den Teil per Anhang hoch.
Im Moment muss man sich den code aus verschiedenen Posts zusammensuchen. :) |
Re: Problem mit Threads
Liste der Anhänge anzeigen (Anzahl: 1)
Hab was verwechselt... Hier ist das korrekte Projekt. Bitte erst die Komponente des Ornders Komponenten installieren. Wenn nicht, ist der Code dennoch da.
|
Re: Problem mit Threads
Ich hab mir den Code mal angeguckt.
1) Du hast kein "stdcall;" als Aufrufkonvention für "OpenURL()". Es funktioniert trotzdem (, da wahrscheinlich stdcall bei dir als Standard eingestellt ist). 2) Die Exception tritt auf, wenn du auf "urls" zugreifst. Dyn. Array mit 0 Elementen, du greifst ohne Prüfung auf ein Element zu. 3) Per Debugger hättest du das alles selbst rausgefunden! :) |
Re: Problem mit Threads
Zu
1.: Was genau heißt Standard. Code oder System ? 2.: Ich finde die Stelle wirklich nicht, wo dies der Fall sein könnte. Kannst du es mir sagen ? Bzw.: Ich versteh nicht, wie dies möglich sein kann. 3.: Das habe ich gemacht, bevor dieser Thread eröffnet wurde und während ihr mir weiterhelfen wolltet, habe ich auch debuggt. |
Re: Problem mit Threads
Hallo,
habe gestern mit dem gleichen Code herumgespielt (ein Beispielprojekt aus dem Bass-SDK). Hatte unter D5 die gleichen Probleme. Die OpenURL()-Procedure muss NICHT mit stdcall oder cdecl deklariert werden; soviel ist klar. Denn die Delphi-Funktion "BeginThread" erwartet einfach nur einen Pointer auf eine Procedure mit einem Pointer-Parameter. Auch die Lösung, die zu übergebende URL als pchar oder array of char zu übergeben (statt pchar(urlstring) ) brachte keinen Erfolg: Immer wenn ich in der Procedure OpenUrl (welche von BeginThread aufgerufen wird) nachgesehen habe, was denn als Url-Parameter übergeben wurde, kam - Zufall heraus. Mein Fazit: Nicht die Funktion BeginThread nutzen, sondern einen eigenen sauberen TThread-Abkömmling schreiben. |
Re: Problem mit Threads
Ok. Damit habe ich aber gewisse Startschwierigkeiten. Könnt ihr mir da bitte helfen ?
Delphi-Quellcode:
type
TMyThread = class(TThread) // ist aus dem Kopf, kA, ob das so stimmt procedure StartThread(?); procedure EndThread(?); private public end; procedure TMyThread.StartThread(?); begin ?? end; procedure TMyThread.EndThread(?); begin ?? end; // Ist jetzt noch die Frage, ob nötige andere Sachen nötig sind // ?/?? heißt, dass ich nicht weiß, was an diese Stelle muss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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