![]() |
AW: TCollection & TCollectionitem Tutorial
Naja C und C++ und beide Prüfungen ohne Probleme geschafft. Bin jetzt im 5ten Semester. Die Formularoberfläche zusammenklicken sollte kein Problem darstellen.
Und bezüglich Nebenläufigkeiten, ist mir jetzt schon bewusst geworden, dass viele eigene Projekte hilfreich gewesen wären, nur für das Studium selbst musste ich nie etwas ähnliches programmieren |
AW: TCollection & TCollectionitem Tutorial
Was ein Thread ist, weiß ich natürlich
|
AW: TCollection & TCollectionitem Tutorial
Schritt 1: Formularoberfläche zusammenklicken!
Schritt 2: Alles über Threads und die Delphi-Implementierung TThread herausfinden, recherchieren, lesen (zu finden in der Unit System.Classes). Schritt 3: Mit konkreten und speziellen Fragen wiederkommen. |
AW: TCollection & TCollectionitem Tutorial
Okay, Danke
|
AW: TCollection & TCollectionitem Tutorial
Zitat:
|
AW: TCollection & TCollectionitem Tutorial
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; |
AW: TCollection & TCollectionitem Tutorial
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:
Das
// This function is not intended to be used for thread synchronization.
procedure Resume; deprecated;
Delphi-Quellcode:
ist ein Schlüsselwort, um darauf hinzuweisen, dass diese API veraltet ist und nicht mehr benutzt werden soll.
deprecated;
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:
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; )
procedure TForm1.ThreadTerminated(Sender: TObject);
begin if Sender is TMyThread then begin ShowMessage(TMyThread(Sender).Counter.ToString + ' is gone to hell!'); end; end; Noch was: Bitte benutze Strg + D oder Edit -> Format Source um den Quelltext nach dem eingestellten Standard zu formatieren. |
AW: TCollection & TCollectionitem Tutorial
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? |
AW: TCollection & TCollectionitem Tutorial
Zitat:
"GibMirEinNeuesItem" sagt doch schon alles. Auch wenn der Beispiel-Code an sich schon nicht grade der Beste ist.
Delphi-Quellcode:
Man verwendet gefälligst den Rückgabewert der "Funktion" und arbeitet damit weiter.
Panels.BeginUpdate;
try NewPanel := Panels.Add; NewPanel.Text := 'Panel' + IntToStr(StatusBar1.Panels.Count - 1); finally Panels.EndUpdate; end; Vorallem da du dich grade mit Threads/Nebenläufigkeit beschäftigst. Etwas erstellen und dann an "zufälliger" Stelle etwas rausholen, was "womöglich" dein grade Erstellstes ist ... da kann schnell mal was "Anderes" raus kommen, wenn nebenher jemand die Liste verändert. PS:
Delphi-Quellcode:
: Warum
StatusBar1.Panels.Count
Delphi-Quellcode:
, wo man doch eh grade in dem bösen
StatusBar1.
Delphi-Quellcode:
drin ist?
with StatusBar1 do
|
AW: TCollection & TCollectionitem Tutorial
Zitat:
Du musst uns schon ein bisschen mehr füttern, wir haben keine Glaskugel. :glaskugel: Warum schreibst du nicht vom Programmierrechner aus? Hat der kein Internet? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 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