Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Variablen im Thread (https://www.delphipraxis.net/105933-variablen-im-thread.html)

mashutu 3. Jan 2008 16:09

Re: Variablen im Thread
 
Du kannst dem Thread auch einen pointer auf einen Record

Delphi-Quellcode:
  prec   =  ^trec;
  tRec   =  record
      s  :  string;
      i  :  integer;
  end;
mitgeben (entweder als Var im constructor oder als accessmethod.

Delphi-Quellcode:
type mythread....
public
    procedure setData(var p:prec);


...

procedure TSortThread.setData(var p:prec);
begin
    fRec:=p;
end;
Wenn Du die Daten von aussen aenderst, "sieht" das der Thread.

wicht 3. Jan 2008 16:50

Re: Variablen im Thread
 
Zitat:

So lange es keine Zeiger auf die jeweilige Variable ist, oder das Objekt welches diese enthält, weiter gegeben wird, so lange werden sich Änderungen auf die Variable nicht auf ihren anderen Speicherort auswirken. Sprich: Änderst du Variable1 in deinem Thread, so hat die Variable1 in deiner Form immernoch ihren alten Wert (die Aussage ist reversible).
Da habe ich die Frage wohl falsch verstanden. Ich mache es immer auf die von mir gezeigte Weise, allerdings möchte ich auch erreichen, dass die Variable im Thread nicht die der Form ist. Kann das keine Probleme geben, wenn Programmthread und "Nebenthread" beide die selbe Variable (Speicher) nutzen?

Muetze1 3. Jan 2008 19:12

Re: Variablen im Thread
 
Zitat:

Zitat von wicht
Da habe ich die Frage wohl falsch verstanden. Ich mache es immer auf die von mir gezeigte Weise, allerdings möchte ich auch erreichen, dass die Variable im Thread nicht die der Form ist. Kann das keine Probleme geben, wenn Programmthread und "Nebenthread" beide die selbe Variable (Speicher) nutzen?

Wenn es nicht gefordert ist, dass eine Aktualisierung einer Variablen gleich auf alle anderen "Nutzer" dieser durchschlägt, dann hat dein Weg den Vorrang. Die Datentrennung ist wichtig und sollte immer möglichst gut und genau durchgeführt werden. Ich wollte nur den Threadersteller darauf hinweisen, dass es sich um unterschiedliche Speicherplätze handelt, weil ich im Hinterkopf schon die nächste Frage gesehen hätte: "Ich habe die Variable Größe in der Form neu zugewiesen aber der Thread arbeitet immernoch mit der alten Größe. Warum?" o.ä. Von daher wollte ich nur auf diesen Fakt hinweisen.

Kurzum: so lange eine Trennung der Daten möglich ist, sollte man diese Trennung vollziehen. Auch sind Zeiger auf Variablen schlecht, da man dadurch die Möglichkeiten zur Manipulation der Variablen vervielfacht (durch die breitere Zugänglichkeit) und somit ist es schwerer debugbar/nachvollziehbar. Von daher kommt auch die Forderung der Datenkapselung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 Uhr.
Seite 2 von 2     12   

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