AGB  ·  Datenschutz  ·  Impressum  







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

Threads erstellen

Ein Thema von jeroen_a · begonnen am 15. Aug 2006 · letzter Beitrag vom 16. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
jeroen_a

Registriert seit: 15. Aug 2006
56 Beiträge
 
#1

Threads erstellen

  Alt 15. Aug 2006, 14:24
Hi,

kann mir mal bitte ein kurz sagen wie ich Threads in Delphi nutze.
Um genau zu sein möchte ich wissen wie man sie erstellt und dann aufruft.
Ich ärger mich langsam tot, weils nirgendwo ordendlich erklährt ist.


jeroen
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#2

Re: Threads erstellen

  Alt 15. Aug 2006, 14:26
http://www.michael-puff.de/Developer...mit_Delphi.pdf
  Mit Zitat antworten Zitat
jeroen_a

Registriert seit: 15. Aug 2006
56 Beiträge
 
#3

Re: Threads erstellen

  Alt 15. Aug 2006, 14:51
jo das ist schon ganz gut,

aber besser währs ein kleines programm, woran man genau sieht wie's funzt


jeroen
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Threads erstellen

  Alt 15. Aug 2006, 14:52
Zitat von jeroen_a:
aber besser währs ein kleines programm, woran man genau sieht wie's funzt
Wühl dich mal bei den Delphi Demos durch... Dort gibts ein Ordnen namens ThreadDemo.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Threads erstellen

  Alt 15. Aug 2006, 14:54
Lesen hilft:
Zitat von Luckies Tutorial:
Bezugsquellen / Downloadmöglichkeiten:
Dieses PDF Dokument und Sourcen der Demos: www.luckie-online.de
Ergo gibt es da auch noch Demos zu: http://www.michael-puff.de/dirindex....phi/Tutorials/
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
jeroen_a

Registriert seit: 15. Aug 2006
56 Beiträge
 
#6

Re: Threads erstellen

  Alt 15. Aug 2006, 20:01
viel danke,

aber es hilf mir auch nciht weiter.

hat vieleicht jemand ein ganz einfaches beispiel, am besten eins wo im thread einfach nur sleep() drin steht.


jeroen
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

Re: Threads erstellen

  Alt 15. Aug 2006, 20:07
Delphi-Quellcode:
//Threadklasse deklarieren und Execute überschreiben
type
  TSelfThread = class(TThread)
    procedure Execute; override;
end;

//Threadvariable deklarieren
var
  SelfThread: TSelfThread;

[..]

procedure TSelfThread.Execute;
begin
  Sleep(10);
end;

procedure Form1Create(Sender: TObject);
begin
  SelfThread := TSelfThread.Create(true); //Thread inaktiv erzeugen
  SelfThread.FreeOnTerminate := true; //Thread nach dem Beenden freigeben
  SelfThread.Resume; //Thread aktivieren
end;
soll der Thread eventuell mit übergeben Werten arbeiten und etwas zurückgeben:

Delphi-Quellcode:
//Threadklasse deklarieren und Execute überschreiben
type
  TSelfThread = class(TThread)
    Value: integer;
    InternI: integer;
    procedure Execute; override;
    procedure UpdateProgress;
end;

//Threadvariable deklarieren
var
  SelfThread: TSelfThread;

[..]

procedure TSelfThread.UpdateProgress;
begin
  Form1.ProgressBar1.Position := InternI;
end;

procedure TSelfThread.Execute;
var
  i,
  int: integer;
begin
  for i := 0 to Value do
  begin
    int := int + 20;
    InternI := i;
    Synchronize(UpdateProgress);
  end;
end;

procedure Form1Create(Sender: TObject);
begin
  //Der Fortschrittsanzeige die Max und Min Werte zuweisen
  ProgressBar1.Min := 0;
  ProgressBar1.Max := 50;
  ProgressBar1.Position := 0;

  SelfThread := TSelfThread.Create(true); //Thread inaktiv erzeugen
  SelfThread.FreeOnTerminate := true; //Thread nach dem Beenden freigeben
  SelfThread.Value := 50; //Werte übergeben
  SelfThread.Resume; //Thread aktivieren
end;
Das wars eigentlich schon.
Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
C.Schoch

Registriert seit: 2. Jan 2006
Ort: Wüstenrot
235 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Threads erstellen

  Alt 15. Aug 2006, 20:29
Eines ist noch zu beachten soll der Thread eine Variable z.B. ein Boolean direkt ändern muss diese als Pointer übergeben werden.
Außerdem ist diese (IMHO bei jedem Aufruf) mit einer Critical Section zu schützen.
Tschau Christian
Das System hofft auf Besserung
[Siemens]
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#9

Re: Threads erstellen

  Alt 15. Aug 2006, 20:30
Zitat von jeroen_a:
aber es hilf mir auch nciht weiter.
hat vieleicht jemand ein ganz einfaches beispiel, am besten eins wo im thread einfach nur sleep() drin steht.
HI,
nebenbei mal Herzlich Willkommen in der DP
Was dein Problem angeht hat ja gerade schon jmd. eine Lösung gepostet, aber so für's nächste mal, du solltest etwas weniger auf die hellseherischen Fähigkeiten der DP-Mitglieder setzen. Die sind hier wenig ausgeprägt.
Wenn jmd. einfach nur fragt wie funktionieren Threads, dann wirst du immer Links auf Tutorials bekommen, die es erklären. Was dabei deiner Ansicht nach nicht richtig erklärt wird oder was dir weiterhilft weißt nur du, deshalb sag es einfach, dann wissen es auch andere!

Ich glaube ich hatte mir auch mal Luckie's Tutorial angeschaut und hatte es eigentlich recht vollständig in Erinnerung. Wenn du hier also Punkte hast, die dir fehlen wäre es nett wenn du die mal offen nennst (und keine Sorge, der wird dich sicherlich nicht wegen etwas Kritik rausschmeissen!). Es ist nur so, dass die Artikel ganz allgemein für Leute da sind, die ein Tutorial suchen. Sind hier also Dinge zu verbessern/zu vervollständigen, wäre dies doch wichtig zu wissen, da in diese Artikel noch eine Menge Menschen schauen werden.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
jeroen_a

Registriert seit: 15. Aug 2006
56 Beiträge
 
#10

Re: Threads erstellen

  Alt 15. Aug 2006, 23:53
Hi,

mein Test-Programm sieht bisher so aus:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  TSelfThread = class(TThread)
    procedure Execute; override;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  SelfThread: TSelfThread;
implementation

{$R *.dfm}

procedure TSelfThread.Execute;
begin
  Sleep(10);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SelfThread := TSelfThread.Create(true); //Thread inaktiv erzeugen
  SelfThread.FreeOnTerminate := true; //Thread nach dem Beenden freigeben
  SelfThread.Resume; //Thread aktivieren
end;

end.
Wenn ich ihn aber ausführen will kommt immer der Fehler:
Expeted ':' but '=' found.


Wo hab ich den Fehler gemacht ?


jeroen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:30 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 by Thomas Breitkreuz