Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

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

AW: TCollection & TCollectionitem Tutorial

  Alt 15. Nov 2017, 08:48
Moin...
Zitat:
Das wäre jetzt der ganze Code, dieser lässt sich auch compilieren.
... das wars dann auch schon.
Zitat:
Im Moment ist der Code noch nicht sinnvoll.
...meine ich auch. Der ganze Workflow ist nicht schlüssig. Ein Programmablaufplan ist dir geläufig? (siehe Beispielbild) Damit solltest du anfangen.
Beispiel:
Was soll passiern wenn der Button3 mehrfach gedrückt wird? ...usw.
Zitat:
Ich hab in meiner Arbeit vor paar Tagen angefangen Delphi zu lernen.
Threads und deren Fallstricke, sind imho nicht der geeignete Anfang.

Zitat:
Mein Chef hätte jetzt noch gerne das ich da mit Messages arbeite.
Ist im Prinzip eine Art von Syncronisierung. Ob ein Event mit Syncronize oder PostMessage ist nur in der Ausführung unterschiedlich. (synchron, asynchron)

Zitat:
Danke nochmal für die ganze Hilfe.
...du bist noch lange nicht fertig.

grobe Fehler:
1:
Form7.Memo1.Lines.Add('Thread Nr. 0 ' + DateTimeToStr(Now) + ' Uhr'); Wie ich schon gesagt habe, ein Zugriff auf die GUI ist keine gute Idee!
http://www.delphipraxis.net/1386197-post54.html
2:
Delphi-Quellcode:
var
  Form7: TForm7;
  Thread1, Thread2, Thread3, Thread4, Thread5, Thread6: TMyThread;
  ID, ThreadID: integer;
Globale Variablen in Verbindung mit Threads sind keine gute Idee!
https://forum.delphi-treff.de/index....len-Variablen/
3:
Delphi-Quellcode:
procedure TForm7.Button3Click(Sender: TObject);
begin
  case ID of
    0:
      begin
        Thread1.Terminate;
        Thread1.WaitFor;
        Thread1.Free;
      end;
Beim Beenden des Threads über den Button wird er "abgeräumt"...nicht aber beim Beenden der Anwendung!
Einfügen: In die DPR ReportMemoryLeaksOnShutdown := True; und wundern.
4:
Delphi-Quellcode:
procedure TForm7.Timer1Timer(Sender: TObject);
begin
  Timer1.interval := 6000;
end;
Was denkst du was da passiert?

Tipps (kein Muß):
1: Bitte Codeformatter benutzen. Wie in anderen Programmiersprachen auch...sprechende Namen verwenden.
2: Stelle dir mal vor das du 100 Threads hast? Wie sieht die USES aus? Schei... Wie sehen die Proceduren aus? Schei... Für so etwas gibt es Listen mit den Instanzen als Inhalt. Thread erstellen, ab in die Liste. Von dort holt man sich die Instanz in eine Variable. (z.B. CurrentThread)
Miniaturansicht angehängter Grafiken
programmablaufplan.png  
  Mit Zitat antworten Zitat