Forum: D Programlama Dili RSS
dosyadan okuma dosyaya yazma ile ilgili bir soru/sorun
Sayfa:  önceki  1  2  3  4  sonraki 
erdem (Moderatör) #31
Üye Tem 2009 tarihinden beri · 1076 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13405
Gtkd için şunu denedim:
                    dosya.rawRead((&falcon4_ct.id)[0..1]);
                    model.ekle("Id= ", falcon4_ct.id);
Sonra veri modelinin ekle parametresinin ikincisini int olarak değiştirdim. Bu şekilde kayıdı doğru gösterdi.

Ya da string olmasını istiyorsak:
        import std.conv;
 
        model.ekle("Id= ", to!string(falcon4_ct.id));
Bu mesaj erdem tarafından değiştirildi; zaman: 2018-01-25, 01:36.
erdem (Moderatör) #32
Üye Tem 2009 tarihinden beri · 1076 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Benim asıl dikkatimi çeken de dünkü programda nasıl olur da yapının boyutunu 84 gösteriyor.
    /* ... */
 
    for (int i = 0; i < numEntities; ++i)
    {
        kütük.rawRead((&currentEntity)[0..1]);
        writeln("Current entity id ", currentEntity.vuClassData.id);
        writeln("Size ", currentEntity.sizeof);
        
    }
cos00kun #33
Üye Kas 2014 tarihinden beri · 262 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
seninki yine iyi bende 88 çıkıyor  :-D
E=mc^2
acehreli (Moderatör) #34
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ı
Hizalama (alignment) ile ilgili olabilir. Ben o yüzden align(1) kullanmış olmalıyım:

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

Ali
erdem (Moderatör) #35
Üye Tem 2009 tarihinden beri · 1076 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ali hocanın söylediği gibi hizalamayı ayarlayınca düzeldi.
import std.stdio;
import std.conv;
import std.bitmanip;
 
align(1)
struct VuEntity
{
align(1):
    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 private1;
    byte tangible;
    byte colidable;
    byte global;
    byte persistent;
    byte[3] padding;
}
 
align(1)
struct Falcon4Entity
{
align(1):
    VuEntity vuClassData;
    short[7] visType;
    short vehicleDataİndex;
    byte dataType;
    uint dataPtr;
}
 
void main()
{
    byte[] bellek;
    bellek.length = 1024;
 
    auto kütük = File("FALCON4.ct", "r");
 
    short numEntities;
 
    numEntities = kütük.rawRead(new short[1])[0];
    writeln("Number of entities ", numEntities);
 
    Falcon4Entity[] entities;
 
    entities.length = numEntities;
 
    auto readEntities = kütük.rawRead(entities);
 
    for (int i = 0; i < numEntities; ++i)
    {
        writeln("Size in bytes ", readEntities[i].sizeof);
        writeln("Id ", readEntities[i].vuClassData.id);
        writeln("Collision type ", readEntities[i].vuClassData.collisionType);
        writeln("Collision radius ", readEntities[i].vuClassData.collisionRadius);
        writeln("Data pointer ", readEntities[i].dataPtr);
    }
}
Burada yapının yazdırma işini toString() ile yapsak daha iyi olur.
cos00kun #36
Üye Kas 2014 tarihinden beri · 262 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
    byte[] bellek;
    bellek.length = 1024;

bu nerde kullanılıyor ? silinecek herhalde değilmi Erdem hocam..

Birde burda ID sürekli 0 değeri çıkartıyor.. sanırım benim verdiğim değişikliğin işlenmemiş hali bu zira 81 bytedan fazla olmalıki tutsun..
E=mc^2
erdem (Moderatör) #37
Üye Tem 2009 tarihinden beri · 1076 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
cos00kun:
    byte[] bellek;
    bellek.length = 1024;

bu nerde kullanılıyor ? silinecek herhalde değilmi Erdem hocam..

Evet haklısın burası silinecek.

cos00kun:
Birde burda ID sürekli 0 değeri çıkartıyor.. sanırım benim verdiğim değişikliğin işlenmemiş hali bu zira 81 bytedan fazla olmalıki tutsun..

Ubuntu altında çıktısı şu şekilde :

Number of entities 3956
Size in bytes 81
Id 60395
Collision type 0
Collision radius 0
Data pointer 0
Size in bytes 81
Id 60395
Collision type 0
Collision radius 0
Data pointer 155
Size in bytes 81
Id 60395
Collision type 0
Collision radius 0
Data pointer 3
Size in bytes 81
Id 60395
Collision type 0
Collision radius 0
Data pointer 8
Size in bytes 81
Id 60395
Collision type 0
Collision radius 0
Data pointer 9

Sakın baytların dizilimiyle alakalı olmasın. Big Endian, Little Endian falan fıstık diyorlar ya.
cos00kun #38
Üye Kas 2014 tarihinden beri · 262 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Erdem hocam sitesinde yazan yapı sanırım eski o yüzden ben doğru sıralamayı ve btye dizilimini buldum sanırım.. şimdiye kadar kullandığım programlarda test ettiğimde doğru değerleri veriyor yani artık struct yapımızın kesinlikle şöyle olması gerekiyor
struct  FALCON4_ct {
    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;
    ushort padding1_2;
    byte padding3;
    short[7] visType;
    short vehicleDataIndex;
    byte dataType;
    ushort dataPtr;
    short unknow1;
}
Böyle yaparsak hatasız okunuyor  :-)

Bu arada burada code yazarken code alanının farklı bir renkle ekrana çıkması sağlanamazmı acaba ? daha iyi olur düşüncesindeyim kendimce
E=mc^2
erdem (Moderatör) #39
Üye Tem 2009 tarihinden beri · 1076 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
cos00kun:
Bu arada burada code yazarken code alanının farklı bir renkle ekrana çıkması sağlanamazmı acaba ? daha iyi olur düşüncesindeyim kendimce

Bu kısmı anlamadım ama gösterdiğim program senin ortamında nasıl çıktı veriyor.

Senin gösterdiğin yapının boyutu 88 gösteriyor. numEntities yapı üyesi değil. Sadece dosyanın başında kaç  tane yapı okuyacağımızı gösteren bir rakam. Hadi diyelim ki iki yapıyı birleştirmiş olsan ama gene örneğin bu alan byte[3] padding; 3 bayt olacak.

Ali hocanın yazdığı programa da bakarsan 2 tane yapı kullanmış.
cos00kun #40
Üye Kas 2014 tarihinden beri · 262 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Erdem hocam anlamadığın kısmın programla bir alakası yok sadece burda topicte mesaj yazarken kodları yazdığımız kısımın arka zemin rengi biraz farklı olsa iyi olurdu diyorum.. nasılki alıntı yaptığımızda arka zemin rengi hafif bir koyulaşıyorsa kod bölümüde aynısı olsa demek istemiştim  :blush:

Gelelim Programa.. Ali hocanın iki ayrı struct kullanma sebebi sitesinde öyle yazması ama orda aslında gruplama yapmaya çalışmış yani buna gerek yok aslında.. Evet yanlış değil ama gerekte yok.. Şöyle düşün ordaki site belkide 20 yıldır var ve eski haliyle duruyor ve bu uçuş simülasyonu gönüllülerce o gün bugün sürekli geliştiriliyor.. Zamanında buna hizmet etmiş biri olarakta gururla izliyorum zaman zaman  :blush:

Dosya yapısını daha doğrusu hangi dosyanın neler yapabileceğini çok iyi bilen biri olarak bu konuda bana güvenebilirsin  ;-)

ister tek struct ister iki struct olsun farketmez sonuçta benim yaptığım türleri kullanmamız lazım. Yukarıda;
eski kodda yani sizin kullandığınızda byte[3] padding; benimkinde ushort padding1_2; oldu ve ardından byte padding3; eklendi
yine sizdeki  uint dataPtr; bende ushort dataPtr; ve ardından short unknow1; eklendi
E=mc^2
acehreli (Moderatör) #41
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ı
Dosya düzeninin yeni halini gösteren bir kaynak var mı? numEntities'in her kayıt için tekrarlanıyor olması mantıklı gelmiyor çünkü hem gerek yoktur (dosyanın başından tek kere okunması yeter) hem de dosya boyutu açısından savurganlıktır çünkü aynı şey her kayıtta tekrarlanıyor.

Ali
cos00kun #42
Üye Kas 2014 tarihinden beri · 262 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Bir bakayım Ali hocam
E=mc^2
Bu mesaj cos00kun tarafından değiştirildi; zaman: 2018-01-25, 22:35.
acehreli (Moderatör) #43
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ı
Ben baktım: Dosyanın başındaki iki bayt dosyanın içinde başka bir yerde geçmiyor. :)

Ali
cos00kun #44
Üye Kas 2014 tarihinden beri · 262 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #42
Ali hocam numEntities zaten her kayıtta tekrarlanmıyor. ID tekrarlanıyor daha doğrusu hep aynı değeri alıyor ID.

numEntities benim yazdığım kodda bir kere okunuyor ardından readRaw onu tekrar okuyarak değişkene atamıyor.. sadece numEntities struct tanımının içinde yer alıyor o kadar.. Belki struct yapısının içinden çıkarsak sanki daha iyi bile olabilir çünkü structun tüm elemanlarını birşekilde foreach yada for ile döndürürken ona tekrar bir atama yapmaması lazım yada hatalardan dahamı kaçınmış olurduk acaba bilemedim..

doğru şekilde başkalarının yazdığı programlardaki değerlerle örtüşen program şimdilik bende şu şekilde;
import std.stdio;
import std.string;
import std.file;
import std.format;
 
struct  FALCON4_ct {
    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;
    ushort padding0_1;
    byte padding2;
    short[7] visType;
    short vehicleDataIndex;
    byte dataType;
    ushort dataPtr;
    short unknow1;
}
 
void dosyadanOku() {
    FALCON4_ct falcon4_ct;
    File dosya = File ("FALCON4.ct", "rb" );
    
    dosya.rawRead((&falcon4_ct.numEntities)[0..1]);
    writeln("Yapının boyutu= ",falcon4_ct.sizeof);
 
    for(int i=0;i<3; i++)  {   // kaç tane kayıt varsa okadar dönecek şimdilik 3..... for(int i=0;i<falcon4_ct.numEntities; i++)
        dosya.rawRead((&falcon4_ct.id)[0..1]);
        dosya.rawRead((&falcon4_ct.collisionType)[0..1]);
        dosya.rawRead((&falcon4_ct.collisionRadius)[0..1]);
        dosya.rawRead((&falcon4_ct.classInfo[0])[0..1]);
        dosya.rawRead((&falcon4_ct.classInfo[1])[0..1]);
        dosya.rawRead((&falcon4_ct.classInfo[2])[0..1]);
        dosya.rawRead((&falcon4_ct.classInfo[3])[0..1]);
        dosya.rawRead((&falcon4_ct.classInfo[4])[0..1]);
        dosya.rawRead((&falcon4_ct.classInfo[5])[0..1]);
        dosya.rawRead((&falcon4_ct.classInfo[6])[0..1]);
        dosya.rawRead((&falcon4_ct.classInfo[7])[0..1]);
        dosya.rawRead((&falcon4_ct.updateRate)[0..1]);
        dosya.rawRead((&falcon4_ct.updateTolerance)[0..1]);
        dosya.rawRead((&falcon4_ct.fineUpdateRange)[0..1]);
        dosya.rawRead((&falcon4_ct.fineUpdateForceRange)[0..1]);
        dosya.rawRead((&falcon4_ct.fineUpdateMultiplier)[0..1]);
        dosya.rawRead((&falcon4_ct.damageSeed)[0..1]);
        dosya.rawRead((&falcon4_ct.hitpoints)[0..1]);
        dosya.rawRead((&falcon4_ct.majorRevisionNumber)[0..1]);
        dosya.rawRead((&falcon4_ct.minorRevisionNumber)[0..1]);
        dosya.rawRead((&falcon4_ct.createPriority)[0..1]);
        dosya.rawRead((&falcon4_ct.managementDomain)[0..1]);
        dosya.rawRead((&falcon4_ct.transferable)[0..1]);
        dosya.rawRead((&falcon4_ct.private_)[0..1]);
        dosya.rawRead((&falcon4_ct.tangible)[0..1]);
        dosya.rawRead((&falcon4_ct.collidable)[0..1]);
        dosya.rawRead((&falcon4_ct.global)[0..1]);
        dosya.rawRead((&falcon4_ct.persistent)[0..1]);
        dosya.rawRead((&falcon4_ct.padding0_1)[0..1]);
        dosya.rawRead((&falcon4_ct.padding2)[0..1]);
        dosya.rawRead((&falcon4_ct.visType[0])[0..1]);
        dosya.rawRead((&falcon4_ct.visType[1])[0..1]);
        dosya.rawRead((&falcon4_ct.visType[2])[0..1]);
        dosya.rawRead((&falcon4_ct.visType[3])[0..1]);
        dosya.rawRead((&falcon4_ct.visType[4])[0..1]);
        dosya.rawRead((&falcon4_ct.visType[5])[0..1]);
        dosya.rawRead((&falcon4_ct.visType[6])[0..1]);
        dosya.rawRead((&falcon4_ct.vehicleDataIndex)[0..1]);
        dosya.rawRead((&falcon4_ct.dataType)[0..1]);
        dosya.rawRead((&falcon4_ct.dataPtr)[0..1]);
        dosya.rawRead((&falcon4_ct.unknow1)[0..1]);
    
        writeln("Num Entities= ",falcon4_ct.numEntities);
        writeln("Id= ",falcon4_ct.id);
        writeln("Collision Type= ",falcon4_ct.collisionType);
        writeln("collision Radius= ",falcon4_ct.collisionRadius);
        writeln("Class Info [0]= ",falcon4_ct.classInfo[0]);
        writeln("Class Info [1]= ",falcon4_ct.classInfo[1]);
        writeln("Class Info [2]= ",falcon4_ct.classInfo[2]);
        writeln("Class Info [3]= ",falcon4_ct.classInfo[3]);
        writeln("Class Info [4]= ",falcon4_ct.classInfo[4]);
        writeln("Class Info [5]= ",falcon4_ct.classInfo[5]);
        writeln("Class Info [6]= ",falcon4_ct.classInfo[6]);
        writeln("Class Info [7]= ",falcon4_ct.classInfo[7]);
        writeln("Update Rate= ",falcon4_ct.updateRate);
        writeln("Update Tolerance= ",falcon4_ct.updateTolerance);
        writeln("Fine Update Range= ",falcon4_ct.fineUpdateRange);
        writeln("FineUpdateForce Range= ",falcon4_ct.fineUpdateForceRange);
        writeln("Fine Update Multiplier= ",falcon4_ct.fineUpdateMultiplier);
        writeln("Damage Seed= ",falcon4_ct.damageSeed);
        writeln("Hitpoints= ",falcon4_ct.hitpoints);
        writeln("Major Revision Number= ",falcon4_ct.majorRevisionNumber);
        writeln("Minor Revision Number= ",falcon4_ct.minorRevisionNumber);
        writeln("Create Priority= ",falcon4_ct.createPriority);
        writeln("Management Domain= ",falcon4_ct.managementDomain);
        writeln("Transferable= ",falcon4_ct.transferable);
        writeln("Private= ",falcon4_ct.private_);
        writeln("Tangible= ",falcon4_ct.tangible);
        writeln("Collidable= ",falcon4_ct.collidable);
        writeln("Global= ",falcon4_ct.global);
        writeln("Persistent= ",falcon4_ct.persistent);
        writeln("Padding0_1= ",falcon4_ct.padding0_1);
        writeln("Padding2= ",falcon4_ct.padding2);        
        writeln("Vis Type[0]= ",falcon4_ct.visType[0]);
        writeln("Vis Type[1]= ",falcon4_ct.visType[1]);
        writeln("Vis Type[2]= ",falcon4_ct.visType[2]);
        writeln("Vis Type[3]= ",falcon4_ct.visType[3]);
        writeln("Vis Type[4]= ",falcon4_ct.visType[4]);
        writeln("Vis Type[5]= ",falcon4_ct.visType[5]);
        writeln("Vis Type[6]= ",falcon4_ct.visType[6]);
        writeln("Vehicle Data Index= ",falcon4_ct.vehicleDataIndex);
        writeln("Data Type= ",falcon4_ct.dataType);
        writeln("Data Ptr _ RecordID= ",falcon4_ct.dataPtr);
        writeln("Unknow 1= ",falcon4_ct.unknow1);
        writeln();
        writeln();
    }
 
    dosya.close();
}
 
void main(string[] parametreler)
{    
    dosyadanOku();
    readln();
}

Bu program doğru değerleri üretiyor Erdem hocamın dediği şekle ancak akşam dönüştürebilirim ancak readRaw okumaları benim bu şekilde yapılırsa doğru değerlerin çıktığını rahatlıkla söyleyebilirim
E=mc^2
acehreli (Moderatör) #45
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ı
Öncelikle, FALCON4.ct dosyasını sonunda indirdim ve baktım.: internette bulduğumuz .ct dosya düzeni doğruymuş.

cos00kun:
Ali hocam numEntities zaten her kayıtta tekrarlanmıyor.

O zaman FALCON4_ct yapısında yer almamalı, değil mi? Çünkü FALCON4_ct "entity" dedikleri kavramı temsil ediyor ama entity adedi o kavramın parçası değil, onun dışında bir şey.

ID tekrarlanıyor daha doğrusu hep aynı değeri alıyor ID.

Baştan bir sorun varmış gibi düşündük ama normal demek ki.

Belki struct yapısının içinden çıkarsak sanki daha iyi bile olabilir

Evet! Lütfen! :)

çünkü structun tüm elemanlarını birşekilde foreach yada for ile döndürürken ona tekrar bir atama yapmaması lazım yada hatalardan dahamı kaçınmış olurduk acaba bilemedim..

Daha önceki konuşmalarımızda FALCON4_ct yapısını dosyanın binary özelliğine uygun olarak ve tam tarifine göre tam 81 bayt olacak biçimde ayarlamıştık. (align olanağı doldurma baytları ile.)

O sayede bütün yapıyı tek rawRead ile okuyabiliyoruz. Ek olarak, eğer ileride dosyaya yazmak gerekirse yine tek rawWrite ile yazabilirsin. Senin yaptığın ise oldukça külfetli: hem çok uzun yazmışsın hem de her rawRead çağrısı için ayrı ayrı zaman harcanıyor.

Bu program doğru değerleri üretiyor Erdem hocamın dediği şekle ancak akşam dönüştürebilirim ancak readRaw okumaları benim bu şekilde yapılırsa doğru değerlerin çıktığını rahatlıkla söyleyebilirim

Daha önce bilerek eksik bıraktığım programı tamamladım. O da seninki gibi doğru sonuç üretiyor:
import std.stdio;
import std.format;
import std.exception;
 
// Bkz: https://pmc.editing.wiki/doku.php?id=falcon4:file_formats:ct_file
 
align(1)
struct VuEntity {
align(1):
    ushort id;
    ushort collisionType;
    float collisionRadius;
    ubyte[8] classInfo;
    uint updateRate;
    uint updateTolerance;
    float fineUpdateRange;
    float fineUpdateForceRange;
    float fineUpdateMultiplier;
    uint damageSeed;
    int hitpoints;
    ushort majorRevisionNumber;
    ushort minorRevisionNumber;
    ushort createPriority;
    ubyte managementDomain;
    ubyte transferable;
    ubyte private_;
    ubyte tangible;
    ubyte collidable;
    ubyte global;
    ubyte persistent;
    ubyte[3] padding;
 
    void toString(void delegate(const(char)[]) sink) const {
        // Bu işlevin içeriği geliştirilebilir; kısa bırakıyorum
        formattedWrite(sink, "id             : %s\n", id);
        formattedWrite(sink, "[...]\n");
        formattedWrite(sink, "updateRate     : %s\n", updateRate);
        formattedWrite(sink, "updateTolerance: %s\n", updateTolerance);
        formattedWrite(sink, "[...]\n");
        formattedWrite(sink, "revision       : %s.%s\n", majorRevisionNumber, minorRevisionNumber);
        formattedWrite(sink, "transferable   : %s\n", transferable);
        formattedWrite(sink, "private        : %s\n", private_);
        formattedWrite(sink, "[...]\n");
    }
}
 
// Denetleyelim
static assert (VuEntity.sizeof == 60);
 
align(1)
struct Falcon4Entity {
align(1):
    VuEntity vuClassData;
    short[7] visType;
    short vehicleDataIndex;
    ubyte dataType;
    uint dataPtr;
 
    void toString(void delegate(const(char)[]) sink) const {
        formattedWrite(sink, "%s", vuClassData);
        formattedWrite(sink, "visType         : %s\n", visType);
        formattedWrite(sink, "vehicleDataIndex: %s\n", vehicleDataIndex);
        formattedWrite(sink, "dataType        : %s\n", dataType);
        // Dosyadan okunan dataPtr anlamsızmış; yazdırmıyoruz
    }
}
 
// Denetleyelim
static assert ((Falcon4Entity[2]).sizeof == 81 * 2);
 
Falcon4Entity[] oku(string dosyaİsmi) {
    auto dosya = File(dosyaİsmi, "rb");
 
    short numEntities;
    auto okunanAdet = dosya.rawRead((&numEntities)[0..1]);
    enforce(okunanAdet.length == 1, "HATA: Adet değerini okuyamadım");
 
    writefln("%s adet nesne okuyorum", numEntities);
 
    auto entities = new Falcon4Entity[](numEntities);
    entities = dosya.rawRead(entities);
    enforce(entities.length == numEntities,
            format("HATA: %s yerine yalnızca %s nesne okudum", numEntities, entities.length));
    return entities;
}
 
int main(string[] args) {
    if (args.length != 2) {
        stderr.writefln("Kullanım: %s <dosya ismi>", args[0]);
        return 1;
    }
 
    Falcon4Entity[] entities = oku(args[1]);
 
    writefln("Elimde %s adet nesne var: %s", entities.length, entities);
 
    foreach (entity; entities) {
        writefln("%s", entity);
    }
 
    return 0;
}
Ali
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  3  4  sonraki 
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:09:27 (UTC -08:00)