AGB  ·  Datenschutz  ·  Impressum  







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

Thread - in Modelbahnsteuerung

Ein Thema von js747a · begonnen am 18. Feb 2009 · letzter Beitrag vom 18. Feb 2009
Antwort Antwort
js747a

Registriert seit: 11. Aug 2008
Ort: Nord hessen
43 Beiträge
 
Delphi 7 Enterprise
 
#1

Thread - in Modelbahnsteuerung

  Alt 18. Feb 2009, 22:01
Hallo, ich schreibe ein program zur steuerung einer Modellbahn.
Jetz soll das Programm im Hintergrund eine procedure ab-arbeiten.
Da habe ich gedacht ich versuche es mal mit einem Thread. Hiermit habe ich aber bisher keinerlei Erfahrung.

Mein Programm : (ich habe nur die Daten hier rein geschrieben die hierfur wichtig sind)


Delphi-Quellcode:
TFahrstrasse = class
   private
   public
     Procedure EreignisseListeErstellen;

End;

Var FahrstrassenListe[1..10] of of TFahrstrasse;
Im Program wird die procedure
FahrstrassenListe[x].EreignisseListeErstellen aufgerufen und diese schreibt
Ereignisse als String in eine Listbox.

Wie kan ich jetzt ein Thread starten der innerhalb der Fahrstrasse alle Ereignisse ab-arbeitet und sich dan wieder beendet.
So das wenn gleichzeitig mehrere Fahrstrassen gesetzt sind, auch mehrere Thread nebeneinander laufen.




Als beispiel habe ich diesen code probiert.

Delphi-Quellcode:
var ThreadID: DWORD; //Thread-ID
      ThreadHandle: THandle; //Rückgabewert von CreateThread

function UnserThread(zahl: integer): LongInt; stdcall;
var i : integer;
begin
// Sleep(200);
  For i:= 1 to 400 do Form1.Memo1.Lines.Add('UnserThread ' + intToStr(i));
  Form1.Memo1.Lines.Add('UnserThread ist fertig');
  Result:=0;
end;

procedure TGleisplanForm.Button1Click(Sender: TObject);
begin
  ThreadHandle:=CreateThread(nil, 0, TFNThreadStartRoutine(@UnserThread), nil, 0, ThreadID);
  if ThreadHandle<>0 then CloseHandle(ThreadHandle);
End;
Es funktioniert auch aber wie kan ich der Function UnserThread eine Variabele,
zb. FahrstrassenListe[1] zuweisen.

[edit=mkinzler]Delphi-Tags eingefügt Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Thread - in Modelbahnsteuerung

  Alt 18. Feb 2009, 22:07
Kannst du bitte noch die Delphi-Tags setzen? Dann kann man das alles besser lesen.
Vielleicht solltest du dir mal das Thread-Objekt von Delphi anschauen. Da kannst du einfach von TThread ableiten und hast es einfacher mit der Variablen-übergabe, als das du nur am Pointer übergeben bist.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Thread - in Modelbahnsteuerung

  Alt 18. Feb 2009, 22:21
Du hast einen freien Parameter (der heißt bei dir Zahl und wird derzeit bei CreateThread mit 0 belegt). Dort kannst du natürlich auch einen Pointer zu einem Objekt reinlegen.

Nimm anstatt CreateThread besser BeginThread. Dadurch wird der Speichermanager von Delphi Threadsicher und du kannst das "stdcall" weglassen.

Und noch besser ist, wie bereits beschrieben, TThread zu benutzen.


Beachte, dass du aus dem Thread niemals VCL-Sachen oder globale Variablen verwenden darfst (also kein Form1)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
js747a

Registriert seit: 11. Aug 2008
Ort: Nord hessen
43 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Thread - in Modelbahnsteuerung

  Alt 18. Feb 2009, 22:47
Danke erstmal, ich werde es mal mit TThread versuchen
  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 07:41 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