Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit Threads (https://www.delphipraxis.net/85263-problem-mit-threads.html)

Robert Marquardt 28. Jan 2007 17:59

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.

Nils_13 28. Jan 2007 18:02

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;

Robert Marquardt 28. Jan 2007 18:38

Re: Problem mit Threads
 
Na das ist gesund. Mist, schon wieder eine Fehlerquelle weniger.

Nils_13 31. Jan 2007 14:43

Re: Problem mit Threads
 
*push*

[ich habe jetzt schon ein paar Tage gewartet]

ste_ett 1. Feb 2007 07:48

Re: Problem mit Threads
 
Lade am Besten mal den Teil per Anhang hoch.
Im Moment muss man sich den code aus verschiedenen Posts zusammensuchen. :)

Nils_13 1. Feb 2007 14:09

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.

ste_ett 1. Feb 2007 22:03

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! :)

Nils_13 2. Feb 2007 10:12

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.

Karl-Heinz 15. Feb 2007 16:31

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.

Nils_13 22. Feb 2007 17:12

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.
Seite 3 von 4     123 4      

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