Bu sayfadaki yazılar
Sayfanın metni
Sayfa 24
enüslü v2.0
Evet, işte başka bir utility daha! Bu seferki utility'miz gayet kısa bir program. Yaptığı iş, birçoğumuzun elinde bulunan (belki de yüzleri aşan) disket arşivimizin düzenli bir listesini çıkarmak. Kullanım kolaylığı açısından da gelişmiş programları aratmayacak nitelikte diyebilirim. Bu programı en başta oyun ve program satan dükkanlara tavsiye ederim; zira çoğunun listesi düzensiz ve de eksik. Programın kapasitesi ne yazık ki sınırlı. En fazla 9999 disket kaydı alabilen bu program, eminim hepinizin isteklerine cevap verecektir. Şu an sanmam ki disket arşivi 5000-6000'i geçen birileri olsun. Benim arşivim bile 4500 diskette kaldı. Nedense piyasada da hiç yeni güzel program çıkmıyor. Eskiden (2-3 sene önce) ne güzeldi; her hafta oyun haricindeki programlar 30 disketi geçerdi de programları incelemem biraz vaktimi alırdı. Oysa şimdi... Ayda 2-3 utility disketi çıksa bayram ede-
<l1>) yapılmasını sağlayabiliriz, istersek de program tiplerine (Type) (<sağ Amiga>4<2>) göre. Tabii disket numaralarına göre de sıralama (Disk number) (<sağ Amiga>4<3>) yapmak mümkün. Listede belli bir girişi aramak için Find menüsündeki fonksiyonları kullanabiliriz. Burada Name (<sağ Amiga>4*<N>) fonksiyonunu çağırdığımızda, bizden aranmasını istediğimiz karakter dizisi girmemiz bulunduran tüm arşiv kayıtlar kliklenmiş konuma getirilecek ve negatif olarak gösterilecektir. Aynı şekilde Type (<sağ Amiga>4*<T>)-ile de belli bir tipte olan programları seçmek mümkün. Disk number yardımıyla da belli iki numara arasında kalan tüm disketlerin seçilmesini sağlamak elinizde. Delete menüsü, istediğimiz arşiv kayıtlarını silmemizi sağlamakta. Burada silmek istediğimiz arşiv kayıtını yine üç şekilde belirleyebiliriz: Name (<sağ Amiceğiz. ga>4<8>) yardımıyla silinmesini istediği- || Se tCPU Tool 13 ; ASCII Editor 13 BBSHandler BB$ Tool 13 NewLook 14 PClock 15 PCalender 16 PBar Name (max 38 ohars) is ParNet L m | 19 NoReag Progran Type (max 28 chars) 28 1 Disk Number (1 -— 9999) aki OK CANCEL riven taime- Her neyse, dilerseniz hemen programı- miz arşiv kayıtlarının isimlerinin başlanersi- — mızın açıklamasına geçelim; program ye- gicini girebiliriz. Type (<sağ akta. di ana menü ve bunların fonksiyonların- — <9>) ile belli bir gruba ait program kayıtisti. — dan oluşmakta. İlk menümüzün adı Pro- larını komple silebiliriz. Son şık olan siyo- — ject. Burada Open (<sağ Amiga>*<0>) Disk number (<sağ Amiga>-4*<0>) ise isyardımıyla daha önceden hazırlanmış bir tediğimiz disket numaralarını silmemizi ıksi- | katalog dosyasını yükleyebilir ya da Save — sağlar. | (<sağ Amiga>4<S>) yardımıyla hazırla- O an hafızada bulunan arşive kayıt eklendan | Miş olduğumuz bir katalog dosyasını dis- mek için Insert menüsünü kullanmamız içe- | kete kaydedebiliriz. Yükleme ve kaydet- — gerekmekte. Burada iki yöntemden birini | me işleminde prog tek d jı — kullanabiliriz: Birincisi her kaydı elle te- | gözüme çarpıyor; o da doğru düzgün bir teker yazmak. Bu yöntemi Record file-reguester'ın olmaması. Katalog dos- (<sağ Amiga>4*<R>) yardımıyla gerçekyasının ismini basit bir yazı reguester'i leştirebiliriz. Her bir arşiv kaydı için belli — girmemiz gerekmekte. New sayılarda karakterler kullanabiliriz. Bunlar yardımıyla hafızada işlenen katalog dos- — isim için 30, program tipi içinse 20 karak- * VITÜS Vasını silebiliriz. Ouit (<sağ Amiga>t terdir. Disket numarası, 1 ile 9999 arasın- Virüs. — <()>) ise, her zamanki gibi programdan da olabilir. İkinci yöntemse, istediğimiz ayda — çıkmamızı sağlamakta. disketteki file'ların hepsini birden otomaesini Sort menüsü yardımıyla, arşiv listemizi — tik olarak arşivler. Bizden sadece disket istediğimiz şekilde sıraya dizebiliriz. Burada sıralama işleminin ister program isimlerine göre (Name) (<sağ Amiga>-4 numarasını ve arşive eklenecek disketin hangi disket sürücüde bulunduğunu belirtmemiz kalıyor. Program o sürücüyü kont-
KISA UTILITY'ler HyperCat v1.12
Tanımı: Disketlerdeki program arşivinizi düzenli bir şekilde tutmanızı ve gerektiğinde yazıcıyla basmanızı sağlar.
Bulunduğu disketler : Savage Utilities 2.0 rol ederek diskette bulunan tüm file'ları teker teker arşive aynı disket numarasıyla ekler. Bu yöntemin tek dezavantajı, istemediğimiz dosyaları da (libs, s, devs gibi directory'lerde bulunan file'lar) otomatik olarak arşive eklenmesi. Fakat burada Delete menüsü yardımıza yetişiyor ve istenmeyen tüm file'ları silmemizi sağlıyor. Otomatik kayıt girme yönteminin ikinci dezavantajı ise bazen disketlerdeki file isimlerinin istemediğimiz şekilde olmasıdır. Bu, özellikle utility disketlerinde sorun olabilir; zira genelde bu disketleri hazırlayanlar file isimlerini ya sayılarla ya da saçma sapan harflerle değiştirmektedirler. Programımızın ne yazık ki bu yanlış isimleri düzeltecek fonksiyonu yok (nedense?!!!). Insert menüsündeki en son fonksiyon olan Exclude .info files (<sağ ise <*.info> dosyalarının arşiv listesine eklenmesini engellemekte. Bunlar bildiğimiz gibi file'lara ait ikon dosyaları. Display menüsü yardımıyla ekranda görülen arşiv listesini yukarı ya da aşağı kaydırabiliriz. Forward (<sağ Amiga>4 <F>) bir ekran ileriye doğru hareket sağlarken, Backward (<sağ bir ekran geriye doğru hareket etmemizi sağlar. Top (<sağ Amiga>-*<|>) liste başına, Bottom (<sağ Amiga>4<)|>) sonuna gitmek içindir. Programımızın son menüsü de arşiv listesini yazıcı yardımıyla kagıda basmamızı sağlamakta. Name (<sağ Amiga>4<->) sadece arşivdeki program isimlerini toplu bir şekilde basar. Name/Disk number (<sağ Amiga>*<->) ise iki kolon şeklinde tüm arşivde bulunan program isimlerini ve numaralarını basmamızı sağlar. Son fonksiyon olan Name/Type/Disk number (<sağ Amiga>t<>), arşivdeki tüm kayıtları üç kolon (isim, tip ve numara) halinde basar. Evet, bu kadar; hayli kısa, değil mi? Ama yaptığı iş bence gayet faydalı. Hadi hoşçakalın ...
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 25
Geçen ay meydana gelen yanlışlıktan dolayı yazımızı tekrar yayınlıyor ve özürlerimizi kabul etmenizi diliyoruz. “Tüm Pascal hayranları merhabalar. Söz verdiğimiz gibi bu aydan itibaren köşe haline gelerek her ay kısa örnek programlar yazacak ve bunların çalışmasını öğrenirken Amiga sistemi ile ilgili birkaç yararlı bilgi edineceğiz. Basic köşesinde olduğu gibi, bu örnek programları mümkün olduğu kadar kısa tutmaya çalışacağım. Böylece hatalar en aza indirgenmiş olacak ve siz de programları sıkılmadan yazabileceksiniz. Burada anlatılanlar sadece Pascal için geçerli konular değil. Programları istediğiniz dilde yazabilirsiniz, ama bu köşe dahilinde tüm program örnekleri Pascal dilinde olacak. Belki onuncu defadır tekrarlıyorum, merak ettiğiniz sorunları bana yazabilirsiniz (Cevap bile veriyorum!!), ancak konu seçimini bana bıraktığınız sürece ben belirli bir sıra izlemeden, fazla derin olmayan konulara atlayacağım. Mümkün olduğunca konuları tek yazıda bitirmeye özen göstereceğim. Programlarda sık sık Amiga'nın Library'lerine ve bu Library'lere ait fonksiyonlara rastlayacağız. Bu fonksiyonları yazıda basitçe tanıtacağım ama, kendi programlarını geliştirmek isteyenler mutlaka Addison Wesley'in Amiga ROM Kernal Manual - Includes and Autodocs kitabını edinmeliler. Ben koşullarımı sıraladım, dıysak hemen başlayalım. Amiga kullanıcısı ile iletişime geçmek için GUI adı verilen (Graphical User Interface) ve ekranlar, pencereler, tanımlı tuşlar ve menülerden oluşan bir sistem kullanır. Amiga kullanırken sık sık bu sistemin öğeleri ile karşılaşırız. Biraz örnek vererek açıklamaya gayret edelim. İlk etapta ekranlar vardır. Ekranların belirli bir çözünürlüğü ve renk sayısı bulunur. Aynı anda farklı özelliklere sahip ekranlar olabilir. Ekran tek başına çalışma için yetmez, o ekran içinde, içinde bulunduğu ekranın özelliklerini taşıyan pencereler bulunur. Bu pencereler sayesinde çeşitli programlar kullanıcı ile iletişime geçebilirler. (Biliyorum, biliyorum masal kısmı gerçekten sıkıcı). Bu pencereler üzerinde bazı anlamlı düğmeler vardır. Bu düğmeler kullanılarak pencerelerin boyutları değiştirilebilir, ekrandan kaldırılabilir veya içerikleri kaydırılabilir. Amiga sisteminin bir bölümü bu işlerle ilgilenir. Bu kısım Intuition Library'sinden başkası değil. Intuition Library'sini kullanarak ekranlar, pencereler ve bunlara bağlı elemanlar üzerinde tam hakimiyet kurabilirsiniz. Bu ayki amacımız bu olaya biraz açıklık getirmek.
Yukarıda kabaca belirttiğim gibi, ekranlar ve pencereler sistemin temel parçaları. Ekranlar, görüntü özelliklerini tanımlarlar. Bu ekranların içinde bu özellikte iletişim elemanları, pencereler açılır (Bir program çalışmak istiyorsa ve çıkış verecekse, mutlaka bir pencere açmalıdır.). Bir pencere, içinde bulunduğu ekranın malıdır. Başka bir ekrana geçemez. Ekrana bağlı olarak hareket eder. Bu en temel kavramların ardından ekran ve pencerelerin hafızada nasıl tanımlandığını bilmemiz gerekli. Gerek ekranlar ve gerek pencereler, hafızada özelliklerini anlatan değerlerin arka arkaya yazıldığı bir listeden ibarettir. Bu listelerin yapısı standarttır. Programlarken, bu tür listelere ulaşmak için Include dosyalarındaki tanımlardan faydalanırız. Hemen örnek veriyorum. Diyelim ki, hafızada herhangi bir ekranın listesinin başlangıç adresini bulduk (Her ne yoldan bulmuşsak, elimizde bir p_screen tipi değişken var.). Autodocs kitabından arayarak bu listedeki 16. byte'ından itibaren ilk iki byte'ın (İlk word'ün) Mouse'un x koordinatını verdiğini bulabiliriz. Ne var ki, bu bilgiyi bu şekilde kullanmayız. Bunun yerine son derece şık bir çözüm olarak Include dosyalarında yapılan tanımlardan yararlanırız.
Listenin bu elemanın adı MouseX olarak tanımlanmış. scr değişkeni p_screen tipi bir değişken olmak üzere (p_screen tipi değişken, Include dosyalarında tanımlanıyor). Mouse'un X koordinatını bulmak için: mx := scr^.MouseX; demek yeterli oluyor. Dikkat ederseniz, p_screen bir record pointer'ı olarak tanımlanmış. Gerçekten include dosyalarını karıştırarak bu tanımı bulabilirsiniz. Peki, tanım isimlerini nasıl mı bulacaksınız? Tanımlanan isimler standarttır. Autodocs kitabındaki tanımları kullanabilir veya zahmete girerek include dosyalarını karıştırabilirsiniz. Bu uygulamanın sayısız yararı var. Bir kere program anlaşılır bir hale geliyor. Ayrıca sabit değerlere bağlı değil. En önemlisi yeni Kickstart versiyonlarına kolayca uydurulabiliyor. Bakalım ekranda neler tanımlı: (Autodocs H-56) NextScreen FirstWindow LeftEdge TopEdge Width Height Mouse Flags Title Default Title BarHeight BarVborder BarHborder MenuVborder MenuHborder WBorTop WBorLeft WBorRight WBorBottom Font ViewPort RastPort BitMap LayerInfo FirstGadget DetailPen BlockPen SaveColor0 Barlayer ExtData UserData
İşte bu bilgiler sürüsü, ekranın tüm özel-
Pascal
F.Kağan Gürkaynak liklerini belirliyor. Bakın, ilginç birkaç nokta göstermek istiyorum. Tüm yapılarda ortak olan bir özellik bu: Aynı özellikte başka yapılar varsa, bunların adresi belirtiliyor. Eğer belirtilen adres NIL ise, o zaman tüm yapıları kontrol etmiş oluyorsunuz. Mesela bir ekrana ait tüm pencereleri bulmak istiyorsunuz. Dikkat edin, sadece ilk pencerenin yapısının adresi var. Ama pencere yapısında bir NextWindow bölümü var. Bu şekilde tüm yapıları taramak Buraya kadar şu sorunları hallettik: Eğer bir ekranın başlangıç adresini bulabilirsek, bu ekranın tüm özelliklerini bulmamız mümkün. Hatta bu ekrana bağlı olan tüm diğer elemanlara da buradan geçebiliriz. İsterseniz yukarıdaki bazı yapıların manaları üzerinde de bir iki kelime edelim (İsimler aslında işlevleri son derece iyi açıklıyor). Next Screen, bir sonraki ekranı işaret edecektir. First window ile, ekranın ilk window'una ulaşılabilir (Buradan da tüm window'lara). Left Edge, ekranın sol taraftan ne kadar kaydığını belirtir. Hooop hooop stop, durun bir dakika (Bunu siz söylemelisiniz). "Kağan ağır ol.", "Neden?", "Screenler istediğin yükseklikten başlayabilir, ama normal olarak soldan kayamazlar da ondan!". Bu konuda haklısınız. Ancak bu kısım ileride kullanılmak için tasarlanmış, bugünlerde (en azından 1.3'te) kullanımı yok. Listelerde bu şekilde ilerisi için ayrılmış birçok özellik bulunur. Top edge ise, ekranın üst kenardan ne kadar uzak olduğunu belirtir. Width ve Height, ekranın enini ve boyunu belirtecektir. Title, ekranın ismine bir pointer'dır. Gerisinin önemi yok diye kestirip atmayacağım, ama hepsini de konuyu dağıtmamak için açıklayamayacağım. BlockPen ve DetailPen ise ekranın arka plan rengi ve yazı rengini belirtecektir (Paletin hangi elemanı olduğu şeklinde). RastPort ve ViewPort ise, kendileri birer liste olan elemanlardır (Bunların da elemanları vardır). Sanırım yeteri kadar kafanızı ağrıttım. Gelelim program konumuza: Birden çok ekranla çalıştığınızı düşünün. İleri geri gidip gelirken bazen bir karmaşa içine düşüveriyorsunuz. Öyle bir program yazalım ki, tüm ekranları Workbench en arkada olacak şekilde dizelim. Dizerken tüm ekranların tepelerinin gözükmesini sağlayalım. Nasıl mı?, ilk olarak program: Program ScreenShuffler;
(Erhan OZTOP&FKagan GURKAY-NAK|
uses intuition; const