AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Systemfehler. Code: 1400 Ungültiges Fensterhandle
Thema durchsuchen
Ansicht
Themen-Optionen

Systemfehler. Code: 1400 Ungültiges Fensterhandle

Ein Thema von Bootscreen · begonnen am 11. Aug 2008 · letzter Beitrag vom 12. Aug 2008
Antwort Antwort
Seite 2 von 2     12   
Bootscreen

Registriert seit: 8. Aug 2008
13 Beiträge
 
Delphi 2005 Personal
 
#11

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle

  Alt 11. Aug 2008, 13:13
Oh man ich glaub ich schmeiß das mit den Threads wieder über den haufen.

Gibt es eine andere Möglichkeit mit der ich Funktionen aufrufen kann und das Programm in der zwischenzeit nicht einfriert?
Ich hatte irgendwo mal was von ProcessMessages oder so gelesen. Wäre das noch eine alternative mit der ich diese ganzen Probleme nicht habe?
MfG Bootscreen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.545 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle

  Alt 11. Aug 2008, 13:18
Das heißt Application.ProcessMessages (Unit Forms) und bewirkt, dass bei einem Aufruf die Botschaftswarteschlange abgearbeitet wird. Allerdings verlangsamt dies Dein Programm. Wenn Du also eine große Anzahl an Daten hast, solltest Du Application.ProcessMessages nur alle z.B. 100 Sätze aufrufen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Bootscreen

Registriert seit: 8. Aug 2008
13 Beiträge
 
Delphi 2005 Personal
 
#13

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle

  Alt 11. Aug 2008, 14:37
naja soviele nachrichten ahb ich nicht.

http://img512.imageshack.us/img512/2...lage01snu0.jpg

so schaut halt mein programm imoment aus, das untere ist ein memo feld wo halt die nachrichten was gemacht wird und eventuelle fehler hinzugefügt werden, aber das wars auch an anchrichten.
aber ich würde halt auch gerne die statusbar und die anzahl x von y nutzen. wäre das mit Application.ProcessMessages machbar ohne dass das programm elendig alngsam wird? (was es egtl eh schon durch den datenbank zugriff ist)
MfG Bootscreen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.545 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle

  Alt 11. Aug 2008, 14:43
Wie gesagt, abhängig von der Datenmenge sollte man Application.ProcessMessages behutsam einsetzen. Wenn es aber nur eine Handvoll Daten sind, kannst Du es auch hinter jede Änderung von sichtbaren Komponenten (z.B. Position der Progressbar) setzen. Probier halt mal ein bisschen rum, bis Du den für Dich richtigen Wert ermittelt hast.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Bootscreen

Registriert seit: 8. Aug 2008
13 Beiträge
 
Delphi 2005 Personal
 
#15

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle

  Alt 11. Aug 2008, 14:55
ok also muss ich im programm aus z.b.
Memo1.Lines.Add('Beginne Download');
Delphi-Quellcode:
Memo1.Lines.Add('Beginne Download');
Application.ProcessMessages;
machen?
MfG Bootscreen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.545 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle

  Alt 11. Aug 2008, 15:01
So in etwa. Ich würde allerdings alle veränderlichen Komponenten mit den jeweils neuen Werten bestücken (also das Memo, die Progressbar etc.) und anschließend einmalig Application.ProcessMessages aufrufen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
automatix

Registriert seit: 1. Mai 2008
Ort: Remscheid
39 Beiträge
 
Delphi 2007 Enterprise
 
#17

Re: Systemfehler. Code: 1400 Ungültiges Fensterhandle

  Alt 12. Aug 2008, 07:59
Hallo!

Oder wenn Du weiterhin einen Thread verwenden willst, könnte es etwa so aussehen (Nicht getestet, einfach runtergetippt). Nicht schön, aber ...

Delphi-Quellcode:
unit ThreadDummy;

interface

uses
  SysUtils, Classes;

type
  TThreadDummy = class(TThread)
  private
    { Private-Deklarationen }
    FFileCount: Integer;
    FFileIndex: Integer;
    FFileName: string;
     FLine: string;
    procedure GetFileCount;
    procedure GetFileName;
    procedure Listbox2Add;
    procedure Listbox3Add;
    procedure Split(const aParam1: string;
                    const aParam2: string;
                    const aParam3: TStrings);
  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 TThreadDummy.UpdateCaption;
    begin
      Form1.Caption := 'Aktualisiert in einem Thread';
    end; }


uses
   FormStart;

{ TThreadDummy }

procedure TThreadDummy.Execute;
var
   files, lines: Integer;
  data, datanormsatz: TStringList;
begin
  { Thread-Code hier einfügen }

  data := nil;
   datanormsatz := nil;
  try
    data := TStringList.Create;
    datanormsatz := TStringList.Create;

    Synchronize(GetFileCount);
    for files := 0 to FFileCount do begin
        Synchronize(Form1.ListBox1.Clear);
        Synchronize(Form1.ListBox2.Clear);
        FFileIndex := files;
        Synchronize(GetFileName);
       data.LoadFromFile('Path' + FFileName);
      for lines := 0 to data.Count - 1 do begin
         datanormsatz.Clear;
        FLine := data[lines];
        Split(';', FLine, datanormsatz);
        if datanormsatz[0] = 'Athen
          Synchronize(Listbox3Add);
        if datanormsatz[0] = 'Tthen
          Synchronize(Listbox2Add);
      end;
    end;
  finally
     FreeAndNil(data);
    FreeAndNil(datanormsatz);
  end;
end;

procedure TThreadDummy.GetFileCount;
begin
   FFileCount := Form1.ListBox4.Count;
end;

procedure TThreadDummy.GetFileName;
begin
   FFileName := Form1.ListBox1.Items[FFileIndex];
end;

procedure TThreadDummy.Listbox2Add;
begin
  Form1.ListBox2.Items.Add(FLine);
end;

procedure TThreadDummy.Listbox3Add;
begin
  Form1.ListBox3.Items.Add(FLine);
end;

procedure TThreadDummy.Split(const aParam1: string;
                             const aParam2: string;
                             const aParam3: TStrings);
begin
   // Do split
end;
Grüße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 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