Bu sayfadaki yazılar
Sayfanın metni
Sayfa 36
Open Out ve Append komutları herhangi bir dosyayı sadece yazma işlemi için açabilirler.
Yazma işlemi için açılmış bir dosyaya bilgi aktarmak için kullanılır. Örnek: Open Out 1, "fiyatlar" : Print #1, "fiyat-10000" : Print #1, "Kdv oranları :" : Close 1 data dosyasının içi : (1) Sandal (2) Fiyatlar (3) 10000 (4) Kdv Oranları : Not: Parantez içindeki sayılar kayıt nosunu gösterir. Gerçekte dosya içinde bu numaralar yoktur.
Open In DosyaNo,Dosyaİsmi$ Herhangi bir dosyayı, okuma işlemi yapmak için açar. Ortalıkta verdiğiniz isimde bir dosya yoksa, acımadan hata verir.
DosyaNo,Değişkenler ine değer çin kullanılır
Open In 1, "Work:Dosyalar/RahmiMerdiven.data" Close Dosya içi (1)'Orhan Sonuç (Ekranda görünen): Orhan Bahtiyar - Mavi Pasta
Line Input# Input komutundan farklı olan tek yanı, Input komutunun virgül işaretini ayraç olarak tanıması. Bu sayede aynı kayıt no içinden iki farklı değişkenler içinde okuyabilirsiniz. Line Input ise satır içinde herhangi bir ayıraç kullanmadan, o kayıt no içindeki tüm bilgiyi tek değişkenin içine okur. Yani bir önceki örnekte yerine Line Input# kullanırsanız. A$ içine "Orhan Bahtiyar, Mavi Pasta" değeri gelecektir.
Close DosyaNo ile açılan dosyayı kapatır. Eğer dosyaNo verilmez ise tüm dosyaları kapatır.
Amos dışında, Basic kullanmış ve dosyalama ile Basic ortamında uğraşmış olanlar için ufak bir uyarı yapmak istiyorum. Amos, inatla, şimdiye kadar standart olmuş her şeyle uyumsuz olmak için elinden geleni yapar bir dil. Dosyalama konusunda klasik Basic'le Amos en büyük uyumsuzluk, aşağıdaki programda karşımıza çıkıyor.
Open Out 1, "Work.Dosyalar/RahmiMerdiven.data" TM Close 1
1,"Wark:Dosyalar/RahmiMerdiven.dala" İnputeta$ Print a$ Close t
Standart Amos
A$ tt HH Gördüğünüz gibi Amos'ta aynı kayıt içine iki farklı değer atsanız da, okurken her ikisi de aynı değişkenin içinde gelmekte. Büyük saçmalık, Nedeni belirsiz. Sanırım, François Lionet Amos'u yazarken bir yerden sonra sıkılmış ve bazı şeyleri atlamış. Neyse şimdi sıra rastgele erişim dosyalarında. İşte komutları:
Open Random Random dosyaların sıralı dosyalardan farklı olan yönlerini biliyorsunuz. Random dosya açmak için tek komut var. Bu komut sıralı dosya açmanın hepsinin özelliklerini kapsamakta. Dosya ismi ile verilen dosya diskte mevcut değilse, verilen komut ile dosya yaratılır. Bu komut ile dosya hem yazma hem de okuma modunda açılmış olur. Parametreler ise önceki kullanımdan farklı bir kullanıma sahip değil.
Field As değişken$,uzunluk As değişken$,... Rastgele erişimli bir dosya açtığınızda, okuma ve yazma işleminde kullanacağınız değişkenleri de önceden belirlemek zorundasınız. Yani dosya içinden farklı yerlerde farklı değişkenlerin içine değer okuyamazsınız. Field komutu bu değişkenleri tanımlamanızı sağlayan komuttur. Açıklamak istiyorum. Örnek: Open Random 1, data" Field 1,30 As Lale$, 10 As Zambak$,15 As Klasor$
Dosya değişkenlerinin nasıl tanımlandığını sanırım anlatabildim. Örnekteki dosyanın her uzunluğu 55 byte olacaktır. Bunu, Field komutundaki değişken uzunluklarını toplayarak hesaplayabilirsiniz. Değişkenler Field içinde tanımlandıklarından daha uzun değerleri dosyaya yazamazlar. Yani 30 uzunluğundaki bir değişkene 60 uzunluğunda bir değer atarsanız, dosyaya bu değişkenin ilk 30 karakteri atılır. Değer atama işlemi normal değişkenlere değer atama işleminden farklı değil. Yani, Lale$="Ahmet Ciğer" tanımlaması geçerli kullanımdır.
Get Get komutu, sıralı dosyalardaki Input# komutuna karşılık gelir. Verilen KayıtNo'daki değerleri, Field ile belirtilen değişkenlerin içine okur. Eğer verilen kayıtno, dosya içindeki kayıt sayısından fazla ise değişkenlere boş değer (NULL) atılır.
Put DosyaNo KayıtNo Bu komut da dosyaya bilgi yazmak için kullanılır Biraz ömekli- yelim. Open Random 1, 'Work:Dosyalar/RahmiMerdiven data" Field 1,30 As Lale$, 0 As Zambak$,15 As Klasor$ Cis
İnput İnput “İkinci değer : ";Zambak$ “Ucuncu değer : ;Klasor$ Put 1,1 Print Lale$ Print Zambak$ Print Klasor$ Close 1
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 37
#Lof (DosyaNo) DosyaNo ile verilen dosyanın uzunluğunu verir. Bu uzunluk Byte cinsindendir. Bu komut sayesinde Random dosyanızda kaç kayıt bulunduğunu öğrenebilirsiniz. Örnek:
Opon Random 1,"Work:Dosyalar/RahmiMerdiven.data" Field 1,30 As Laie$, 10 As Zambak$, 15 As Klasor$ Print sayı, Close Evet ilk sorunu uzun uzun cevapladım. Sanırım pek çok okuyu- cumuz için faydalı olmuştur. Anlamadığınız bir yer varsa dergiye başvurabilirsiniz. Şimdi diğer sorular:
Eğer iyi bir program yaparsam Manyetik Paket'te yayınlanır mı? Yayınlanır. Gönderdiğim diske takvim programı yazar mısın? Hayır, Hiç vaktim yok. Neden dergide yayınladığın programları Fold etmiyorsun? Dergide yayınladığım Procedure'leri Fold edersem, okuyucular nasıl kendi bilgisayarlarında bu yazarlar? Herhalde dergi sayfası üzerine gelip F9'a basarlarsa UnFold olmaz. Sanırım Yani, bilmem ki... Bir denesek mi? Yok... Yok... Olmaz. Yaptığım menajerlik oyununda, oyuncular takım gücünü nasıl etkilerler? İyi etkilerler.
Object
hazırlayıp programlarımda nasıl Diğer bir mektup da Salih KATIRCI'dan. Object teriminden Bob ve Sprite'ları kastettiğini düşünerek sorunu cevaplıyorum. Çizdiğin objeleri SpriteX yardımıyla kesip diske kaydedersin. Kaydettiğin dosya bir Amos Bank'ıdır. Bu Bank'ı, 1 nolu banka Load komutuyla yükle (Load 1). Artık objelerini kullanabilirsin.
Mektup... Ha...Ha...Ha... Bir mektup daha. İmza Fatih ŞAHİN. Sevgili Fatih gönderdiğin programlar için teşekkürler. Okuyucu ilgisini, diğer programlarına göre daha çok çekeceğini düşündüğüm, DualPlayfield örneğini hatalarından arındırarak Manyetik Paket içinde yayınladım. Umarım Manyetik Paket alıyorsundur. Tanım üzerindeki değişiklikleri görmeni isterim. Fatih, mektubunda köşemle ilgili çeşitli eleştirilerde bulunmuş. Mektubun bu kısımlarını aynen yayınlıyorum. — ŞU ana kadar okuduğum dergilerden gördüğüm kadarıyla okuyucu, yazarınkinden daha çok kendinden de bir şeyler bulduğu yayınlara daha çok ilgi gösteriyor... Eğer okuyuculardan daha çok program gelirse Amos köşesini dergiden çıkarıp ofset baskı olarak dergide ayrı bir ek haline getirebiliriz. Derginin maliyeti artmış olacak ama diğerleri ne düşünür bilmiyorum, ben bu dergiye 30.000 lira vermek yerine sayfa sayısı ve farkı iki kat artmış bir dergi okumayı tercih ederim.” Okuyucu, yazar ilişkisi hakkındaki görüşlerine tamamen katılıyorum. Baştan beri yazılanları takip edenler bilirler her yazımda, bana mektup yollayın, programlar hakkında fikirlerinizi belirtin, haberleşelim yahu demişimdir. Ama okuyucular sağ olsunlar, pek mektup göndermediler. Belki de millet yazacak bir şey bulamıyordur diye düşündüm, büyük bir programa başlayayım dedim. Yine çok az mektup geldi. Mektup yazanların ve program gönderenlerin hakkını yememek lazım hepsine tekrar teşekkürler. Zaten gelen mektupların tamamını dergide yayınladım. EFEKT için rutin (sadece Uğur Yıldırım) programlarını rutinlerimin içine ekledim. Yani gelen hiçbir şey ziyan edilmedi. Ama ne yapayım kader. Teknik yazar olmak zor bir şey. Her zaman az mektup ve soru gelir. Yani isim vermek istemiyorum, milletin köşesine (Arka Kapı, Nasıl isimse bu. Bari Çatı Katı deseydik.) ansiklopedi çıkaracak kadar mektup gelir bana gelen mektuplarla Cin Ali hikayesi bile çıkarılamaz. Neyse, hiç kimsenin derdi yok herhalde. Köşeyi ayrı bir ek halinde çıkarma fikri güzel fakat mali sorumlu ne düşünür bilmiyorum. Ama daha çok mektup gelirse sayfa sayım artabilir. Artmasa da daha çok okuyucuya hitap eden bir köşe haline gelir. Bu tamamen okuyuculara kalmış. Mektup için ler. Yazışmak isteyenler için Fatih'in adresi ve telefonu. Fatih ŞAHİN T.C.D.D. Dispeçer Tesisleri Şefliği 44080 Malatya Tel: 0422322 44 Mektuplarını bekliyorum. Ve yine o. Belalı adam. Yüzyılın en fikir üreten adamı. Onu anlatmaya kelime bulamıyorum, bulmak Evet. MUDER, Muder'in mektubu gayet uzun. Bir sürü fikirden bahsetmiş. Hiç birine burada değinmeyeceğim, belki aranızda tanıyan vardır, adamı öldürmek falan ister, yani sebep Omayayırr. Neyse ilk Muder sorusu; geçen sayılardan birinde alınan bilmem ne reklamında Claudia Schiffer kullanılmış. Resmini nereden bulmuşuz. Muder, o fotoğrafı ben çektim. İkinci soru Rainbow ile ilgili. Ekranda Rainbow yaratmak şu komutlardan yararlanabilirsin. Set Rainbow no,renk,uzunluk No : Rainbow'una vereceğin no. En fazla 4 adet rainbow tanımlama imkanın var. Bu yüzden. No değeri 0 ile 3 arasında olabilir-
Renk : Rainbow'un hangi renk üzerinden görüneceği. Bu değerde 0 ile 15 arasında verilebilir. (Normal Amiga sistemi bu şekilde bir kısıtlama getirmez.) Örneğin 2 değerini verip, siyahtan maviye geçiş yapılırsa ekranda 2 nolu renkle boyanmış bölgeler Rainbow'dan Uzunluk : Rainbow işlemi için kaç renkte geçiş yapılacağı bu değer ile belirtilir. Örneğin siyahtan maviye 32 renkte geçiş yapmak istiyorsan bu değer 32 olmalı. Uzunluk için 16 ile 65500 arası değer verebilirsiniz. RS,G$,E$ : Bu stringler Rainbow paleti içinde geçişinin hangi formüle uygun olarak yapılacağını belirler. Kullanılışı '(SatırAdım, Sayaç)" şeklindedir. Satır, aynı rengin kaç satır devam edeceğini, Adım rengin her seferinde kaç artacağı, Sayaç ise arttırma işleminin kaç defa yapılacağını belirler. Örnek vermem gerekiyor. İşte örnek : Set Rainbow Bu komut sayesinde 0. renk üzerinden 32 uzunluğunda bir Rainbow belirlemiş olursunuz. Satır deyimini Scan line deyimi yerine kullanıyorum. Renk tonlaması halinde Mavi $000'dan başlayıp $004'ye kadar gidecektir. Şimdi bunu nasıl hesapladım. Aşağıdaki tablo sizi mutlu eder umarım. ScanLine — Renk Scanline Renk
2 3 4 $000 8 $004 Rainbow no, RenkNo, Y Uzunluk
Komut Set Rainbow ile tanımlanan Rainbow'un ekranda görünmesini sağlar. No : Set Rainbow ile tanımlanan Rainbow'un nosu. Renkno : İlk olarak kaçıncı rengin ekranda gösterileceği, Y: Rainbow'un başlayacağı ekran koordinatı. (Pixel cinsinden) Uzunluk : Kaç Scan Line boyunca rainbow'un basılacağı. Bu değer Set Rainbow ile verilen uzunluktan fazla ise Rainbow ilk değerlerden itibaren yeniden basılmaya başlar. Yine bitti, belki görüşürüz. Hoşça kalın, ya da kalmayın, beni ilgi- TOLGA KAHRAMAN