WM_USER + 1 ve bir kac soru

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

WM_USER + 1 ve bir kac soru

Mesaj gönderen ikra »

iyi bir baslik bulamadigimin farkindayim, fakat bazi yerlerde karsilastigim ve cevabini bulamadigim sorularim oluyor.
ben bunlarin hepsini bir baslik altinda toplayip burada zaman icerisinde sormak istiyorum.
cevaplayanada, cevaplamayanada tesekkür ediyorum.

Kod: Tümünü seç

WM_USER + 1
ne anlam ifade eder ve bana bunun getirisi ne dir?

Kod: Tümünü seç

while true do
seklinde döngü gördüm, bu döngü kisir degilmi dir? neden böyle bir döngüye ihtiyac duyulur?

Kod: Tümünü seç

record ve packed record
ikisinin arasindaki fark ne dir? ne zaman hangisini kullanmam gerekir?
kıdemsiz üye
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: WM_USER + 1 ve bir kac soru

Mesaj gönderen sabanakman »

-WM_USER mesajı windows tarafından herhangi bir işlev tanımı olmayan mesajın numarasıdır. Programcı olarak bir mesaj tanımı oluşturmak istenirse bu mesaj baz alınarak +1, +2 gibi eklemelerle yeni mesajlar eklenebilir.

-Bazı döngüleri sayısı ve bitişin sağlanacağı koşulun ne zaman sağlanacağı kestirilemez. Bu durumda sonsuz döngü kurup bitiş şartı döngü içinden kontrol edilerek (Break kodu ile) sağlanabilir. Bu while True do ile olacağı gibi Repeat Unil False; ile de olabilir.

-packed record biraz bellek tasarrufu yapmak için kullanılmaktadır. Record tanımı değişkenler arası 2'nin katları şeklinde yer ayırır ama packed record her alanın kendinin boyutu kadar tutar. Örnek..:

Kod: Tümünü seç

type
  // Declare an unpacked record
  TDefaultRecord = Record  //20 byte
    name1   : string[4];
    floater : single;
    name2   : char;
    int     : Integer;
  end;

  // Declare a packed record
  TPackedRecord = Packed Record //14 byte
    name1   : string[4];
    floater : single;
    name2   : char;
    int     : Integer;
  end;

var
  defaultRec : TDefaultRecord;
  packedRec  : TPackedRecord;

begin
  ShowMessage('Default record size = '+IntToStr(SizeOf(defaultRec)));
  ShowMessage('Packed record size = '+IntToStr(SizeOf(packedRec)));
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: WM_USER + 1 ve bir kac soru

Mesaj gönderen ikra »

abicim ellerine saglik. Allah razi olsun.

peki iki sorum daha olacak müsadenle.

1.) WM_USER+1 bir baska unitte de tanimli ise, burada bir cakisma söz konusu olur mu? olursa eger, unitlerin hepsini dolasip acaba tanimlanmis baska bir WM_USER +1 varmi diye kontrol etmem mi gerekir?
2.) her zaman packed record mu kullanmam gerek yoksa normal record'u kullanmak zorunda oldugum durumlar olabilir mi? eger olabilir ise, bunu kisaca bir anlatabilir misin?

Hazir kod istemiyorum, yanlis anlama. sadece anahtar sözcükler.
kıdemsiz üye
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: WM_USER + 1 ve bir kac soru

Mesaj gönderen sabanakman »

Mesajlar genelde görsel bileşenler içindir. Nasıl ki, WM_KEYDOWN mesajı her bileşen için bağımsız olarak karışıklık olmadan çalışıyorsa bunda da öyle olacaktır.

Çok özel durum olmadıktan sonra record veya packed record kullanımları arasında fark yoktur. packed record bellekte az yer kaplar ama record kullanımı daha hızlıdır. Eğer bellekte çok büyük miktarda veriler tutulmayacaksa sadece record kullanılabilir. Harici kütüphanelerde (genelde windows API fonksiyonlarında) bulunan fonsiyonları kullanırken, parametre olarak gönderilen veya alınan bazı özel veri yapıları olabiliyor. Bu veri yapılarını doğru oluşturabilmek için bu iki yöntemden uygun olana göre tanım yapılması gerekmektedir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: WM_USER + 1 ve bir kac soru

Mesaj gönderen ikra »

cok tesekkür ederim.
ellerine saglik :bravo:
kıdemsiz üye
Cevapla