Procedury pro práci se soubory

Otevírání souborů

;unit je císlo jedinecné mezi otevrenými soubory
;/GetLUN zajistí jeho nalezení (>100)
OpenR, 2, "soubor.dat"
OpenR, unit_variable, filename_string, /GetLUN   
;lze též použít proceduru GetLUN 
GetLUN,unit1 & OpenR, unit1, filename_string
;/Compress komprimuje soubor jako GZIP
OpenR, 2, "soubor.gz", /Compress
;/Append otevre soubor na konci
OpenW, 2, "novy_soubor.txt"
OpenW, 2, "stary_soubor.txt", /Append
OpenU, 2, "upravovany_soubor.txt"

Uzavření souborů

;lze uzavrít jeden i více souboru
;/All uzavre všechny

Close, 2
Close, unit2, unit3, unit4
Close, /All

;lze uzavrít jeden i více souboru
Free_LUN, unit1
Free_LUN, unit2, unit3, unit4

Čtení textových dat

;príklady
Read, 'Zadej delku:', delka
ReadF, unita, x,y,z
ReadS, mystring, data

;formátované ctení
a=Fltarr(10, /Nozero) & ReadF, 5, a, b, c, Format='(10F8.3, 2X, I4, 2X, G10.5)'

Zápis textových dat

;príklady
Print, 'Delka:', delka
PrintF, unitb, x, ' - ', y, z
a=String(vyska,' cm')
;formátovaný zápis
PrintF, 2, a, b, Format='("delka ",F8.3, "vyska ", F5.2)'

Čtení a zápis binárních dat

;príklady - pri ctení se cte tolik dat, kolik požaduje typ dane promenne 
x=0 & mm=Dblarr(10,5, /Nozero) & ReadU, 1, x,mm
WriteU, unit_out, data

Utility

Flush, unit3

;príklad
A = Fstat(1)
;napr. tisk jména, délky, aktuální pozice v souboru:
Print, 'File: ', A.NAME, ' Length: ', A.SIZE, ' Pos: ', A.CUR_PTR
On_IOerror, iochyba
PushD, 'C:\temp'
;nalezne jmena vsech souboru C:\temp\*.tmp
a=FindFile('*.tmp',count=ca)
PopD
...
iochyba:
;zde ošetrení chyb

Dialogy a makra

;príklad - otevreme soubor pro vstup dat 
fn = Dialog_Pickfile(file='nejcastejsi.dat', path='cesta k souborum', $
      /read, title='Vyber soubor pro cteni', filter='*.dat')
if fn ne '' then begin 
  OpenR, u, fn, /Get_LUN
....
;otevreme soubor pro tiskovy vystup
fn = Dialog_Pickfile(file='image.ps', path='C:\temp\', /write, $
      title='Zadej soubor pro vystup v PostScriptu', filter='*.ps')
Device, filename=fn & Set_plot, 'PS'

L.Přech, poslední úpravy 22.11.2000