Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
IDE kasması ?
#1
Merhaba,

Uzun süredir başıma bela oldu. mobil platform'da oyun yapmaktayım ve oyun çoğunluk görsel üzerine. fakat sorunum da bu ;
Delphi ide'si kasa kasa yapıyorum projeyi ve sinirlenmemek elde değil. kısacık bir şey yazıyorum 3-5 saniye donuyor. birşey ekliyorum daha vahim...

( PC özelliklerim fazlasıyla yetecek durum da )

Buna bir çözüm yok mu ? benden kaynaklı mı bundan bile emin değilim.
Bir çok görsel olunca kasacaksa büyük projelerde işin içinden çıkılmaz  Smile
Cevapla
#2
Photo 
(26-04-2020, Saat: 13:48)Mr.Developer Adlı Kullanıcıdan Alıntı: Merhaba,

Uzun süredir başıma bela oldu. mobil platform'da oyun yapmaktayım ve oyun çoğunluk görsel üzerine. fakat sorunum da bu ;
Delphi ide'si kasa kasa yapıyorum projeyi ve sinirlenmemek elde değil. kısacık bir şey yazıyorum 3-5 saniye donuyor. birşey ekliyorum daha vahim...

( PC özelliklerim fazlasıyla yetecek durum da )

Buna bir çözüm yok mu ? benden kaynaklı mı bundan bile emin değilim.
Bir çok görsel olunca kasacaksa büyük projelerde işin içinden çıkılmaz  Smile

Merhabalar,
Benzer durum benimde başıma gelmişti. View kısmında çok fazla create edilen görüntü varsa yapıyordu. silmeyi deneyin.

tKeoBu.png
Cevapla
#3
@mustikilic öneri için teşekkürler. aklıma gelmemişti ve şuan pc'ye geçme fırsatı buldum ve baktım fakat herhangi bir görüntü oluşturmamışım daha önce.
ne yazık ki sorun devam ediyor. ( sorunlar hep insan kaynaklıdır ama olsun sorun sorundur  Shy  )
Cevapla
#4
Merhaba.

Sadece bir fikir Idea  

- Layout'lar halinde hazırlıklarınızı yaparak bunları farklı formlara bölerek modüller halinde yapmayı denemek isteyebilirsiniz. Böylece ana formda görmek istediğiniz Layout'u tasarımını olduğu gibi çağırabilirsiniz.

Basait bir örnek vereyim.

Form2'de Layout üzerinde tasarımınız var, bunu Form1'e çekip Form1'deki tasarımınızı Form2'ye göndermek istiyorsunuz. Yani bir swap işlemi örneği.

procedure TForm1.Button1Click(Sender: TObject);
begin
 Form2.Layout1.Parent := Form1;
 Form1.Layout1.Parent := Form2;
end;


Böylece açık formdaki nesne sayınızın artışı olmayacak, biriktikçe başka forma geçerek çalışma alanınızı yayabileceksiniz.
Dilerseniz hepsini ilk forma PARENT ile çekin o da olur.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#5
@mrmarman hocam fikriniz için çok teşekkür ederim. şuan deneme imkanım yok ama aklıma kabaca bir sorun geldi;
diğer form/formlar'a kodları taşımak gibi bir derde yol açmaz mı ? yani karmaşıklığa.
elbette bu benim sorunum ama böyle güzel bir yöntem varsa kodlar içinde neden olmasın diye düşündüm.
acaba bu konuda da fikir verebilir misiniz ?

Ayrıca böyle bir swap işlemi yaptırmak konusunda bilgi sahibi değildim. aydınlattığınız için de sağolun hocam.
Cevapla
#6
Kod yapınızda nesnelere procedure içerisinde başvuru yapmak yerine, procedure ve/veya function'lara ilişki kurmak istediğiniz nesneyi parametre olarak vermeyi tercih ederseniz, nesnelerin nerede olduğunun önemi kalmaz.

Örnek :
Aynı ekranda yer değişikliği kodu böyle olsun. 
Procedure içerisinden direkt başvuru yapmak derken bunu kast ediyordum. 
Dolayısıyla aynı Form1 altında bunu yazdınız. Başka formda yine lazım olsa ne yapmak lazımdı, aynı kodu yine yazmaktan öte button içerisinde belki de bir sürü dallanma yaparak CASE , IF vb ile alt sorgular yapmak zorunda kalıyoruz. 

procedure TForm1.Button1Click(Sender: TObject);
var
 aKonum : TPointF;
begin
   aKonum              := Rectangle1.Position.Point;
   Rectangle1.Position.Point := Circle1.Position.Point;
   Circle1.Position.Point    := aKonum;
end;

- Aynısını şöyle yapsak nasıl olurdu.

procedure SwapObjects( aShape, bShape: TShape );
var
 aKonum : TPointF;
begin
   aKonum                := aShape.Position.Point;
   aShape.Position.Point := bShape.Position.Point;
   bShape.Position.Point := aKonum;
end;

Kast ettiğim buydu. hangi formda olduğunuz önemini yitiriyor değil mi... Çünkü aShape dilerseniz Form1'de olsun dilerseniz Form2'de ; (bu örnekteki değişiklik tipine göre aynı formda olmak kaydıyla) aynı SWAP objects procedure iş görecektir.

procedure TForm1.Button2Click(Sender: TObject);
begin
 SwapObjects( Form1.Circle1, Form1.Rectangle1 );
end;

Şimdi bunu "Formlar Arasında" nasıl yaparız kısmı...

procedure SwapPositionAndParents( aShape, bShape: TShape );
var
 aKonum      : TPointF;
 aFmxObject  : TFmxObject;
begin
 if aShape.Parent <> bShape.Parent then
 begin
   aFmxObject    := aShape.Parent;
   aShape.Parent := bShape.Parent;
   bShape.Parent  := aFmxObject;
 end;

 aKonum                := aShape.Position.Point;
 aShape.Position.Point := bShape.Position.Point;
 bShape.Position.Point := aKonum;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 SwapPositionAndParents( Form1.Rectangle1, Form2.Circle1 );
end;

Burada hatırlatmam gereken ana unsur ( bu aynı zamanda performans kazandırıyor )   bilşenin OWNER'ı aynı kalmasıdır. Siz sadece PARENT'ini değiştiriyorsunuz. Form2'deki bilşenin sahipliği Form2'de kalır. Yani Kendisini Form1'de görürken Sahipliği Form2 olarak kalır. Bu da size bu oyun projenizde ekstra teyit mekanizması sunacaktır.
 
ÖZETLE:
Kod karmaşıklığı konusunu masaya yatırırsak, kodlarınızı yukarıda belirttiğim şekilde dinamik kurarsanız veya mevcut kodların dönüştürdükçe diyelim, sadeleşmiş olacaktır. Aynı ana formda kodlarınız olsun, sadece çalıştığında nesneler diğer formlardan çağrılıp yerini bulsun. Bu şekilde IDE performansı da artacaktır.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#7
Merhaba,

Aynı sorun bende de mevcut, formda bileşen sayısı arttığında kasma kaçınılmaz oluyor, form bu şekilde.
-Ctrl+H ile görünmeyen bileşenleri gizle yaptığımda büyük oranda kasma azalıyor.
-Image nesnelerine görsel yüklendikçe, eklenen görseller forumun dosya boyutunu aşırı yükseltiyor (dfm uzantılı olan) bu da kasmaya bir etken.

anaformda yer alan image nesnelerini mümkün olduğunca temiz tutmak gerek, görselleri runtime loadfromfile gibi fonksiyonlar ile yüklemek veya datamodül oluşturup tüm görselleri buraya ekleyip anaforma bağlamak kasmayı engellemek için yapılabilecekler


[attachment=1102]


http://docwiki.embarcadero.com/RADStudio...Components

Alıntı:The IDE allows you to hide or show non-visual components at design-time.
If you hide non-visual components and then add another non-visual component to the form, the option automatically reverts and the non-visual components are shown.
The keyboard shortcut for this option is Ctrl+H.
This option is persistent.
Cevapla
#8
@mrmarman hocam elinize emeğinize sağlık.
Bende ileri de elbet faydası olur diyerek bu yapıda yazmıştım %90'lık kod kısmını şimdi taşlar yerine oturmaya başladı.  Smile  ( tek defalık kısımları bile )
( %10'luk kısımda parametre iletme kısımları ve görsel şölenler )
Ayrıntılı anlatım için minnettarım size. şahsım adına her yorumunuz ufuk açıcı.

IDE kısmındaki sorunu da çözdüğüme göre şimdi ilerideki çıkacak sorunları bekleme zamanı  Blush

@egeven hocam gözlerim inanmak istemedi o nasıl bir görsel Smile  Idea
dediğiniz gibi image'ler çok etkiliyor. ama imagelist ve glype kullanmak büyük oranda etkiyi azaltıyor. ama bazı yerlerde image kullanmak zorunda olunduğu için yine de kasmalar kaçınılmaz oluyor.
ve aynen dosya boyutu da bir hayli artıyor şuan için bendeki fmx dosyası 11.5 MB boyutunda.
ben işlemleri en az bileşenle halletmeye çalışıyorum örneğin timer oyunda en etkili bileşen ( yapı taşımdır ) ve tek bileşen de yapmaya zorluyorum. 
elbette sorunlar da kaçınılmaz oluyor ama bir şekilde kılıf uyduruluyor. bunun da büyük etkisi oluyor elbette kasmaya ve performansa.

Ne diyeyim sizin form'u görünce şükrettim hocam  Smile Shy
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi 12 Kod yazarken kasması Mr.X 8 926 09-12-2023, Saat: 09:24
Son Yorum: engerex
  MySQL verileri yenilerken kasması ? Mr.Developer 24 16.201 01-11-2018, Saat: 12:10
Son Yorum: TescilsizUzman
Question kod uzunluğu ve proje kasması ? Mr.Developer 10 7.324 28-05-2018, Saat: 14:13
Son Yorum: Mr.Developer



Konuyu Okuyanlar: 2 Ziyaretçi