Çok boyutlu dinamik dizi değişken

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kilitli
memiky
Üye
Mesajlar: 116
Kayıt: 17 Kas 2004 01:52
İletişim:

Çok boyutlu dinamik dizi değişken

Mesaj gönderen memiky »

Bütün arkadaşlara merhaba.. Çok boyutlu dinamik bir dizi değişkeni bir fonksiyona parametre olarak gönderip fonksiyon dahilinde dizi değişkenin içeriği üzerinde işlem yapmak istiyorum.. Bu konuda bilgi verecek arkadaşlara şimdiden teşekkürler...
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Bu linki inceledinizmi ?
viewtopic.php?t=953&highlight=dizi

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

aklıma gelen en mantıklı cevap diziyi create ettikten sonra pointer la fonksiyona göndermek.
böylece hem taşınan veri sayısı birkaç byte düşer hemde datayıp üst bellekte tutarsınız.

şu an yoğunum. öğleden sonra bi örnek yapar gönderirirm bu başlığa
.-.-.-.-.-.-.-. ^_^
memiky
Üye
Mesajlar: 116
Kayıt: 17 Kas 2004 01:52
İletişim:

İnceledim...

Mesaj gönderen memiky »

Husonet, teşekkürler.. Linki şimdi inceledim.. Benim derdim orada açıklandığı şekilde tanımlanan dizi değişkeni bir fonksiyona parametre olarak gönderebilmek.. Sanırım fonksiyonu deklera ederken veya çağırırken hata yapıyorum..
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2381
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Kod: Tümünü seç

........
  private
    Array_: Array of Integer;
  public
    procedure deneme(const X : array of Integer);
............

..........
begin
   if Length(array_)>0then SetLength( array_,0);
   SetLength( array_,5);
   Array_[1] := 1;
   array_[2] := 22;
   array_[3] := 333;
   Array_[4] := 4444;
   Array_[5] := 55555;
   deneme(Array_);
..............

procedure TFRM_Deneme.deneme(const X : array of Integer);
begin
  ShowMessage( IntToStr(X[1])+#13#10+
               IntToStr(X[2])+#13#10+
               IntToStr(X[3])+#13#10+
               IntToStr(X[4])+#13#10+
               IntToStr(X[5])+#13#10+
               'Length(X) == ' +IntToStr(Length(X) ) );
end;

ama ben genede global bir değişken tanımlanıp onun kullanılması taraftarıyım
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
memiky
Üye
Mesajlar: 116
Kayıt: 17 Kas 2004 01:52
İletişim:

Global değişken...

Mesaj gönderen memiky »

Freeman teşekkür ederim, gayet anlaşılır kod yazmışsınız. Ancak benim derdim çok boyutlu dinamik dizi değişkendi. Tabii ki bu dizi değişkeni Global olarak tanımlayın diyebilirsiniz. Bu konuyu kitapta anlatmak istediğim için alternatif çözümlere bakmadım..
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

esasında bende @freeman inkine benzer bir çözüm önermiştim ama neyse, pointerları karıştırmayalım.

siz bu değil demişsiniz. tam anlayamadım istediğiniz matris şeklinde bir yapımı?

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
type
 Array_ = Array of Integer;
 Matris = Array of Array_;
var myArray:Matris;

begin
 SetLength( myArray,5);
 SetLength( myArray[0],10);
 SetLength( myArray[1],6);
 SetLength( myArray[2],3);
 SetLength( myArray[3],2);
 SetLength( myArray[4],53);
 myArray[1][1]:=4;
 myArray[1][2]:=4;
 myArray[2][1]:=4;
 myArray[2][2]:=4;

end;
gibi; biraz açarmısınız?
.-.-.-.-.-.-.-. ^_^
memiky
Üye
Mesajlar: 116
Kayıt: 17 Kas 2004 01:52
İletişim:

Record tipi

Mesaj gönderen memiky »

Mege'ye teşekkürler.. Biraz baştan alayım: Bir dinamik dizi değişken tanımladım, arından elaman sayısını tespit edip değerler aktardım. Sonra bu dizi değişkenin içeriğini ListBox'a aktaracak bir fonksiyon hazırladım. Bu fonksiyon bildiğimiz fonksiyonlardan pek farklı değil...
Aşağıda bu kodu verdim.

Var
Basket : array string;
Sonuc : String;
Begin
SetLength(Basket, 3);
Basket[0] := 'Ülkerspor';
Basket[1] := 'Efespilsen';
Basket[2] := 'Fenerbahçe';
Sonuc := Takim_yaz(Basket);

Function TWinForm.Takim_yaz(Takim : Array of String): String;
Var i : Integer;
Begin
For i := Low(Takim) To High(Takim) Do
ListBox1.Items.Add(Takim);
End;

Buraya kadar herşey normal. Ancak fonksiyona parametre olarak göndermek istediğim dizi değişken 2 boyutlu olduğunda sorun çıkıyor. Asıl öğrenmek istediğim bu. Arkadaşlar aklı yolu bir misali Freeman Record tipini kullanarak örnek yaptığında ben de Record tipi ile uğraşıyordum.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
önce çok boyutlu dinamik dizimizi tanımlıyoruz.

Kod: Tümünü seç

Type
  TTakimType=array of array[1..2] of string;
sonra değişkenimizi tanımlıyoruz,

Kod: Tümünü seç

var
  TAkimlar:TTAkimType;
diziyi oluşturuyoruz.

Kod: Tümünü seç

  setlength(Takimlar,2);
  takimlar[0][1]:='GALATASARAY';
  takimlar[0][2]:='ŞAMPİYON';
  takimlar[1][1]:='ÇORUMSPOR';
  takimlar[1][2]:='HEHEHEHE';
  Yaz(takimlar);
bu diziyi kullanacağımız prcedure şu şekilde olacak (yaz proceduresi)

Kod: Tümünü seç

procedure TForm1.YAz(s: TTakimType);
var
i:integer;
begin
  for i:=low(s) to high(s) do
  Begin
    l1.items.add(s[i][1]);
    l2.items.add(s[i][2]);
  End;
end;
Umarım soruyu doğru anlamışımdır
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
memiky
Üye
Mesajlar: 116
Kayıt: 17 Kas 2004 01:52
İletişim:

Yazar açıklama getirmek, programcı o işlemi yapmak ister..

Mesaj gönderen memiky »

Arkadaşlar merhaba,

Gördüm ki Delphi ile teknik bir konuda sorun yaşadığımda peşinen kaygınlanmama gerek yok.. Çünkü buradaki arkadaşların taktir edilecek
bir bilgi düzeyleri var..

Pprogram yazarken takıldığım için burada soru sorsaydım yukarıda bana verilen cevapların ziyadesi ile yeterli olduğunu söylerdim. Konu yazarlık olunca işin rengi değişiyor.. Yazarlıkta sorunu çözme veya o işlemi yapmak yerine açıklama geretirmek gerekiyor. Herkese saygılar...
algorian
Üye
Mesajlar: 20
Kayıt: 24 Kas 2004 10:54

Bilen adam öğretir, bilemeyen yönetir...

Mesaj gönderen algorian »

Yaklaşık 10 yıldır bilgisayarlar uğraşan bir bilgisayar mühendisiyim, bu yıl mezun oldum. Bilgisayar mühendisliğine girmeden önce öğrendiğim herşeyi kitaplardan öğrendim, ama bu kitapların hiçbirinin yazarı Memik Yanık değildir. Bu yazı kesinlikle ona karşı bir hakaret amacı gütmemektedir, tamamen benim fikirlerimdir.

Öncelikle yıllardır delphi hakkında kitap yazan birinin dinamik dizilerle ilgili sorduğu bu soruyu hayretler içinde okudum. Evet Memik Bey tanınmış bir kitap yazarımız ama bir kitap yazmadan önce o kitabın konusu hakkında ÖĞRETECEK kadar bilgi sahibi olmak gerekmez mi. Evet kabul ediyorum, Memik bey kitaplarında yazdıklarını çok iyi biliyor ve ÖĞRETEBİLİYOR. Sorun da bu zaten. Benim şahsi fikirlerim Memik Bey'in bundan daha ilerisini bilmediği, hatta bu kitapların okunmaması gerektiğidir. Birazdan açıklayacağım, okumaya devam edin...

Ben bir bilgisayar mühendisi ve programcısıyım, ve şuna inanıyorum ki bir mühendis çok bilen değil bilmesi gerektiğini öğrenmeyi bilen kişidir. Mühendisin yeteneği ve özelliği budur : öğrenebilme ve öğrendiklerini problem çözmede kullanabilme yeteneği (sadece mühendislik mezunları mühendis değildir, tanıdığım birçok lise mezunu gerçek mühendis var, eline su bile dökemeyeceğim).

Bahsi geçen kitapları okuyan ve okur okumaz hemen kendisine programcı diyen birçok kişi tanıyorum. Ve aynı kişilerin "cahil, cesur olur" sözüne istinaden altından kalkamayacağı birçok işin içine girip eline yüzüne bulandıranları da. Bu kitaplar orda burda elime geçti ve çoğunu okudum, ama öğrenmek için değil acaba kitaplarını değiştirmiş mi diye (etrafımda çok kitap okuyan adam var, DEPLHI 8 kitabını bile okudum).
Üslubuyla ilgili birşey söylemeye gerek duymuyorum ama anlatım tarzı insanda bu kitabın bilgisayar kitabından daha farklı bir şey olduğu hissini uyandırıyor. Öyle ki bir sözelci bile bu kitabı okuyarak programcı olabilir. Sözelciden kastım şahsın sayısal bilimlerle ilgilenmemesidir. Takdir edersiniz ki TÜM İCATLAR sayısal bilimlerden ve bu sayısal bilimler de FELSEFE'nin neden sorusuna dayanan temelinden türemiştir. Oysa bu kitapta benzer kontroller tekrar tekrar anlatılmış, yani aynı mantık her component'e uygulanmış. Bunun sayesinde bu kitabı okuyanlar bu ve bunun gibi kitaplar ve internet'ten bulunabilecek hazır kontroller ile istedikleri programı yazabileceklerini sanıyorlar. Hatta bu yolun her problemi çözmekte kullanlabileceğine bile.

Oysa, ALGORİTMA kurmadan program yazılmaz. Ve kesinlikle algoritma kurmanın bu kitapta izlenilen yol gibi sabit bir akışı yoktur. Çünkü Algoritmanın algoritması olmaz. Öyle olsaydı herhangi bir problemleri çözebilecek bir algoritmayı ÜRETEN tek bir algoritma ile her problem çözülürdü. Bu da dünya'nın sonu demektir. Ve bu da gösteriyor ki program yazmak algoritma ile (algoritmik düşünce = cebirsel düşünce [Algebra = cebir]) olur. Zaten bu yüzden program yazmaya PROGRAMLAMA SANATI adı verilmiyor mu (Ömer akgöbek'in PASCAL kitabını okuyanlar beni daha iyi anlayacaktır)? Çünkü herkes bir farklı problemleri çözmek için farklı algoritmalar kurar, işte sanat burdadır. Ve her programcı ürettiğine bir sanat eseri gözüyle bakar, çünkü onu düşünerek ve kendinden birşeyler üreterek ortaya çıkarmıştır.


Sonuç olarak ortaya kendini programcı sanan tarzanlar çıkıyor. Lütfen bu sözü unutmayın : Bilen adam öğretir, bilemeyen yönetir. Peki ben Memik Bey'in kitaplarda yazdıklarını bilmiyor muydum, yukarıda sorduğu sorunun cevabını bile yıllar önce bilen, ortaya kullanılabilir yazılım çıkaran biri olarak ben de böyle bir kitap yazamaz mıydım? Yazabilirdim ama yazmadım çünkü bu işi benden çok daha iyi bilen ve yapan kişiler varken pastadan pazar payı kapmak için bu işe girişmem anlamsınız olurdu. Oysa Türkiye'de mühendis kalitesindeki adamların sayısı az olduğu ve özenildiği için böyle kitaplar var ve satıyor. Bunun da bir kaç sonucu var. Bunlardan ilki ortada programcı diye dolaşan tarzanlar, ikincisi de Memik Bey'in maddi kazancı.

Belki bunları yazdığım için forumdan hesabım silinir, ama ben ancak buraya kadar dayanabildim, artık daha fazla dayanacak sabrım kalmadı. Çünkü Memik Bey insanların artık bahsettiğim şeylerin farkına vardığını biliyor ve bu imajından sıyrılmak için gerçek programcı ve mühendislerin bilgilerinden faydalarak kitap yamaya devam edecek.

Bu foruma şimdiye kada üye olamadım ama hep okudum, zira foruma üyelik açıldığı gün de hemen üye oldum (mussiksek.com dan beri mustafa şimşek'i tanıyorum). Burdaki insanların zeka seviyesini tahmin edebiliyorum, ve bilgiyi paylaşma isteğinin farkındayım ama bilgi satılmak için olmamalıdır. Hepinize saygılarımı sunarım.

Umarım üyeliğim silinmez, çünkü burda sadece fikir var.
memiky
Üye
Mesajlar: 116
Kayıt: 17 Kas 2004 01:52
İletişim:

Soruyu cevaplasaydınız zaten büyürdünüz...

Mesaj gönderen memiky »

Arkadaşım merhaba;

Askerlik yapanlar bilir; henüz mezun olan teğmenler astsubaylara çok çektirirler.. Delphi veya başka bir konuda benden çok iyi olabilirsiniz. Zaten benim "çok iyi programcıyım" dediğimi kimse duymamıştır.

Sizin iyi programcı olmanız, size ve memlekte yararlı olacağı için sevinmekle yetinirim. Gelelim çok boyutlu dinamik dizi değişkenlere.. Borland'ın programcılarının yazdığı herşeyi kimse bilmek zorunda değildir. Bu nedenle çok boyutlu dinamik bir dizi değişkeni bir fonksiyona parametre olarak gönderme konusunu bilmemem utanılacak birşey değildir.. Keşke saldırmak yerine soruma cevap verseydiniz. Bu durumda bu forumum üyelerinin nazarında büyürdünüz.. Herkese saygılar..
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Konu başlık dışına çıktığı için kilitliyorum. Birbirimizi kırmamaya özen gösterelim lütfen.

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kilitli