![]() |
CreateThread Win7
Seltsames problem
Beim erstellen eines Threads beendet meine Anwendung ohne eine Meldung auszugeben innerhalb der IDE beim debuggen. Stelle ich den Kompatibilitätsmodus der bds.exe auf WinXp servp.3 dann funktioniert alles so wie gewohnt. Kennt das jemand? gruss |
AW: CreateThread Win7
Wie siehts bei
![]() Edit: Mal schnell was gebastelt, funktioniert bei mir auch Win7 im Debugger. |
AW: CreateThread Win7
Zitat:
BeginThread funktioniert nicht so wie mit CreateThread
Delphi-Quellcode:
Mit eingestellten Kompatibilitätsmodus geht es ja aber dann ist mein Window = Xp wenn ich das OS gegenprüfen will.
ThreadHandle := CreateThread(nil, 0, @BassVisNewThread, pointer(ModuleNum),
0, DriveThreadId); Also sobald ich in der EXE ein Plugin oder aber nur einen Ordner mit Dateien öffnen will wird das Debuggen beendet ohne das die IDE abstürzt oder irgendeine Meldung kommt. Da stellt sich die Frage... Ob es überghaupt mit dem Thread zu tun hat. Beendet ja schon wie gesagt bei der auswahl eines Ordners. bzw. beim Klick auf meinem Add-Button. Hmmm ... gruss |
AW: CreateThread Win7
Zitat:
Delphi-Quellcode:
function BeginThread(SecurityAttributes: Pointer; StackSize: LongWord;
ThreadFunc: TThreadFunc; Parameter: Pointer; CreationFlags: LongWord; var ThreadId: LongWord): Integer; var P: PThreadRec; begin if Assigned(SystemThreadFuncProc) then P := PThreadRec(SystemThreadFuncProc(ThreadFunc, Parameter)) else begin New(P); P.Func := ThreadFunc; P.Parameter := Parameter; end; IsMultiThread := TRUE; Result := CreateThread(SecurityAttributes, StackSize, @ThreadWrapper, P, CreationFlags, ThreadID); end; |
AW: CreateThread Win7
Und wo ist PThreadRec Definiert so das ich das mal testen kann?
gruss |
AW: CreateThread Win7
In der gleiche Unit.Wenn du die Sourcen hast, sollte das schnell zu finden sein.
|
AW: CreateThread Win7
Zitat:
gruss |
AW: CreateThread Win7
Bei der Architect Version sind keine Quellen dabei?
|
AW: CreateThread Win7
Zitat:
Ich habe keine Samples installiert wenn du das meinst. Ansonsten habe ich es in der System.pas gefunden. Aber die muss doch nicht extra eingebunden werden oder? Wird auf jedenfall bei mir nicht erkannt. gruss |
AW: CreateThread Win7
Delphi-Quellcode:
Strg drücken und auf den Datentpy klicken. Funktioniert auch bei BeginThread.
type
PThreadRec = ^TThreadRec; TThreadRec = record { WARNING: Don't change these fields without also changing them in the C++ RTL : winrtl/source/vcl/crtlvcl.cpp } Func: TThreadFunc; Parameter: Pointer; end; |
AW: CreateThread Win7
Zitat:
Obwohl es in der System.pas so deklariert ist. Verwende jetzt mal dein Schnipsel hier zum testen. Da ist was wrong Undeklariert "ThreadWrapper" Siehe Pic gruss |
AW: CreateThread Win7
Ich habe Delphi 2006 Entenscheiß. Da ist alles in Ordnung. Kann es sein, dass es fälschlicherweise als fehlerhaft markiert wurde? Aber für BeginThread musst du nichts einbinden, wenn es in der System.pas deklariert ist.
|
AW: CreateThread Win7
Zitat:
Ja klar war jetzt etwas verdutzt da du die Funktion hier gepostet hast. Da sie ja in der System.pas enthalten ist war das natürlich zum scheitern verurteilt diese nochmal extra einzubinden. Aber wie gesagt mit BeginThread kann ich keine Visualisierung starten das funktioniert einfach nicht. Was ist der Unterschied?
Delphi-Quellcode:
ThreadHandle := CreateThread(nil, 0, @BassVisNewThread, pointer(ModuleNum),
0, DriveThreadId);
Delphi-Quellcode:
???
ThreadHandle := BeginThread(nil, 0, @BassVisNewThread, pointer(ModuleNum),
0, DriveThreadId); gruss |
AW: CreateThread Win7
Wenn du BeginThread nutzt, darf die Thread-Funktion nicht als stdcll deklariert sein, glaube ich.
|
AW: CreateThread Win7
Zitat:
Ok hab es jetzt geändert und denke ist besser als CreateThread aber mein Problem ist damit nicht geklärt. Sobald ich den kompatibilitätsmodus ausschalte kann ich nicht mehr debuggen. Sobald ich auf den Button Add(Dateien addieren) klicke (unabhängig von der DLL) oder eine Visualisierung starten will DLL abhängig verabschiedet sich der Debugger.. bzw die Anwendung beendet und geht zurück in die IDE PS: Bei BeginThread ... ExitThread(0) oder EndThread verwenden? gruss |
AW: CreateThread Win7
Was passiert, wenn du die Anwneduing ohne den Debugger aus dem Explorer startest? Man darf nicht vergessen, dass die Visualisierung eine zusätzliche Komplexibilitätsschicht verursacht. keine Ahnung, was da abläuft. kannst das ganze auch ohne die Visualisierung testen in einer VM oder so? ansonsten, weiß ich da jetzt auch nicht weiter. Tut mir leid.
|
AW: CreateThread Win7
Zitat:
Kann halt ohne den XP Modus nicht debuggen. Egal welche Funktion ich ausführe das teil geht zurück in die IDE grrr.. :) Danke! gruss |
AW: CreateThread Win7
Schieße. Dann würde mir nur noch einfallen per ShowMessage zu debuggen, wenn es denn erforderlich ist. Natürlich eingefasst von Compilerdirektiven, damit du sie nicht alle wieder rauslöschen musst.
|
AW: CreateThread Win7
Zitat:
Was anderes fällt mir da jetzt auch nicht ein. Danke für deine Hilfe.. muss dann halt mit dem Kompatibilitätsmodus XP weiter arbeiten. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz