AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Threads

Ein Thema von badenixe63 · begonnen am 12. Jan 2009 · letzter Beitrag vom 13. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2   
badenixe63

Registriert seit: 6. Dez 2008
20 Beiträge
 
Turbo Delphi für Win32
 
#1

Threads

  Alt 12. Jan 2009, 16:23
Hallo Leute,

ich hab schon mehrere Tutorials durchgelesen, aber irgendwie stehe ich komplett aufm Schlauch. Kann mir jemand mal ein Beispiel zeigen, wie man in Turbo Delphi Explorer 2006 einen Thread macht, der hello world sagt oder so ?

Vielen Dank
badenixe63
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: Threads

  Alt 12. Jan 2009, 16:31
Ein Thread ist nicht interaktiv, sondern arbeitet im Hintergrund ... also von daher mit "Hello World..." ist da nix
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Threads

  Alt 12. Jan 2009, 16:32
Und mit "Hello Thread" auch nicht (SCNR^^)
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
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

Re: Threads

  Alt 12. Jan 2009, 16:38
Aber hier ist mal so ein Thread-Gerüst
http://www.delphipraxis.net/internal...=965602#965602
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
badenixe63

Registriert seit: 6. Dez 2008
20 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Threads

  Alt 12. Jan 2009, 18:45
gut, das Programm hab ich mir angeguckt, und es mal kompiliert, aber ich bin der Sache immernoch nicht viel näher.

Um es mal auf den Punkt zu bringen: Ich habe ein Programm, mit TTimer, der runterzählt. Wenn der auf 0 ist, dann soll ein Thread gestartet werden, der einige HTTP Requests macht und sich dann wieder schlafen legt. Dann fängt der Timer wieder an runterzuzählen und bei 0 usw.

Der Rest ist ja einfach, nur die Requests möchte ich in einen extra Thread haben, weil die lange dauern und die Form sich während dessen nicht bewegen lässt. Die Funktionen sind alle fertig, nur soll jetzt die eine in nem Thread ausgeführt werden, wie krieg ich das hin ??
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.754 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Threads

  Alt 12. Jan 2009, 19:34
Guten Abend,

vom Prinzip könnte es in etwa so laufen:
(Habe es nicht getestet)

Delphi-Quellcode:
type

  THttpRequestThread = class(TTHread)
    private
      URLList: TStringList;
      idHttp : TidHttp;
      procedure enableTimer;
    protected
      procedure execute;override;
    public
      constructor create(AURLList:TStringList);
  end;

implementation


constructor THttpRequestThread.create(AURLList:TStringList);
begin
  URLList :=TStringList.create;
  URLList.assign(AURLList);
  idHttp := TidHttp.create;
  inherited create(false);
end;

procedure THttpRequestThread.enableTimer;
begin
  TForm1.Timer1.enabled := true;
end;

procedure THttpRequestThread.execute;
var
  i: Integer;
  s: String;
begin
  i:=0;
  while (not terminated) and (i < URLList.count -1) do
    begin
      s:=idHttp.get(URLList[i];
      // mache etwas mit s
      inc(i);
    end;

  URLList.free;
  idHttp.free;
  synchronize(enableTimer);
end;

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  httpRequestThread: THttpRequestThread;
begin
  (sender as TTimer).Enabled:=false;
   httpRequestThread := THttpRequestThread.create(URLList);

end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
badenixe63

Registriert seit: 6. Dez 2008
20 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Threads

  Alt 13. Jan 2009, 13:59
Ich hab erstmal nur versucht eine Seite zu kriegen.

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

//Thread Klasse erstellen
type
  TRequestThread = class(TThread)
    private
     //variablen, die ich verwenden möchte
     myUrl:String;
     myHTTP:TidHTTP;
    protected
     procedure execute;override;
    public
     constructor Create(url:String);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

constructor TRequestThread.Create(url: string);
begin
  //variablen initialisieren
  myUrl := url;
  myHTTP.Create(nil);
  inherited Create(false);
end;

procedure TRequestThread.Execute;
begin
  //die Seite holen
  myHTTP.Get(myUrl);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 httpRequestThread:TRequestThread;
begin
 //und endlich gehts los... denkste, hier bricht das Programm mit ner AccessViolation ab.
 httpRequestThread.Create('http://www.google.de/');
end;

end.
delphi kompiliert das Programm fröhlich und wenn man auf den Button drückt kommt die AccessViolation
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Threads

  Alt 13. Jan 2009, 14:04
Zitat:
myHTTP.Create(nil);
Das sollte wohlmyHTTP := TIdHTTP.Create(nil); heißen, oder?
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
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Threads

  Alt 13. Jan 2009, 14:10
...

und das
Delphi-Quellcode:
var
httpRequestThread:TRequestThread;
begin
//und endlich gehts los... denkste, hier bricht das Programm mit ner AccessViolation ab.
httpRequestThread.Create('http://www.google.de/');
end;
besser so

Delphi-Quellcode:
var
httpRequestThread:TRequestThread;
begin
//und endlich gehts los... denkste, hier bricht das Programm mit ner AccessViolation ab.
httpRequestThread := TRequestThread.Create('http://www.google.de/');
end;
Gruß
Norman
  Mit Zitat antworten Zitat
badenixe63

Registriert seit: 6. Dez 2008
20 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Threads

  Alt 13. Jan 2009, 15:29
gut, jetzt siehts so aus:

Delphi-Quellcode:
implementation

{$R *.dfm}

constructor TRequestThread.Create(url: string);
begin
  myUrl := url;
  myHTTP := TidHTTP.Create(nil);
  inherited Create(false);
end;

procedure TRequestThread.Execute;
var
  f:TextFile;
begin
  AssignFile(f, 'bla.txt');
  Rewrite(f);
  write(f,myHTTP.Get(myUrl));
  CloseFile(f);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 httpRequestThread:TRequestThread;
begin
 httpRequestThread := TRequestThread.Create('http://www.google.de/');
end;

end.
das Programm ist schon voll funktionstüchtig aber wenn ich es per Delphi ausführe gibts es einen EConvertError 'Ungültiges Argument zum Codieren des Datums'

das überrascht mich ein bisschen, wo ich doch garkeine Datumsfunktion verwende
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:10 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