![]() |
thread fehler: coInitialize wurde nicht aufgerufen ?
diesen fehler bekomme ich, wenn ich mein thread starte ? woran kann das liegen ?
Delphi-Quellcode:
var
id1:longword; Procedure test(Parameter : Pointer); begin showmessage('mein thread'); end; BeginThread(nil, 0, Addr(test), nil, 0, id1); |
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
kann es sein , dass threads mit dualcores abkacken ?
|
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
Warum verwendest du nicht die Klasse TThread?
Das sähe dann so aus:
Delphi-Quellcode:
ShowMessage innerhalb eines Threads (ohne Synchronize) ist übrigens verboten.
procedure TAgm65Thread.Execute;
var i : integer; begin CoInitialize(nil); try for i:=0 to 100 do begin sleep(100); Beep(1000 + i*20, 30); if i = 50 then Synchronize(Ausgabe); end; finally CoUninitialize; end; end; procedure TAgm65Thread.Ausgabe; begin ShowMessage('Meldung vom Thread'); end; Zitat:
|
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
Füge mal die Unit ActiveX hinzu und rufe vor dem Erstellen des Threads CoInitialize(nil) auf.
|
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
Zitat:
|
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
bekomme jetzt eine fehler meldung ungültiges fenster handle...gibt es bestimmte arten wie man in einem thread fenster behandelt ?
auf einmal verschwindet mein button ;) ? |
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
Zitat:
ShowMessage innerhalb eines Threads (ohne Synchronize) ist übrigens verboten. Hast du umgestellt auf die TThread-Klasse??? Wenn nein, warum nicht??? |
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
Zitat:
|
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
also vcl und threads nicht zusammen ohne fehler ?? aber ich brauche eine anzeige.. damn
|
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
Zitat:
Mein Fragen werden von dir auch nicht beantwortet. :evil: Du sollst die Klasse TThread in Verbindung mit der Methode Synchronize verwenden! |
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
hey sorry...das war echt unhöflich....okay kannst du mir genu erklären wie ich das machen ? ich habe keinen plan... :) sorry nochmal
|
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
Hallo,
du musst ganz einfach alle fensteroperationen im hauptthread durchführen. das machst du mit ![]() |
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
kannst du mir code dazu posten ich stehe grade total auf dem schlauch...kriege nichtmal den hauptthread hin. okay ich bin morgen wieder da...in aller frische ! aber danke für kommenden antworten !
|
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
*push*
|
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
Hallo,
implementiere einfach ein neues TThread-Derivat (Date->Neu->Thread). Definiere ein public-feld "window" bzw. ein private-Feld "Window", das du im Konstruktor belegen lässt. Definiere eine Prozedur "DoWindowOperation", in der du Fenster-Operationen durchführst und private-felder für alle Informationen, die diese Prozedur brauchen könnte. In deiner überschriebenen Execute-Methode gehst du nun so vor:
Delphi-Quellcode:
Selbstverständlich kannst du auch eine extra-Prozedur "UpdateProgressLabel" definieren.
self.WindowOperationType := wotSetLabelCaption;
self.WOpTargetLabel := SomeLabelIGotTheReference; self.WOpTargetLabelNewCaption := '95%'; //whatever... Synchronize(DoWindowOperation); Wichtig: Diese Prozedur kann leider keine Parameter übernehmen. |
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
also wenn ich zB das einbinde, dann bringt er mir das Synchronize als bezeichner nicht gefunden ?
Delphi-Quellcode:
unit Unit2;
interface uses Classes; type test = class(TThread) private { Private-Deklarationen } protected procedure Execute; override; end; implementation { Wichtig: Methoden und Eigenschaften von Objekten in visuellen Komponenten dürfen nur in einer Methode namens Synchronize aufgerufen werden, z.B. Synchronize(UpdateCaption); und UpdateCaption könnte folgendermaßen aussehen: procedure test.UpdateCaption; begin Form1.Caption := 'Aktualisiert in einem Thread'; end; } { test } procedure test.Execute; begin { Thread-Code hier einfügen } end; end. |
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
Zitat:
|
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, im Anhang ein Demoprojekt. Sollte eigentlich selbsterklärend sein.
Deinem ActiveX-Problem hilft das aber nicht. EDIT: Neu hochgeladen. |
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
cool danke, ich kriege die zip file nicht entpackt ;) lol weder mit rar noch mit zip
! H:\thread-form-demo.zip: Unknown method in Pthreadform.bdsproj ! H:\thread-form-demo.zip: Unknown method in Pthreadform.dpr ! H:\thread-form-demo.zip: Unknown method in UfoMain.dfm ! H:\thread-form-demo.zip: Unknown method in UfoMain.pas ! H:\thread-form-demo.zip: Unknown method in UthrThread.pas ! H:\thread-form-demo.zip: Keine Dateien zum Entpacken |
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
Hallo,
sorry, 7zip verwurschtet die zip-archive da :roll: ich schieb gleich oben n neues rauf. |
Re: thread fehler: coInitialize wurde nicht aufgerufen ?
danke dir !
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 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