![]() |
Variablen im Thread
Hi,
Ich habe das Problem, dass ich in der OnCreate Prozedur meines Form1 in Unit1 Variablen setzte, die ich in der Laufzeit meines Threads in Unit2 auslesen möchte, jedoch bekomme ich das irgendwie nicht hin, dass er die Variablen erkennt und hoffe nun auf eure Hilfe, wie ich die Variablen deklarieren muss damit es funktioniert. danke :) mfg fredyy |
Re: Variablen im Thread
um das ganze objectorientiert zu halten solltest du nicht vom Thread aus auf Form1.irgendwas zugreifen sondern solltest dem Thread die Adressen der Variablen mitgeben bzw. die TForm1-Instanz.
Am besten du zeigst mal deinen bisherigen Quelltext damit wir sehen welchen Weg du bisher eingeschlagen hast und welche Weiterführung da im sinnvollsten wäre. |
Re: Variablen im Thread
also meine Form TForm1.FormCreate in Unit1 sieht so aus und die variablen hpstart,hpend,field und url möchte ich im Thread weiter verwenden.
Delphi-Quellcode:
die execute Prozedur vom Thread so, der Thread wird erst erstellt, wenn er benötigt wird:private Thread1 : TMyOwnThread; public filename,link,link2,hpstart,hpend,field,url :string; function Ready : Boolean; end; ..... procedure TForm1.FormCreate(Sender: TObject); begin hpstart := 'value="[URL=http://imageshack.us][IMG]'; hpend := '[/IMG][/URL]"/>'; field := 'fileupload'; url := 'http://load.imageshack.us/'; filename := 'screenshot'; OpenDialog1.Filter := 'Image File Types|*.jpg;*.jpeg;*.png;*.gif;*.bmp;*.tif;*.tiff'; if(ParamCount > 0) then Upload(ParamStr(1)) end;
Delphi-Quellcode:
das Problem ist jetzt, dass der Thread die Variablen nicht erkennt.
procedure TMyOwnThread.Execute;
var x,y: Integer; hpstart,hpend, page,link :string; Werte : TIdMultiPartFormDataStream; begin Werte := TIdMultiPartFormDataStream.Create(); HTTP.Request.ContentType := 'application/x-www-form-urlencoded'; Werte.AddFile(field, files, 'image/png'); page := Http.Post(url, Werte); Werte.Destroy; x := pos(hpstart, page); y := pos(hpend, page); link := copy(page, x+length(hpstart), y-(x+length(hpstart))); if Assigned(OnThread) then OnThread(link); end; Danke schon mal für eure Hilfe :) mfg fredyy |
Re: Variablen im Thread
![]() Wenn das alles noch zu kompliziert ist, kannst du natürlich auch erstmal klein anfangen und das Forum nach Buchempfehlungen für Einsteiger durchpflügen. Dass du dich gleich an Threads wagst ist sehr mutig :) |
Re: Variablen im Thread
Zitat:
Und zu den Threads, grundsätzlich funktioniert das Programm super doch wollte ich nun etwas umbauen bzw erweitern und dabei ist es ebend wichtig, dass die "Konstanten" des Threads zu Variablen werden die ich aus einer ini-Dateien auslesen möchte jedoch möchte ich nicht jedesmal neu aus der Datei lesen sondern einmal in die Variablen lesen und fertig und ebend jenes soll hier passieren, wenn die Variablen Übertragung funktioniert. |
Re: Variablen im Thread
Das Problem ist, dass dein TMyOwnThread-Objekt die Variablen [= Behälter] des TForm1-Objektes nicht "sehen" kann. Stattdessen hat jedes TMyOwnThread-Objekt eigene, von den TForm1-Variablen verschiedene Behälter. Die heißen zwar gleich, das bedeutet aber nicht, dass auch das Gleiche drin steht.
|
Re: Variablen im Thread
Zitat:
Was mir gerade noch einfällt man könnte die Daten ja auch beim create-Aufruf das Threads als Attribut mit geben, doch das sind direkt mal 4 Variablen, dass ist bestimmt nicht die "sauberste" Lösung. |
Re: Variablen im Thread
Zitat:
Bedenke aber das das nicht OO ist, besser ist (woe SirThornberry schon sagte) die Thread-Instanz zu erzeugen und gleichzeitig die variablen zu übergeben. |
Re: Variablen im Thread
Du musst die Variablen nicht im OnCreate mitgeben.
Versuch's mal so:
Delphi-Quellcode:
Also einfach als Eigenschaften des Threads. Du musst nur beachten, dass der Thread erst beim Resume() losläuft, und nicht schon im Konstruktor.
Thread := TMyThread.Create;
Thread.Variable1 := Variable1; [...] Thread.Resume; |
Re: Variablen im Thread
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 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