Amiga Dünyası sayı 15, sayfa 20

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 20

DERLEYİCİLER

İlgili event trapping ON olduğunda ve dahili saatte verilen x saniye dolduğunda, belirtilen etikete dallanır. Bu yönerge, her x saniyede bir dallanmaya sebep olur. Etiket, bir etiket ya da satır numarası olabilir. n, 0'a eşit ve 86400'den (24 saat) büyük olamaz. GOSUB 0, TIMER event'ını keser.

OPEN KOMUTU: Kullanım Şekli: 1. Kullanım - OPEN mod,[#]dosya-no,dosya-adı[,uzunluk]

2. Kullanım - OPEN dosya-adı [FOR mod] AS [#]dosya-no [LEN=],uzunluk

OPEN komutu, bir dosya ya da bir cihaz açar. Her iki yazım şekli de aynı amaçla kullanılır.

Bir dosya, dosyaya veri girişi ya da veri okuma için açılır, mod kısmında, hangi amaçla açıldığı belirtilir.

dosya-no, tamsayı bir değerdir ve 1 ile 255 arasında bir sayı ile belirtilir. Dosya açıldığında bu numara dosya ile birleştirilir ve bu dosya ile yapılacak tüm işlemlerde kullanılır.

dosya-adı, dosyanın adını belirten bir karakter dizisidir; başında sürücü ya da disket adı verilebilir.

uzunluk, bir dosya kaydının kaplayacağı yer olarak düşünülmeli ve 32767 byte'ı aşmamalıdır. Bu parametre kullanılmazsa, sequential (sırasal) ya da random (rasgele) erişimli dosyaların her birinde tanımlı kayıt uzunluğu 128 byte olur. Random dosyalar için kayıt uzunluğu, bir kayıt içindeki karakter sayısı olarak hesaplanmalıdır. Sequential dosyalarda uzunluk parametresinin tek bir kaydın uzunluğunu göstermesine gerek yoktur; zira bu tür dosyalar, farklı uzunluklarda kayıtlar içerebilirler. Bu tür dosya kullanıldığında, uzunluk, diskete yazılmadan ya da disketten okunmadan önce buffer'a yüklenecek karakter sayısını belirtir.

1. Kullanım şeklinde, mod aşağıdakilerden biri olabilir:

0 Sequential çıkış modu 1 Sequential giriş modu R Random giriş/çıkış modu A Sequential ekleme modu 2. Kullanım şeklinde, mod aşağıdaki kelimelerle belirtilir: OUTPUT Sequential çıkış modu INPUT Sequential giriş modu APPEND Sequential çıkış modunu belirtir ve dosya işaretçisini dosya sonuna pozisyonlar. Bir PRINT# ya da WRITE# yönergesi ile eklenen yeni kayıt dosyanın sonuna eklenir.

Bu kullanımda mod yazılmazsa, random erişim modu olduğu kabul edilir.

Şu ana kadar Sequential ve Random diye bahsettiğimiz dosya türlerini bildiğinizi varsaydık. İsterseniz örneklerle komutumuzu tamamlamadan önce, bilmeyenler için bu dosyaları kısaca tanıtalım:

Sequential dosyalar, bilgileri sırayla arka arkaya saklayıp yine aynı sırayla okuyan dosyalardır. Yani her kayıt bir öncekinin arkasına eklenir. Bu tür dosyalar birçok programlama işlevini yerine getirebilir; ancak geniş uygulamalar için yeterli değildir. Düşünün, yüzlerce kayıt olan bir dosya oluşturdunuz. Yazarken pek bir sorun yok; ama bir kaydı ararken ilk kayıttan başlayarak tüm kayıtlar tek tek okunacaktır. Bu da oldukça sıkıcı ve zaman alıcı bir işlem.

Random dosyalar işte burada imdadınıza yetişiyor. Dosya kayıtlarına rasgele erişim sağladığı için, erişim hem çok kolay hem de süresi çok kısa. Bu dosyalar, her kayda bir numara verirler. Bu numara ile siz de okuma ya da yazma yapacağınız zaman kayıt numarasını kullanarak çabuk ve kolayca erişebilirsiniz. Kaydın nereye yerleştiği ve dosya uzunluğunun bu işlemde hiçbir önemi yoktur.

Şimdi önce bir sequential, sonra da random dosya örneği ile bu ayki tanıtımlarımızı tamamlayalım:

SEQUENTIAL DOSYAYA YAZMA OPEN "Adresler" FOR OUTPUT AS 1

Entry: PRINT INPUT "isim";Ad$ INPUT "adres";Adres$ INPUT "sehir";Sehir$ INPUT "telefon";Tel$ PRINT#l,Ad$ PRINT#l,Adres$ PRINT#l,Sehir$ PRINT#l,Tel$ x=x+l PRINT "KAYIT'x" ("Ad$") YAPILDI." PRINT "YENİ KAYIT YAPILACAK MI?" INPUT "Y/N:";Ans$ IF UCASE$(Ans$)="Y" THEN Entry

CLOSE PRINT "DOSYA KAPANDI. PROG- RAM SONU."

SEQUENTIAL DOSYADAN OKUMA

OPEN "Adresler" FOR INPUT AS 1

ReadData: INPUT#l,Ad$ INPUT#I,Adres$ INPUT#l,Sehir$ INPUT#l,Tel$ PRINT PRINT "isim: ";Ad$ PRINT "Adres: ";Adres$ PRINT "Sehir: ";Sehir$ PRINT "Telefon: ";Tel$

IF EOF( 1 )=0 THEN ReadData CLOSE 1

RANDOM DOSYAYA YAZMA OPEN "r",#l ,"AdresIer.rel",92 FIELD #1,30 AS Ad$,30 AS Adres$,20 ASSehir$,12ASTel$

Entry: PRINT INPUT "isim";AdEntry$ INPUT "Adres";AdresEntry$ INPUT "Sehir";SehirEntry$ INPUT "Tel ";Tel Entry $ LSET Ad$=AdEntry$ LSET Adres$=AdresEntry$ LSET Sehir$=SehirEntry$ LSETTel$=TelEntry$ x=x+l PUT#l,x PRINT "KAYIT "x" ("Ad$") YAPIL- DI."

PRINT "YENİ KAYIT YAPILACAK MI?"

INPUT "Y/N:";Ans$ IF UCASE$(Ans$)="Y" THEN Entry

CLOSE 1 PRINT "DOSYA KAPANDI. PROG- RAM SONU."

RANDOM DOSYADAN OKUMA OPEN V,#l,"Adresler.rer,92 FIELD #1,30 AS Ad$,30 AS Adres$,20 ASSehir$, 12ASTeI$

INPUT "ADRES NUMARASI";Nmbr GET#l,Nmbr IF EOF(l) THEN PRINT "KAYIDA ULAŞILAMIYOR." :GOTO ReadData

PRINT Ad$ PRINT Adres$ PRINT Sehir$ PRINT Tel$ INPUT "BAŞKA BIR KAYIDA BAK- MAK (Y/N)";ans$

IF UCASE$(ans$)o"N" THEN Read- Data

CLOSE 1 PRINT "DOSYA KAPANDI. PROG- RAM SONU."

Bu ayki Basic tanıtımını OBJECT komutlarına verdiğimiz örneklerle tamamladık. Gelecek ay bu köşede buluşmak dileğiyle, hoşçakalın...

Klavyeyle gezinmek için ← ve → tuşları.