Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Systemfehler. Code: 1400 Ungültiges Fensterhandle (https://www.delphipraxis.net/118595-systemfehler-code-1400-ungueltiges-fensterhandle.html)

Bootscreen 11. Aug 2008 11:32


Systemfehler. Code: 1400 Ungültiges Fensterhandle
 
Moinsen

und wiedermal ich ^^

Diesmal habe cih das Problem das ich beim schließen meines Programmes folgenden Fehler bekomme:

http://img372.imageshack.us/img372/2...blage01kd4.jpg

Der Fehler tritt immer dann auf wenn ich im Programm meine Funktion in einem Thread starte. Starte ich die Funktion ohne Thread kommt kein Fehler.

Der Fehler kommt auch nur dann wenn ich folgenden Bereich drin lasse (kommentiere ich ihn aus geht es wieder).
Delphi-Quellcode:
   for iiii := 0 to ListBox4.Count -1 do
            begin
                Form1.Memo1.Lines.Clear;
                Form1.Memo1.Lines.Text := '';
                ListBox3.Items.Clear;
                ListBox2.Items.Clear;  
                Filename := ListBox4.Items.Strings[iiii];
                Memo1.Lines.LoadFromFile('Datanorm\'+Filename);
                for iii := 0 to Memo1.Lines.Count-1 do
                begin
                   datanormsatz := TStringList.Create;
                    line := Memo1.Lines[iii];
                    Split(';',line,datanormsatz);
                    if datanormsatz[0] = 'A' then
                        ListBox3.Items.Add(line);
                    if datanormsatz[0] = 'T' then
                        ListBox2.Items.Add(line);
                   datanormsatz.free;
                end;
               Label5.Caption := IntToStr(Listbox3.Count-1);

          Memo2.Lines.Add('Beginne Import von: '+ Filename);
                WriteLog('Beginne Import von: '+ Filename);
                //db_import;

            end;
Hoffe ihr seht wo mein Fehler liegt. kann euch auch gerne noch den Rest des Codes zeigen.

Aurelius 11. Aug 2008 11:33

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle
 
Läuft dieser Code innerhalb des Threades? Das wäre sehr ungünstig, in einem thread greift man nicht auf VCL-Komponenten zu.

mkinzler 11. Aug 2008 11:35

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle
 
In welcher Zeile (Debugger)?

Bootscreen 11. Aug 2008 11:36

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle
 
Er nennt mir keine Zeile.

Wieso greift man in einem Thread nicht auf VCL-Komponennten zu???

DeddyH 11. Aug 2008 11:37

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle
 
Weil die VCL nicht threadsafe ist. Ein Zugriff kann bzw. darf nur über Aufruf von Synchronize erfolgen.

mkinzler 11. Aug 2008 11:37

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle
 
Zitat:

Wieso greift man in einem Thread nicht auf VCL-Komponennten zu???
Weil die VCL (noch) nicht threadsicher ist.

Bootscreen 11. Aug 2008 11:41

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle
 
Ich versteh zwar grad nicht wieso aber ok.

Kann mir vllt jemand sagen wie ich es anstelle ohne auf die VCL zurückzugreifen?
Derzeit lade ich eine Textdatei runter, lade sie in ein memofeld splite dieses dann in zwei listen felder und splite dann weiter.

und ich ehrlich gesagt keine ahnung wie ich das ohne das memofeld und die lsitboxen anstellen soll


//edit: desweiteren habe ich auch eine progressbar die ich im thread aktualiesire. wie sol cih das alles denn machen wenn ich in einem thread nicht darauf zugreifen kann, darf, soll?

DeddyH 11. Aug 2008 11:54

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle
 
Schau mal in die Hilfe zu TThread.Synchronize

Bernhard Geyer 11. Aug 2008 12:12

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle
 
Zitat:

Zitat von mkinzler
Zitat:

Wieso greift man in einem Thread nicht auf VCL-Komponennten zu???
Weil die VCL (noch) nicht threadsicher ist.

Letztendlich ist es aber die WinAPI die für GDI/Fenster-Handles eine Thread-Affinität hat so das nur vom erzeugenden Thread auf ein GDI/Fensterhandle zugegriffen werden darf.

mkinzler 11. Aug 2008 12:24

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle
 
Mal sehen, was die kommende Threadlibrary von CodeGear bringt


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

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