  Ŀ
  Ŀ
                                                                          
                           Text View                                      
                                                                          
  ٳ
                                                 Recep Tezkol               
  




 TextView fonksiyonu; view penceresinin boyutlarn, rengini ve incelenecek
  dosya ismini programcnn belirlemesine olanak tanyan text dosya
  gstericisidir. Bu tr fonksiyonlar Pascal komutlar ile yazmak mmkn ama
  Pascal'da Assembly ile yazlm bir fonksiyonu kullanmak bana daha cazip
  geldi. (Aslnda  byle bir program zaten Assembly'de yazmtm, imdi bu
  dururken kalkp ayn eyleri Pascal'da da tekrarlamak iime gelmedi, ama
  bunu sakn kimseye sylemeyin...)

 TextView alt programn programnza eklemek iin yaplacak ilk i, bu
  rutinin tipini, nasl kullanlacan bildirmek gerekir. Bunu programnzn
  bana aadaki satr yazarak yapabiliriz. Buradaki bildirinin
  dierlerinden fark en sona yazdmz EXTERNAL'dir. Bu onun bir harici
  rutin olduunu belirtir. Daha sonra bu rutini nereden ykleneceini
  {$L dosya.OBJ} ile bildiririz.


  
   Function TEXTVIEW (Y,X,YY,XX,ATTR:byte;DOSYA:string):boolean;external;
   {$L Tview.obj}
  
  
     Y     =   view penceresinin sol st satr  ( 0-24 )
     X     =   view penceresinin sol st sutunu  ( 0-79 )
     YY    =   view penceresinin sa alt satr  ( 0-24 )
     XX    =   view penceresinin sa alt sutunu  ( 0-79 )
     ATTR  =   view penceresinin rengi (nrenk+fonrenk*16)
     DOSYA =   view edilecek "dosya ismi.uzants"+chr$(0)
  



 Yukardaki aklamalardan da anlalaca zere view penceresini tanmlarken
  nce sol st ke, daha sonra sa alt kenin koordinatlar verilir. Bunun
  aksi yaplrsa ortaya istenilenden farkl bir pencere kacaktr. Burada
  dikkat edilmesi gereken bir dier konu, pencere boyutlar verilirken EKRANIN
  SOL ST KES 0,0  ve EKRANIN SA ALT KES 24,79 olarak kabul
  edilmelidir.
  Programa pencere koordinat olarak verilebilecek an az deerler aada da
  gsterildii gibi 3 stun geniliinde ve 3 satr boyunda olmaldr.

        minimum deerler:   y,xĿ
                               TE
                               V
                               y+3,x+3

        maximum deerler: 0,0,24,79


 TextView alt program kulland ekrana blgesinindeki grnty saklamaz ve
  kta kulland bu blgede view penceresi olduu gibi kalr.

  Ekranda meydana gelen bu deiiklikleri programc dzeltmek durumundadr.
  Eer o anda ekranda bulunan bilgiler nemli ise bu grnt saklanarak
  textview arlr, kta eski grnt tekrar yerine konulur.


 Programda text'in incelenmesi iin kullanlan tular;

    Yukar    cursor tuu pencerede bulunan text'i bir satr aa kaydrr.
    Aa     cursor tuu pencerede bulunan text'i bir satr yukar kaydrr.
    Sol       cursor tuu pencerede bulunan text'i 10 sutun sola kaydrr.
    Sa       cursor tuu pencerede bulunan text'i 10 sutun sola kaydrr.

    Page Up   tuu pencerede bulunan text'i bir sayfa aa kaydrr.
    Page Down tuu pencerede bulunan text'i bir sayfa yukar kaydrr.

    Home      tuu text'in ilk sayfasn gsterir.
    End       tuu text'in son sayfasn gsterir.

    ESC       textview'den k.



  Programn Assembly kaynak kodu verilmitir. Assembly bilenler bunun zerinde
  biraz alarak kendi istekleri dorultusunda deiiklikler yapabilirler.
  rnein programa bir FIND rutini eklenebilir. Programa yapmak istediiniz
  deiiklikler konusunda bir problemle karlarsanz bana yazabilirsiniz.

  Programn derlenmesi iin Borland Turbo Assembler gereklidir.

  Baka bir derleyici kullanmak iin bir ka kk dzeltme gerekecektir.
  Program derleme olana olmayanlar iin TVIEW.OBJ verilmitir.


  rnek Uygulama


  Aada fonksiyonun kullanmna ait bir rnek program verilmitir:


  Ŀ
   Program View;                                                            
   uses crt;                                                                
   var                                                                      
   dosya:string;                                                            
                                                                            
   Function textview(y,x,yy,xx,attr:byte;dosya:string):boolean;external;    
   {$l tview.obj}                                                           
                                                                            
   begin                                                                    
   dosya:='tview.asm'+chr(0);                                               
   if not textview(0,0,24,79,$17,dosya)  then                               
      begin                                                                 
         clrscr;                                                            
         gotoxy(1,21);write(dosya+' Alamad..');                          
      end                                                                   
     else clrscr;                                                           
   end.                                                                     
                                                                            
  


 Son olarak TEXTVIEW ile incelenebilecek text dosyann uzunluu iin snr
  32 bitlik bir saydr. Programn testlerinde 3 mega bayt'lk bir text dosya
  kullanlm ve hi bir problemle karlalmamtr.


                 inize yaramas dileiyle hoakaln...