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.