Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Threads (https://www.delphipraxis.net/7192-threads.html)

clownxx 5. Aug 2003 09:04


Threads
 
Hey Leute, kann mir aml jemand erklären, wie ich einen Thread erstelle? und was ich dabei beachten muss? ich möchte das TTHread object in Delphi nutzen, habe mir auch schon die Hilfe und ein Tutorial angeschaut, aber irgendwie werde ich daraus nicht schlau! Ich möchte eine externe Funktion (aus einer DLL) in einen Thread auslagern, da diese sonst mein Programm und auch die Messages in Delphi blockiert...Bitte um Hilfe

Tpercon 5. Aug 2003 09:08

Re: Threads
 
Schau dir mal das Thread Demo (Vergkleich von 3 Sortieralgorythmen) an, was bei Delphi dabei ist.

clownxx 5. Aug 2003 09:11

Re: Threads
 
hab ich auch schon, aber wenn ich ehrlich bin, ist das ein wenig kompliziert, da ich auf diesem Gebiet noch neu bin, ich möchte nur einen einzige Funktion auslagern, und nach deren Ablauf den Thread beenden

Alexander 5. Aug 2003 09:21

Re: Threads
 
das sollte dir helfen:
http://www.tutorials.delphi-source.d...ds/index.shtml

Tpercon 5. Aug 2003 09:26

Re: Threads
 
Wobei, so viel schlauer als aus dem Code so wird man da aber auch nicht. Aber nen Anfang...

clownxx 5. Aug 2003 09:30

Re: Threads
 
danke aber das habe ich auch schon mehrmals gelesen, ich weiß ja auch was ein Thread ist und wie er in seinen Grundzügen Arbeitet, abher wie ich das TThreadobject richtig verwende kann ich daraus wohl nicht sehr genau erfahren...

Alexander 5. Aug 2003 09:32

Re: Threads
 
meinst du aus dem Tutorial?
Kannst dir auch mal Luckies durchlesen:
http://www.luckie-online.de/tutorials/threads.shtml
ganz vergessen zu schreiben ;-)

clownxx 5. Aug 2003 09:40

Re: Threads
 
Delphi-Quellcode:
unit Sendethread;

interface

uses
  Classes, messages, dialogs, unit1;

type
  Tstatus = procedure (status: integer; text: Pchar); stdcall;

  TSendeThread = class(TThread)
  private
    { Private-Deklarationen }
  protected
    procedure Execute; override;
  public
    constructor create(createsuspended: boolean);
  end;

  var
  gtext: string;
  gstatus: integer;
  sendestatus: Tstatus;
  procedure sms_senden(msn,smsc,nr,text: Pchar; status: Tstatus); stdcall;
  procedure statusbericht(status: integer; text: Pchar); stdcall;
implementation

{ TSendeThread }

procedure sms_senden(msn,smsc,nr,text: Pchar; status: Tstatus); stdcall;
external 'sms_dll.dll';

constructor TSendeThread.create(createsuspended: boolean);
begin
inherited create(createsuspended);
sendestatus:=statusbericht;
end;

procedure TSendeThread.Execute;
begin
    { Thread-Code hier einfügen }
  sms_senden(Pchar('900...'), Pchar('01930100'), Pchar('0170...'), Pchar('test'), sendestatus);
end;

 procedure statusbericht(status: integer; text: Pchar); stdcall;
 begin
 gtext:=text;
 gstatus:=status;
 end;

end.
das habe ich bisher erreicht, jedoch wird die funktion im execute Teil nicht komplett ausgeführt, sonden bleibt wohl mittendrin stehen. Muss ich synchronise verwenden?? weil ich ja eine Globale variable in der Unit schreibe??


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 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