January 20, 2018

Bence böyle tek tek dizi kullanmak yerine yapı kullanmak daha mantıklı.

Ayrıca okumaya çalıştığın ct uzantılı dosyanın bir örneği, bunu kullanan bir program örneği var mı. Hatta bu sınıfın yapının özelliklerini gösteren bir belge vardı sanırım.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 20, 2018

Tek değişken okurken aşağıdaki koddaki gibi new kullanmaya gerek yok.

   numEntities = dosya.rawRead(new short[1])[0];

Yukarıdaki kod new ile gereksizce yer ayırıyor. (rawRead örneğinde öyle yaptıklarını biliyorum.) Onun yerine zaten var olan numEntities'i tek elemanlı dizi gibi kullanıp üzerine de okuyabilirsin ve dönüş değerini de tekrar atamana gerek yok:

   dosya.rawRead((&numEntities)[0..1]);

Evet onun yazımı da çok karışık. Bence tek nesne çok daha basit okunabilmeliydi.

Alıntı:

>

Dizilerde [] parantezleinin içine bir değişken i atamıyormuyduk

D'de dizi uzunluğu verildiğinde sabit uzunluklu dizi oluyor ve o uzunluk dizinin türünün bir parçası oluyor. O yüzden hayır, değişken kullanılamaz. (Derleme zamanında bilinmesi gerek.)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 21, 2018

Erdem hocam öncelikle mailini göremediğim için dosyayı wetransfere attım eğer özelden maili gönderirsen orayada yollayabilirim. link şu;
https://we.tl/v7QTzDgGcN

bunun açıklayaıcı bilgileride şurada;
https://pmc.editing.wiki/doku.php?id=falcon4:file_formats:ct_file

Bu arada her ikinizin söylediklerinin doğru olduğunu biliyorum. Ancak kendimce şöyle bir şey düşündüm.. Öncelikle bildiğim öğrendiklerim ve kapasitem ölçüsünde kötüde olsa bir kod yaz.. Sonra bu kodu iyileştir.. Daha sonra tüm söylenilenlerle beraber kodu iyice iyileştir ve gerekiyorsa o yöntemlere göre yenile... Sonra kodun iskeletini tamamla.. Sonrada Gtkd İle bütünleştir.

Genelde sorunlarıma gelen cevaplar daha ileri seviye kodları içerdiğinden ben böyle bir yol buldumki hem çok sıkılmadan hemde biraz gaza gelerek ilerleyeyim :-) (Aman yanlış anlaşılmasın hocalarım gelen cevaplar gerçekten tamda nokta atışı cevapları oluyor burda sorunun kaynağı siz değil benim D deki seviyem oluyor)
Bu hafta yoğundu çoluk çocuk vesaire artık haftaiçi kodu geliştireceğim :blush:
teşekkürler..

Edit: Verdiğim dosyanın açıklayıcı linkinde ordaki değişkenlerin sonuna 2 adet birer bytlık değişken daha eklenmelidir yoksa dosyadan okunan bilgiler yanlış okuncaktır.. Bunu şöyle düşünün bu dosya zaman içerisinde güncellenmiş ve 1 bytlık 2 tane ayrı değişken bu bahsedilen yapıya eklenmiştir ancak site eski olduğundan orda bu yeni değişkenler belirtelmemiştir !!

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 21, 2018

https://www.youtube.com/watch?v=IJtm7UX5yYQ&t=122s
burdaki videonun 8.18 ~ 8.23 bu aradaki 5 saniyede aslında benim yukarıda linkini verdiğim dosyayı okuyor ve videodaki düzende ekrana getiriyor ardından video başka konulara geçiyor ancak devamından bahsedersem işte bu akranda bastığım herhangi bir değeri değiştirdikten sonra save tuşuna basınca tüm bu dosyayı güncellemeli yapacağım program..
Not: Videoda gösterilen değerler aslında bizim dosyadaki değişkenler ancak videoda görülen program onları okunaklı hale getiriyor örneğin bizim programda dosyadan okunan değişken 'ushort id;' videoda No diye sutunlandırılmış v.s..

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 22, 2018

FALCON4.ct dosyasını herhangi bir yere üye olmak istemeyenler için GitHubada yükledim burdan indirilebilinir :-p
https://github.com/co00kun/Falcon4

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 24, 2018

Bu arada Bir sorum daha olacak çünkü ben bu dosyaları okurken çıkan sonuçlar tam örtüşmüyor.. o yüzden ben orjinalde dosyanın nasıl okunduğunu gösteren kodun kısmını C# ile aşağıdaki gibi veriyorum;

using (BinaryReader reader = new BinaryReader(File.Open(_filename, FileMode.Open))) {

    // Get the total number of entries
    int nEntries = reader.ReadInt16();

   // Set the start position
   reader.BaseStream.Position += nIndex* 81;

   // If we started at the beginning print the number of entries
   if (reader.BaseStream.Position == 2)  {
       Text1.AppendText("(0) Entry Count: " + nEntries + "\n");
   }

    // Process the entries
    // nEntries-nIndex = remaining before EOF
    for (int i = 0; i<Math.Min(nEntries - nIndex, nOutputEntries); i++) {
Text1.AppendText("    **** Entry " + (i + nIndex) + " ****\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") ID: " + reader.ReadUInt16().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Collision Type: " + reader.ReadUInt16().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Collision Radius" + reader.ReadSingle().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Class Info[0]: " + (uint) reader.ReadByte() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Class Info[1]: " + (uint) reader.ReadByte() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Class Info[2]: " + (uint) reader.ReadByte() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Class Info[3]: " + (uint) reader.ReadByte() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Class Info[4]: " + (uint) reader.ReadByte() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Class Info[5]: " + (uint) reader.ReadByte() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Class Info[6]: " + (uint) reader.ReadByte() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Class Info[7]: " + (uint) reader.ReadByte() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Update Rate: " + reader.ReadUInt32().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Update Tolerance: " + reader.ReadUInt32().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Fine Update (Bubble): " + reader.ReadSingle().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Fine Update Force: " + reader.ReadSingle().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Fine Update Multiplier: " + reader.ReadSingle().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Damage Seed: " + reader.ReadUInt32().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Hitpoints: " + reader.ReadInt32().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Major Revision: " + reader.ReadUInt16().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Minor Revision: " + reader.ReadUInt16().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Create Priority: " + reader.ReadUInt16().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Management Domain: " + reader.ReadByte().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Transferrable: " + reader.ReadByte().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Private: " + reader.ReadByte().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Tangible: " + reader.ReadByte().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Collidable: " + reader.ReadByte().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Global: " + reader.ReadByte().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Persistent: " + reader.ReadByte().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Unknown - Buffer 2 Bytes: " + reader.ReadUInt16().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Unknown - Buffer 1 Byte: " + reader.ReadByte().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") visType[0]: " + reader.ReadUInt16().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") visType[1]: " + reader.ReadUInt16().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") visType[2]: " + reader.ReadUInt16().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") visType[3]: " + reader.ReadUInt16().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") visType[4]: " + reader.ReadUInt16().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") visType[5]: " + reader.ReadUInt16().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") visType[6]: " + reader.ReadUInt16().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Vehicle Data Index: " + reader.ReadUInt16().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") DataType: " + reader.ReadByte().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") RecordID: " + reader.ReadUInt16().ToString() + "\n");
Text1.AppendText("(" + reader.BaseStream.Position + ") Unknown  - Buffer 2 Bytes: " + reader.ReadInt16().ToString() + "\n\n");
}

Şimdi benim tanımladığım struct yada değişkenlerin türleride şu şekilde;

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;
	byte[3] padding;
	short[7] visType;
	short vehicleDataIndex;
	byte dataType;
	uint dataPtr;
	byte unknow1;
	byte unknow2;
}

Değişken isimleri farklı olabilir ona takılmadan dosyadan her iki kodunda aynı miktarda verileri okuduğundan emin olabiliyormuyuz bu durumda ?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 24, 2018

Coşkun anladığım kadarıyla ilkönce kaç tane kayıt olduğunu okuyoruz.

   auto kütük = File("FALCON4.ct", "r");

   short numEntities;

   // numEntities = kütük.rawRead((&numEntities)[0..1]);

   /+
      Bu şekilde şu hatayı veriyor:

      Error: cannot implicitly convert expression `kütük.rawRead(&
      numEntities[0..1])` of type `short[]` to `short`
    +/


   numEntities = kütük.rawRead(new short[1])[0];
   writeln("Number of entities ", numEntities);
   Falcon4Entity[numEntities] entities;

Sonra Ali hoca'nın burada gösterdiği gibi iki tane yapı olması lazım.

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

Boşlukları tamamlarken buraya bakabilrsin.

https://dlang.org/spec/type.html

Sağlamasını da şu şekilde yapabiliriz. Bu programı çalıştırdığımda bu sayıyı 3956 olarak verdi.

https://pmc.editing.wiki/doku.php?id=falcon4:file_formats:ct_file

Bu belgede 'entities[]' dizisinin 81 * 3956 bayt olduğu belirtilmiş. Çarparsak 320436 bayt buluruz. Falcon4.ct dosyasının boyutuna baktığımda

Alıntı:

>

320,4 kB (320.438 bayt)

olduğunu gördüm. 'numEntitites' de 2 bayt tutuyordu. Toplamda 320438 bayt yapar.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 24, 2018

Erdem hocam teşekkürler.. söylediğin yoldan gideceğim ancak başka bir yapıya geçmeden şu şekilde şimdilik çalıştı .. ilerleyen bölümlerde iyileştirme yaparken o konuya tekrar döneceğim

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 padding1_2;
	byte padding3;
	short[7] visType;
	short vehicleDataIndex;
	byte dataType;
	ushort dataPtr;
	short unknow1;
	//byte unknow2;
}

void dosyadanOku() {
	FALCON4_ct falcon4_ct;
	File dosya = File ("FALCON4.ct", "rb" );

	dosya.rawRead((&falcon4_ct.numEntities)[0..1]);

	for(int i=0;i<3; i++)  {   // kaç tane kayıt varsa okadar dönecek şimdilik bu..... 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.padding1_2)[0..1]);
		dosya.rawRead((&falcon4_ct.padding3)[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]);
		//dosya.rawRead((&falcon4_ct.unknow2)[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 [1]= ",falcon4_ct.classInfo[0]);
		writeln("Class Info [2]= ",falcon4_ct.classInfo[1]);
		writeln("Class Info [3]= ",falcon4_ct.classInfo[2]);
		writeln("Class Info [4]= ",falcon4_ct.classInfo[3]);
		writeln("Class Info [5]= ",falcon4_ct.classInfo[4]);
		writeln("Class Info [6]= ",falcon4_ct.classInfo[5]);
		writeln("Class Info [7]= ",falcon4_ct.classInfo[6]);
		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("Padding1_2= ",falcon4_ct.padding1_2);
		writeln("Padding3= ",falcon4_ct.padding3);
		writeln("Vis Type[1]= ",falcon4_ct.visType[0]);
		writeln("Vis Type[2]= ",falcon4_ct.visType[1]);
		writeln("Vis Type[3]= ",falcon4_ct.visType[2]);
		writeln("Vis Type[4]= ",falcon4_ct.visType[3]);
		writeln("Vis Type[5]= ",falcon4_ct.visType[4]);
		writeln("Vis Type[6]= ",falcon4_ct.visType[5]);
		writeln("Vis Type[7]= ",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("Unknow 2= ",falcon4_ct.unknow2);
		writeln();
		writeln();
	}

	dosya.close();
}

şimdi bu şekilde yani program natamam şekilde bir yandanda GtkD ile uğraşmaya başladım şimdi oda şu şekilde.. ancak çıkışlarda string e dönüşümde sıkıntı yaşıyorum galiba :rolleyes:

import gtk.Main;
import gtk.MainWindow;
import gtk.ListStore;
import gtk.TreeView;
import gtk.TreeViewColumn;
import gtk.TreeIter;
import gtk.CellRendererText;
import gtk.Box;

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 padding1_2;
	byte padding3;
	short[7] visType;
	short vehicleDataIndex;
	byte dataType;
	ushort dataPtr;
	short unknow1;
	//byte unknow2;
}



class Pencere: MainWindow
{
   Box anaKutu;

   this()
   {
       super("Ağaç gösterimi örneği 1");
       setSizeRequest(250, 200);
       anaKutu = new Box(Orientation.VERTICAL,  0);

       auto model = new VeriModeli();

		//.............................

		FALCON4_ct falcon4_ct;
		File dosya = File ("FALCON4.ct", "rb" );
		dosya.rawRead((&falcon4_ct.numEntities)[0..1]);

		for(int i=0;i<1; i++)  {   // kaç tane kayıt varsa okadar dönecek şimdilik bu..... for(int i=0;i<falcon4_ct.numEntities; i++)

			model.ekle("Id= ",cast(string)dosya.rawRead((&falcon4_ct.id)[0..1]));
			model.ekle("Collision Type= ",cast(string)dosya.rawRead((&falcon4_ct.collisionType)[0..1]));
			model.ekle("collision Radius= ",cast(string)dosya.rawRead((&falcon4_ct.collisionRadius)[0..1]));
			model.ekle("Class Info [1]= ",cast(string)dosya.rawRead((&falcon4_ct.classInfo[0])[0..1]));
			model.ekle("Class Info [2]= ",cast(string)dosya.rawRead((&falcon4_ct.classInfo[1])[0..1]));
			model.ekle("Class Info [3]= ",cast(string)dosya.rawRead((&falcon4_ct.classInfo[2])[0..1]));
			model.ekle("Class Info [4]= ",cast(string)dosya.rawRead((&falcon4_ct.classInfo[3])[0..1]));
			model.ekle("Class Info [5]= ",cast(string)dosya.rawRead((&falcon4_ct.classInfo[4])[0..1]));
			model.ekle("Class Info [6]= ",cast(string)dosya.rawRead((&falcon4_ct.classInfo[5])[0..1]));
			model.ekle("Class Info [7]= ",cast(string)dosya.rawRead((&falcon4_ct.classInfo[6])[0..1]));
			model.ekle("Class Info [8]= ",cast(string)dosya.rawRead((&falcon4_ct.classInfo[7])[0..1]));
			model.ekle("Update Rate= ",cast(string)dosya.rawRead((&falcon4_ct.updateRate)[0..1]));
			model.ekle("Update Tolerance= ",cast(string)dosya.rawRead((&falcon4_ct.updateTolerance)[0..1]));
			model.ekle("Fine Update Range= ",cast(string)dosya.rawRead((&falcon4_ct.fineUpdateRange)[0..1]));
			model.ekle("FineUpdateForce Range= ",cast(string)dosya.rawRead((&falcon4_ct.fineUpdateForceRange)[0..1]));
			model.ekle("Fine Update Multiplier= ",cast(string)dosya.rawRead((&falcon4_ct.fineUpdateMultiplier)[0..1]));
			model.ekle("Damage Seed= ",cast(string)dosya.rawRead((&falcon4_ct.damageSeed)[0..1]));
			model.ekle("Hitpoints= ",cast(string)dosya.rawRead((&falcon4_ct.hitpoints)[0..1]));
			model.ekle("Major Revision Number= ",cast(string)dosya.rawRead((&falcon4_ct.majorRevisionNumber)[0..1]));
			model.ekle("Minor Revision Number= ",cast(string)dosya.rawRead((&falcon4_ct.minorRevisionNumber)[0..1]));
			model.ekle("Create Priority= ",cast(string)dosya.rawRead((&falcon4_ct.createPriority)[0..1]));
			model.ekle("Management Domain= ",cast(string)dosya.rawRead((&falcon4_ct.managementDomain)[0..1]));
			model.ekle("Transferable= ",cast(string)dosya.rawRead((&falcon4_ct.transferable)[0..1]));
			model.ekle("Private= ",cast(string)dosya.rawRead((&falcon4_ct.private_)[0..1]));
			model.ekle("Tangible= ",cast(string)dosya.rawRead((&falcon4_ct.tangible)[0..1]));
			model.ekle("Collidable= ",cast(string)dosya.rawRead((&falcon4_ct.collidable)[0..1]));
			model.ekle("Global= ",cast(string)dosya.rawRead((&falcon4_ct.global)[0..1]));
			model.ekle("Persistent= ",cast(string)dosya.rawRead((&falcon4_ct.persistent)[0..1]));
			model.ekle("Padding1_2= ",cast(string)dosya.rawRead((&falcon4_ct.padding1_2)[0..1]));
			model.ekle("Padding3= ",cast(string)dosya.rawRead((&falcon4_ct.padding3)[0..1]));
			model.ekle("Vis Type[1]= ",cast(string)dosya.rawRead((&falcon4_ct.visType[0])[0..1]));
			model.ekle("Vis Type[2]= ",cast(string)dosya.rawRead((&falcon4_ct.visType[1])[0..1]));
			model.ekle("Vis Type[3]= ",cast(string)dosya.rawRead((&falcon4_ct.visType[2])[0..1]));
			model.ekle("Vis Type[4]= ",cast(string)dosya.rawRead((&falcon4_ct.visType[3])[0..1]));
			model.ekle("Vis Type[5]= ",cast(string)dosya.rawRead((&falcon4_ct.visType[4])[0..1]));
			model.ekle("Vis Type[6]= ",cast(string)dosya.rawRead((&falcon4_ct.visType[5])[0..1]));
			model.ekle("Vis Type[7]= ",cast(string)dosya.rawRead((&falcon4_ct.visType[6])[0..1]));
			model.ekle("Vehicle Data Index= ",cast(string)dosya.rawRead((&falcon4_ct.vehicleDataIndex)[0..1]));
			model.ekle("Data Type= ",cast(string)dosya.rawRead((&falcon4_ct.dataType)[0..1]));
			model.ekle("Data Ptr _ RecordID= ",cast(string)dosya.rawRead((&falcon4_ct.dataPtr)[0..1]));
			model.ekle("Unknow 1= ",cast(string)dosya.rawRead((&falcon4_ct.unknow1)[0..1]));
		}

		dosya.close();

		//..............................

       auto görünüm = new GörünümModeli(model);
       anaKutu.packStart(görünüm, true, true, 0);

       add(anaKutu);
       showAll();
   }
}

class VeriModeli /* model */
{
   ListStore model;

   this()
   {
       model = new ListStore([GType.STRING, GType.STRING]);
   }

   void ekle(string isim, string başkent)
   {
       TreeIter erişici = model.createIter();
       model.setValue(erişici, 0, isim);
       model.setValue(erişici, 1, başkent);
   }
}

class GörünümModeli: TreeView /* görünüm */
{
   TreeViewColumn üyeSütunu;
   TreeViewColumn değerSütünu;

   this(VeriModeli veri)
   {
       üyeSütunu = new TreeViewColumn("Member", new CellRendererText(), "text", 0);
       appendColumn(üyeSütunu);
       değerSütünu = new TreeViewColumn("Value", new CellRendererText(), "text", 1);
       appendColumn(değerSütünu);
       setModel(veri.model);
   }
}

void main(string[] değişkenler)
{
   Main.init(değişkenler);
   auto pencere = new Pencere();
   Main.run();
}

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 24, 2018

Ben de şöyle bir şey yaptım. Ama dinamik dizi kullanınca bu yöntem çalışmıyor mu acaba.

import std.stdio;
import std.conv;
import std.bitmanip;

struct VuEntity
{
   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;
}

struct Falcon4Entity
{
   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[3956] entities;

   //entities.length = numEntities;

   kütük.rawRead((&entities)[0..1]);

   writeln("İlk eleman ", entities[0].vehicleDataİndex);
}

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 24, 2018

benim bildiğim dinamik dizide çalışmıyor.. ayrıca benim yapacağım programda kayıt ekleyip çıkartacağımız için entities her ekleme yada çıkarmada değişecektir.. hatta birçok şey...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]