
Well, zde je tedy ta první slibovaná. Jak jsem už naznačil, jedná se o rutinku, která otestuje, zda je daný soubor IFF 8SVX sampl. Vzniklo to proto, že Blitz při nahrávání samplů (příkaz LoadSound) vyžaduje právě iffový zvuky, ale vůbec si je neotestuje. Nahrajete-li LoadSoundem něco jinýho, než je IFF 8SVX sampl, dočkáte se tak akorát guráče! Zrovna tak dopadnete, pokusíte-li se nahrát IFF delší než 128KB.
Neručím za to, že to nejde udělat líp, ale funguje to. Funkce ChSample dostane jako vstup řetězec s cestou a názvem souboru a vyplivne, zda je to IFF sampl (0=ne, 1=ano).
Function.b ChSample{f.s} ;začátek funkce (f.s je řetězcovej parametr)
If ReadFile(1,f) ; pokus o otevření souboru ke čtení
FileInput 1 ; podaří-li se, tak na něj přesměrujeme vstupy
s.s=Edit$(16) ; načteme prvních 16 znaků
; a otestujeme, jsou-li první čtyři znaky FORM, znaky 9-15 8SVXVHDR a
; není-li délka souboru větší než 128000 bajtů.
If Mid$(s,0,4)="FORM" AND Mid$(s,9,15)="8SVXVHDR" AND Lof(1)<128000
WindowInput #w0 ; je-li vše v pořádku - vstupy přesm. do okna
CloseFile 1 ; zavřeme soubor pro čtení (viz ReadFile(1,f))
Function Return 1 ; funkce vrátí 1 = úspěch
Else ; něco špatně...
WindowInput #w0 ; vstupy přesměrovat do okna #w0 (to je kód okna)
CloseFile 1 ; zavřem soubor
Function Return 0 ; vrácená hodnota 0 = neúspěch
End If ; konec bloku If
End If ; další If skončil
WindowInput #w0 ; sichr - vstupy vrátit oknu
End Function ; konec funkce
Function.s PrintName{vstup.s} ; vstup=řetezec k prohledání (.s = budeme vracet
; řetězec)
le.l=Len(vstup) ; zjistíme délku řetězce
If le=0 ; je-li nulová
prt.s="NO SAMPLE LOADED" ; vrátíma hlášku "Nenahrán žádný soubor"
End If ; konec podmínky
le=le+1 ; index potřebný pro cyklus
x.l=1 ; aktuální pozice v řetězci
poz.l=-1 ; misto, kde bylo nalezeno "/", nebo ":"
While x<le ; dokud neni konec řetězce
If Mid$(vstup,x,1)="/" OR Mid$(vstup,x,1)=":" ; nalezeno ?
poz=x ; ulož pozici nalez. znaku
End If
x=x+1 ; posunem se na další znak
Wend
If poz=-1 ; nenalezeno !
prt.s=Mid$(vstup,1,23) ; vrať prvních 23 znaků ze vstup
; (23 se dá změnit a nic se nestane - tak jsem to
; potřeboval já)
Else ; jinak se vrátí konec řetězce vstup od poz+1
prt.s=Mid$(vstup,poz+1,23) ; jinak vrať jen název souboru
End If ; konec If
Function Return prt ; vrátíme řetězec prt
End Function ; konec funkce
Docela slušný hrátky s řetězcema, co? Myslim si, že snadno pochopíte jak to všechno Funguje. Je sobota 10:25 ráno a já končim dnešní seanci. Snad už příště dovalim něco, co se Vám bude hodit kapku víc... ;-).
E.N.I.F.
Zpátky do Obsahu