Thema: Delphi Threads

Einzelnen Beitrag anzeigen

lkz633

Registriert seit: 9. Jun 2002
Ort: Aachen
221 Beiträge
 
#1

Threads

  Alt 6. Aug 2003, 20:45
hallo,

bitte entschuldigt erstmal, das ich hier so viel Code poste, bin aber grad ein wenig verwirrt und hoffe so Licht ins Dunkel zu bringen.

Also ich hatte folgenden Code:

Code:
procedure Tfmain.LaptoptoPC;
begin
  showmovie(true);
  // mache hier eine synchronisation von mehreren Datenbanken
  showmovie(false);
end;
Wobei showmovie dieser Code ist:
Code:
begin
  if show= true then begin
    for i:= 0 to fmain.ControlCount-1 do
      fmain.Controls[i].Visible:= false;
    with fmain.Animate do begin
      visible:= true;
      active:= true;
    end;
  end ;
  else begin
    for i:= 0 to fmain.controlCount-1 do
      fmain.Controls[i].Visible:= true;
    with fmain.Animate do begin
      visible:= false;
      active:= false;
    end;
  end;
end;
Alles was dieser Code macht ist, dass waehrend die Synchronisation laeuft, ein Film gezeigt wird, der Film ist das fliegende Paier zwischen 2 Ordnern.

Natuerlich lief der Film nicht richtig fluessig und auch ein Application.processmessages hat mich nicht weitergebracht.

Deswegen will ich es nun mit einem Thread loesen und hoffe so, mein problem zu loesen.

Bin leider totaler Newbie und habe nun mal folgenden Code, der aber leider nicht funktioniert, es kommt zwar keine Fehlermeldung, aber es wird auch nichts gemacht. braeuchte jetzt ein paar Hilfen, was ich falsch mache, was ich beachten muss usw.

Habe jetzt mal folgenden Code:

Code:
begin
  th:= showmovie_thread.Create(true);
  // datenbanksynchonisation
  th.Terminate;
  end;
Und hier der code der Thread-Unit:

Code:
unit thread;

interface

uses
  Classes,umain;

type
  showmovie_thread = class(TThread)
  private
    { Private-Deklarationen }
  protected
    procedure Execute; override;
    procedure showmovie;
  end;

implementation

procedure showmovie_thread.Execute;
begin
  Synchronize(showmovie);
end;


procedure showmovie_thread.showmovie;
var i: integer;
begin
  //if show= true then begin
    for i:= 0 to fmain.ControlCount-1 do
      fmain.Controls[i].Visible:= false;
    with fmain.Animate do begin
      visible:= true;
      active:= true;
    end;
  //end ;
 { else begin
    for i:= 0 to fmain.controlCount-1 do
      fmain.Controls[i].Visible:= true;
    with fmain.Animate do begin
      visible:= false;
      active:= false;
    end;
  end;}
end;

end.
wie ihr seht habe ich es auch nicht hinbekommen, die alte showmovie prozedur so zu uebernehmen(mit true/false), da ich die Variable nicht uebergeben konnte,falls da auch noch jemand eine Idee hat waere das spitze.


Vielen, vielen Dank fuer eure Hilfe

lkz633

PS: Ich verlange wirklich keinen fertigen Code und habe selbstverstaendlich auch die Suche/OH benutzt, bitte verdammt mich nicht
  Mit Zitat antworten Zitat