Forum: D Programlama Dili RSS
yapı elemanlarına ulaşımda foreach() kullanımı
Sayfa:  önceki  1  2 
cos00kun #16
Üye Kas 2014 tarihinden beri · 262 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13354
peki Ali hocam biraz basit gibi görünsede bu değişkenleri bir yapı yerine direk dizi olarak kullanarak içlerine okutsak ( çünkü nasılsa GtkD ile listBox üzerinde üzerlerinden direk işlem yapacağız) programcılık açısından çokmu basit kaçar ? biraz açarsak yapıda tanımladığımız değişkenlerin her birini dizi olarak tanımlasak ve dosyadan onlara okuma yapsak ki foreach() işlevi bunu pekala rahat halledebiliyor mesela ? maliyetini kestiremiyorum ama sanki bazan düşük seviyede öğrendiğimiz basit konular çok kargaşaya neden olmadan işlerimizi halledebilir diye geçiverdi aklımdan  elbette bir amatör olarak :blush:
E=mc^2
acehreli (Moderatör) #17
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4644 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Dizi elemanları aynı türden olmak zorundadır. O yüzden, bunu ancak bütün üyeleri aynı türden olan yapılarda kullanabiliriz. Bir başka deyişle, yapı yerine dizi kullanırız.

Ali
cos00kun #18
Üye Kas 2014 tarihinden beri · 262 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Ah evet dizilerdeki o temel kuralı unutmuşum
E=mc^2
cos00kun #19
Üye Kas 2014 tarihinden beri · 262 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Aslında daha önce C/C++ ile bu işlemi şu şekilde rahatça hallediyordum
function CT_data = readCtDataSequentially(path_DB)
 
CT_data = struct('Id',               NaN, ...
                 'CollisionType',    NaN, ...
                 'CollisionRadius',  NaN, ...
                 'Domain',           NaN, ...
                 'Class',            NaN, ...
                 'Type',             NaN, ...
........
........
yapı tanımından sonra;
..........
..........
fid = fopen(sprintf('%s\\FALCON4.CT', path_DB));
 
if (fid ~= -1)
    number_of_items = fread(fid, 1, 'uint16');
 
    for i = 1:1:number_of_items
        CT_data(i).Id               = fread(fid, 1, 'uint16');
        CT_data(i).CollisionType    = fread(fid, 1, 'uint16');
        CT_data(i).CollisionRadius  = fread(fid, 1, 'float32');
        CT_data(i).Domain           = fread(fid, 1, 'uint8');
        CT_data(i).Class            = fread(fid, 1, 'uint8');
        CT_data(i).Type             = fread(fid, 1, 'uint8');
        CT_data(i).SubType          = fread(fid, 1, 'uint8');
...........
...........
yapılacak iş kısaca bunun D ye uyarlanmış hali.. yarın bir çalışma yapacağım tüm yazılanları arkama alarak bakalım ne becerebileceğim  :-)
E=mc^2
cos00kun #20
Üye Kas 2014 tarihinden beri · 262 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yapı olayından vazgeçersek eğer (Sonra tekrar kullanmak kaydıyla)
import std.stdio;
import std.string;
import std.file;
 
void main(string[] parametreler)
{    
    short numEntities;
    ushort id;
    ushort collisionType;
    float collisionRadius;
    byte[8] classInfo;
    uint updateRate;
    uint updateTolerance;
    float fineUpdateRange;
    float fineUpdateForceRange;
    float fineUpdateMultiplier;
    uint damageSeed;
    int hitpoints;
    ushort majorRevisionNumber;
    ushort minorRevisionNumber;
    ushort createPriority;
    byte managementDomain;
    byte transferable;
    byte private_;
    byte tangible;
    byte collidable;
    byte global;
    byte persistent;
    byte[3] padding;
    short[7] visType;
    short vehicleDataIndex;
    byte dataType;
    uint dataPtr;
 
    File dosya = File ("FALCON4.ct", "rb" );
 
    numEntities = dosya.rawRead(new short[1])[0];
    id = dosya.rawRead(new ushort[1])[0];
    collisionType = dosya.rawRead(new ushort[1])[0];
    collisionRadius = dosya.rawRead(new float[1])[0];
    writeln("Num Entities= ",numEntities);
    writeln("Id= ",id);
    writeln("Collision Type= ",collisionType);
    writeln("Collision Radius= ",collisionRadius);
    //............
    //............
    //............
    dosya.close();
    readln();
}

çıktısı;
    Num Entities= 3956
    Id= 60395
    Collision Type= 0
    Collision Radius= 0[/color]

şimdi bunları 3956 adet diziye döndürdüğümde en azından amacıma belki acemi birr yol olsada ulaşmış oldum.. yarın programı olgunlaştıracağım hadi hayırlsısı bakalım.. Bu arada her türlü itiraz ve eleştiri için beklemekteyim  :-p
E=mc^2
cos00kun #21
Üye Kas 2014 tarihinden beri · 262 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
konuyu buraya taşıyorum çünkü artık olay yapı kısmından çıkıp dosyadan okumaya döndü lütfen cevaplar için aşağıdaki topice bakalım..

http://ddili.org/forum/post/13361

teşekkürler..
E=mc^2
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  önceki  1  2 
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2018-02-24, 10:14:14 (UTC -08:00)