AGB  ·  Datenschutz  ·  Impressum  







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

Variable übergreifend übergeben

Ein Thema von Tpercon · begonnen am 18. Aug 2003 · letzter Beitrag vom 18. Aug 2003
Antwort Antwort
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#1

Variable übergreifend übergeben

  Alt 18. Aug 2003, 15:22
Das ist wahrscheinlich ne ganz dumme Frage, aber ich komme da auf keine Lösung.

Ich übergebe einem Thread Objekt den Wert einer Variablen von meiner Hauptform (create Ereignis überschrieben und darin als Parameter angebeben). Dieser Wert wird im Thread ner globalen Variable zugewiesen und diese im Verlauf geändert. Wie übergebe ich den Wert dann wieder an die Variable im Hauptformular? Ich möchte keine public deklarierten Variablen benutzen!
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: Variable übergreifend übergeben

  Alt 18. Aug 2003, 15:27
Übergib die Variable nur als Referenz (eh Zeiger drauf).

Der Zugriff sollte Dabei nur mittels TCriticalSection geschehen.

Da ich aber nicht genau weis was du genau willst kann ich dir nicht sagen ob das der beste weg ist.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#3

Re: Variable übergreifend übergeben

  Alt 18. Aug 2003, 15:38
Der Thread wird so aufgerufen:
TMBM.Create(LastClose); LastClose wird in eine globale Variable in TMBM geschrieben und diese geändert. Wenn der Thread fertig durchlaufen wurde, möchte ich in LastClose wieder den Wert der globalen Variable haben, sonst würde LastClose in der Main Unit ja immer gleich bleiben. Ich brauche also eine Rückgabe des Variablenwertes.
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#4

Re: Variable übergreifend übergeben

  Alt 18. Aug 2003, 15:55
Also willst du die Variable nicht Dynamisch ändern, sondern darin das ergebnis Speichern? Quasi wie ne Function!

Dann schick doch den Rückgabewert mittels PostMessage an dein Fenster
oder das was ich als erstes geschrieben habe.



So, oder Anders?
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#5

Re: Variable übergreifend übergeben

  Alt 18. Aug 2003, 16:03
Genau, wie eine function!
Wie geht das denn mit dem Zeiger?
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Variable übergreifend übergeben

  Alt 18. Aug 2003, 16:11
Hi Tpercon,

ich hatte mal ähnliches Problem und dies so gelöst:

Delphi-Quellcode:

type TMyCloseEvent = procedure(Sender : TObject; Value : Integer) of Object;
Hierbei kann natürlich für Value jeder beliebige Typ genutzt werden.

Im Thread dann:
Delphi-Quellcode:
type
  TMyThread = class(TThread)
.
.
.
  private
    FMyCloseEvent : TMyCloseEvent;
  public
    property OnMyClose : TMyCloseEvent read FMyCloseEvent write FMyCloseEvent;
end;

// im Code MyThread

  If Assigned(FMyCloseEvent) then FMyCloseEvent(self, Wert);

Im Hauptprogramm:

Delphi-Quellcode:
   // Ereignisse
  procedure OnThreadClose(Sender : TObject; Value : Integer);

// zum Zeitpunkt Thread-Create

  MyThread := TMyThread.Create(LastClose);
  MyThread.OnMyClose := OnThreadClose;
Im Code für die procedure OnThreadClose des Hauptprogramms kann dann in geeigneter Form der Wert Value weiterverarbeitet werden. Durch den Sender bekommt man automatisch auch mit, welcher Thread diesen liefert. Das ist vorallem interessant, wenn man mehrere dieser Threads startet.

Nach diesem Schema hab ich das schon verarbeitet und es funzt super.

Gruß oki
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#7

Re: Variable übergreifend übergeben

  Alt 18. Aug 2003, 16:18
Oki gibt dir die VCL-Variante von dem Postmassage.

Welche für kleine Datenpackete ausreicht.

Möchtestes du aber große komplizierte Datenstrukturen zurückgeben dann sag bescheid.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#8

Re: Variable übergreifend übergeben

  Alt 18. Aug 2003, 16:26
Habe jetzt die Variante von Oki genommen, reicht vollkommen.

Danke euch beiden!
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#9

Re: Variable übergreifend übergeben

  Alt 18. Aug 2003, 16:47
@Tpercon: Wenn die Lösung okay ist, wie zu vermuten nach Deiner letzten Aussage, dann setze die Frage bitte auf "beantwortet" (der Link ist oben rechts).

Danke,
......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#10

Re: Variable übergreifend übergeben

  Alt 18. Aug 2003, 16:51
Zitat von sakura:
@Tpercon: Wenn die Lösung okay ist, wie zu vermuten nach Deiner letzten Aussage, dann setze die Frage bitte auf "beantwortet" (der Link ist oben rechts).

Danke,
......
Oh, habe ich übersehen.
  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 02:22 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