AGB  ·  Datenschutz  ·  Impressum  







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

TCollection & TCollectionitem Tutorial

Ein Thema von MrBrown90 · begonnen am 7. Nov 2017 · letzter Beitrag vom 16. Nov 2017
Antwort Antwort
Benutzerbild von Zacherl
Zacherl

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

AW: TCollection & TCollectionitem Tutorial

  Alt 8. Nov 2017, 15:40
Ich hatte bis gestern noch nie was mit ... Threads zu tun
Nebenläufigkeit war noch nicht Bestandteil des Studiums?
Darf man fragen in welchen Semester du genau bist und an welcher Hochschule?
OT: Ist leider ganz normal. Hier ist es im Studium (Uni) so, dass man in exakt einem Modul OOP anhand von Java lernt und dann noch in einem Modul ein kleines Projekt in einer beliebigen Sprache realisieren muss. Mit etwas Glück hat man noch 1-2 weitere Kurse, in denen es 10% Programmieraufgaben gibt. Threads wurden im Rahmen von "Betriebssysteme" kurz angesprochen, aber das hat nur einen Bruchteil der Vorlesung ausgemacht und Praxisbezug war hier auch nicht gegeben. Teilweise echt traurig.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
MrBrown90

Registriert seit: 7. Nov 2017
39 Beiträge
 
#2

AW: TCollection & TCollectionitem Tutorial

  Alt 10. Nov 2017, 11:04
Hi, jetzt hätte ich eine spezielle Frage zu Threads.

Ich habe folgenden Code

procedure TForm1.ButtonClick(Sender:TObjecjt)
Var
I:integer
Begin
For i:=1 to 6 so
Begin
With TMyThread.Create(true) so
Begin
Counter:=i;
FreeOnTerminate:=True;
OnTerminate:=ThreadTerminated;
Resume;
End;
End;
End;

So meine Fragen wären. "Counter" ist in der klasse TMyThread deklariert ...kann ich meine einzelnen Threads dann über diesen Counter ansprechen ?

Und OnTerminated:=ThreadTerminated
..wird damit die Methode "ThreadTerminated" aufgerufen und was wird da zurückgegeben.

Die Methode :

Procedure TForm1.ThreadTerminated(Sender:TObject);
Begin
if Sender is TMyThread then
Begin
...
End;
End;
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.074 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TCollection & TCollectionitem Tutorial

  Alt 10. Nov 2017, 11:22
Bitte benutze Delphi-Tags. Wenn du Beiträge schreibst, ist es der kleine Helm links vom Google-Symbol oben in der Leiste über den Eingabefeld.

Bitte sofort Sachen wie das with-Statement und TThread.Resume vergessen.
Auch in XE5 müsste schon sowas in der Klassendefinition stehen wie:
Delphi-Quellcode:
    // This function is not intended to be used for thread synchronization.
    procedure Resume; deprecated;
Das deprecated; ist ein Schlüsselwort, um darauf hinzuweisen, dass diese API veraltet ist und nicht mehr benutzt werden soll.

Die Fragen:
1. Jein, dafür ist das wohl nicht gedacht. Du kannst es aber zur Identifizierung für in <siehe 2.> nutzen.
2. ThreadTerminated wird im Kontext des Mainthreads (da wo dein Formular drin läuft) aufgerufen und signalisiert, dass der externe Thread beendet ist. Was du darin machst bleibt dir überlassen.
Denkbar wäre z.B.:
Delphi-Quellcode:
procedure TForm1.ThreadTerminated(Sender: TObject);
begin
  if Sender is TMyThread then
  begin
    ShowMessage(TMyThread(Sender).Counter.ToString + ' is gone to hell!');
  end;
end;
Wie du siehst ist das Argument Sender in diesen Fall die noch lebende Instanz von TMyThread, kurz bevor er freigeben wird (durch dein FreeOnTerminate:=True; )

Noch was: Bitte benutze Strg + D oder Edit -> Format Source um den Quelltext nach dem eingestellten Standard zu formatieren.
  Mit Zitat antworten Zitat
MrBrown90

Registriert seit: 7. Nov 2017
39 Beiträge
 
#4

AW: TCollection & TCollectionitem Tutorial

  Alt 10. Nov 2017, 12:19
Okay sorry, hab mit dem Handy geschrieben.

Danke für die Antwort, verstehe ich alles.
Würde ich jetzt die Schleife so setzen, dass nur 1 Thread erstellt wird. Wie könnte ich diesen dann über einen weitern Button wieder beenden oder pausieren lassen?
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.074 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: TCollection & TCollectionitem Tutorial

  Alt 10. Nov 2017, 12:39
Okay sorry, hab mit dem Handy geschrieben.

Danke für die Antwort, verstehe ich alles.
Würde ich jetzt die Schleife so setzen, dass nur 1 Thread erstellt wird. Wie könnte ich diesen dann über einen weitern Button wieder beenden oder pausieren lassen?
Was macht denn der Thread in seiner überschriebenen Execute-Methode?
Du musst uns schon ein bisschen mehr füttern, wir haben keine Glaskugel.

Warum schreibst du nicht vom Programmierrechner aus? Hat der kein Internet?
  Mit Zitat antworten Zitat
MrBrown90

Registriert seit: 7. Nov 2017
39 Beiträge
 
#6

AW: TCollection & TCollectionitem Tutorial

  Alt 10. Nov 2017, 12:43
Ich soll mich in der Arbeit nirgends einloggen.

Ich denke, ich hab es geschafft..ich probiere noch weiter rum ..und schicke den ganzen Code dann von Zuhause.

Danke
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.074 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: TCollection & TCollectionitem Tutorial

  Alt 10. Nov 2017, 13:46
Ich soll mich in der Arbeit nirgends einloggen.
Damit meinten die sicher sowas wie Facebook, Instgram und dergleichen.
Es kann ja keiner was dagegen haben, wenn du dich für deine Arbeit hier Rat holst.
  Mit Zitat antworten Zitat
MrBrown90

Registriert seit: 7. Nov 2017
39 Beiträge
 
#8

AW: TCollection & TCollectionitem Tutorial

  Alt 10. Nov 2017, 13:53
Ne, hab natürlich nachgefragt..ist nicht erwünscht
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.437 Beiträge
 
Delphi 12 Athens
 
#9

AW: TCollection & TCollectionitem Tutorial

  Alt 10. Nov 2017, 17:22
Moin...
[OT]
Zitat:
Ne, hab natürlich nachgefragt..ist nicht erwünscht
Da wäre für mich ein Kündigungsgrund. Die Online Medien, auf das Fach bezogen, nicht nutzen zu dürfen ist in meinen Augen Schwachsinn. Da gehe mal am Montag zum Chef und sage, daß du das komplette MSDN ausdeduckt haben möchtest weil es Online nicht erwünscht ist.

Ohne Worte...

PS: Mich würde mal interessieren, wieviele LKW auf dem Hof stehen müßten...
[/OT]
  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 23:42 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-2025 by Thomas Breitkreuz