Yorumları: 1.460
Konuları: 80
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 11.868
Üstad
TTest = record
public
Alan1 : Byte;
Alan2 : Byte;
Alan3 : Byte;
Alan4 : Byte;
procedure Show;
end;
{ TTest }
procedure TTest.Show;
begin
ShowMessage(
'Alan 1:' + Alan1.ToString() + sLineBreak +
'Alan 2:' + Alan2.ToString() + sLineBreak +
'Alan 3:' + Alan3.ToString() + sLineBreak +
'Alan 4:' + Alan4.ToString()
);
end;
Yukarıdaki gibi bir yapıyı sadece tek bir hamlede döngü kullanmadan belirli bir sayı ile nasıl doldurursunuz ? Tek bir atama ile Alan1..Alan4 'ün içeriklerinin 150 olmasını sağlayınız.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Yorumları: 1.460
Konuları: 80
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 11.868
Üstad
(02-10-2017, Saat: 14:42)vkamadan Adlı Kullanıcıdan Alıntı: Merhaba Tuğrul abi,
FillChar() ile yapabiliriz.
procedure TForm1.Button1Click(Sender: TObject);
var
a: TTest ;
begin
FillChar(a , SizeOf(a) , 150);
a.Show;
end;
Teşekkür ederim. Lakin FillChar kendi içinde döngü kullanıyor. Başka bir yöntemi daha var, daha şık daha kolay, daha esnek ;-)
Biraz daha düşünün bakalım
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Yorumları: 1.460
Konuları: 80
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 11.868
Üstad
(02-10-2017, Saat: 15:32)frmman Adlı Kullanıcıdan Alıntı: var a:Ttest;
b:dword absolute a;
begin
b := $96969696; // 150 = $96
ShowMessage(
'Alan 1:' + a.Alan1.ToString() + sLineBreak +
'Alan 2:' + a.Alan2.ToString() + sLineBreak +
'Alan 3:' + a.Alan3.ToString() + sLineBreak +
'Alan 4:' + a.Alan4.ToString()
);
end;
absolute ile atama yapılabiliyor ama delphi arka planda döngü ile mi yoksa aynı hafıza alanını ortak kullanarak mı yapıyor emin değilim.
Şansımı deneyeyim
Çok güzel, ellerinize sağlık. Ama sık kullanılan bir yöntem daha var
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Yorumları: 1.460
Konuları: 80
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 11.868
Üstad
(02-10-2017, Saat: 16:17)uparlayan Adlı Kullanıcıdan Alıntı: Şöyle olur mu?
procedure TForm1.Button1Click(Sender: TObject);
var
T : TTest;
X : DWORD;
begin
X := 2526451350;
asm
mov eax, DWORD ptr ds:X
mov T, eax
end;
T.Show;
end;
32 bit sistemlerde gayet güzel olur tabii. Lakin çok daha göz önünde, çok daha kolay bir yöntem daha var
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Yorumları: 1.460
Konuları: 80
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 11.868
Üstad
(02-10-2017, Saat: 16:28)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: (02-10-2017, Saat: 16:26)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: 32 bit sistemlerde gayet güzel olur tabii. Lakin çok daha göz önünde, çok daha kolay bir yöntem daha var
Tüm cevaplar bir birinden farklı ve kaliteli. Sınav sonucu bekler gibi aklınızdaki yöntemi merakla bekliyorum hocam.
Değil mi üstad
Maaşallah, arkadaşlarımız güzel çözüm önerileri paylaşıyorlar. Bu da programlama dünyasında çözüme giden yolun asla bir tane olmadığının bir başka ispatı olsa gerek.
Benim çözümüm son derece basit ama +20 puan verme isteğim hâla devam ediyor
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...