AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Threads

Ein Thema von lkz633 · begonnen am 6. Aug 2003 · letzter Beitrag vom 8. Aug 2003
Antwort Antwort
lkz633

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

Threads

  Alt 6. Aug 2003, 19: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
Assarbad
(Gast)

n/a Beiträge
 
#2

Re: Threads

  Alt 6. Aug 2003, 19:56
Also, entweder du nimmst eine globale Variable oder definierst eine Property in deiner Threadklasse, oder du benutzt echte Threads.

Bei echten Threads hast du die Option an die Threadfunktion einen Pointer zu übergeben, der auf die Daten zeigt.

Wenn ich was falsch verstanden habe, dann melde dich nochmal
Übrigens, wenn die Synchronisation mit CopyFile oder ähnlichem vor sich geht, könntest du APCs (Asynchronous Procedure Calls) benutzen um die "Arbeit" ans System zu delegieren.
  Mit Zitat antworten Zitat
lkz633

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

Re: Threads

  Alt 8. Aug 2003, 00:08
Zitat von Assarbad:
Also, entweder du nimmst eine globale Variable oder definierst eine Property in deiner Threadklasse, oder du benutzt echte Threads.
Koenntest du das genauer erklaeren? Wie gesagt, habe noch nicht soviel Ahnung von der Materie.

Dank und Gruss
lkz633
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:25 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