Threadda fonksiyon kullanma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
KarizMan
Üye
Mesajlar: 60
Kayıt: 31 May 2005 09:13

Threadda fonksiyon kullanma

Mesaj gönderen KarizMan »

Merhabalar,
Benim 2 tane sorunum var.
1.si şu: thread oluşturuyorum. fakat thread içinde nasıl fonksiyon kullanırım?
mythread : class(tthread)
private

protected
procedure Execute; override;
end;

ile oluşturuyorum. Execute prosedürü ile başlıyor. ben bunun olmamasını istiyorum. yani threadı çalıştırınca bekleyecek, ve benim istediğim bi fonksiyonu çalıştıracak. Tabi thread içinde yine.

2.si ise: hani visual basicde me.caption gibisinden bi kod vardı, bulunulan formun özelliklerine erişmek için. Delphidede böyle bişey var mı acaba? veya buna benzer bişey yapılabilir mi?

Teşekkürler
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

1. yi tam olarak anlayamadım..

Kod: Tümünü seç

mythread : class(tthread)
private

protected
procedure Execute; override;
function myfunc : Integer;
end; 
....
....

procedure mythread.Execute; override;
var
  x : Integer;
begin
  x := myfunc;
end;
gibi çağırabilirsin.

2. Self
DeveloperToolKit

..::|YeşilMavi|::..
KarizMan
Üye
Mesajlar: 60
Kayıt: 31 May 2005 09:13

Mesaj gönderen KarizMan »

Ben anlatamadım 1.yi.
İstediğim şey şu. mesela bir butona basılınca threaddaki fonksiyonum çalışsın ve yollayacağım değere göre işlem yapsın.

2.yi dediğin gibi kullandım. Ama ben bunu thread içinde kullanmak istiyorum fakat formun adı yerine kullanamadım. bi çözümü var mı? formun adını yazmadan thread içinden memo vs gibi bileşenlere ulaşmak mümkün mü?

Tekrar teşekkürler
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Bildiğim kadarıyla...

Parametre geçirme ve döndürme işlemlerini Global değişkenler kullanarak yada form üzerindeki bileşenlere ulaşarak yapabilirsin..
http://www.ibrtses.com/delphi/threads.html

Self ile o an içinde bulunduğun class a ait method ve özellikleri alabilirsin.
Ama Thread içinde illa form ismi kullanmak istemiyorum dersen yine Global bir TForm değişkeni kullanabilirsin.
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Görsel olmayan global değişkenlere thread içinden ulaşılabilir. Görsel olan değişken mi desem nesnelere erişmek biraz problemli.

formun caption'ı olsun örnek.
Therad çağırlırken bir tform cinsinden parmaetre gönderilir, thread içinde nesnenin değiştirmek istediğimiz türünden bir değişken tanımlanır burada string, thread excute edildiğinde bu stringe bir değer atanır, syncronize metodu kullanılarak formun caption özelliği stirnge eşitlenir.

Kolay Gelsin...
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

KarizMan yazdı:Ben anlatamadım 1.yi.
İstediğim şey şu. mesela bir butona basılınca threaddaki fonksiyonum çalışsın ve yollayacağım değere göre işlem yapsın.
Sen thread'i anlamamışsın. Biraz daha çalışma yap.

Eğer thread oluşturulduğunda çalışmasın istersen TThread.Create(True) ile suspended konuma getirirsin. Resume methodu ile de Thread'i başlatırsın.

Thread'e kafana göre fonksiyon ekleyip. Şimdi bu çalışsın şimdi şu diyemezsin. Çünkü her thread'in tek execute'u vardır. Yani her farklı thread fonksiyonun için farklı bir thread sınıfı türetmen gerekir.

Böyle muğlak ifadelerle anlatmak yerine, ne yapmak istiyorsun? programın nedir? bunu yazarsan daha fazla şey aktarabilirim.
Cevapla