ªpWybieraki w AmigaDOSª0 Text ten moûe wydawaê sië doôê trudnym w odbiorze, gdyû wymaga ogólnej znajomoôci mechanizmów rzâdzâcych AmigaDOSem. Twórcy nowszych AmigaDOS zaopatrzyli nas, uûytkowników, w kilka nowych, poûytecznych rozkazów. Jednym z ciekawszych jest RequestChoice. Bardzo sympatyczne narzëdzie, przy którego pomocy moûna tworzyê wygodne ª1º0"wybieraczki odpowiedzi"ª0º0 (brakuje mi polskiego sîówka). A dziaîa tak: ª1º3RequestChoice TITLE "Tytuî" BODY "Text w oknie" GADGETS "a" "b" "fuck" ª0º0 º1TITLEº0 to oczywiôcie tytuî na górnej belce okna, º1BODYº0 to tekst w oknie, a º1GADGETSº0 to teksty na kolejnych gadûetach. *** Maîa dygresja: AmigaDOS posiada interesujâcâ moûliwoôê wpisywania kodów starujâcych wyôwietlaniem tekstów. Np. º1 *Nº0 powoduje przeniesienie tekstu do nastëpnej linijki: ª1º3 Echo "Pierwsza linia ª1º2*N ª1º3Druga linia"ª0º0 Tak wiëc aby wyôwietliê np. przy pomocy Echa gwiazdkë, trzeba zastosowaê takâ sztuczkë: ª1º3 Echo "Oto gwiazdka **"ª0º0 Co wyôwietli JEDNÂ gwiazdkë. W ten sposób moûna wyôwietlaê inne, zastrzeûone przez DOS znaki, jak np. cudzysîów: ª1º3 Echo "*"text w cudzysîowiu*"" ª0º0 Po co o tym mówië? Ano dla tego, ûe te efekty moûna zastosowaê m.in. w BODY RequestChoice. *** Po wykonaniu tego rozkazu, system zwróci cyfrë odpowiadajâcâ naciôniëtemu gadûetowi. Przy czym istnieje taka zaleûnoôê: 1 gadûet - cyfra 1, drugi gadûet - cyfra 2, trzeci gadûet - cyfra 3, itd, ale ostatni gadûet - cyfra 0. Moûna to obsîugiwaê w ten sposób: ª1º3RequestChoice >ENV:req "Tytuî" "wybieraj" "OK!" "Cancel" ª0º0 co spowoduje utworzenie w katalogu ENV zmiennej ôrodowiskowej (w tym wypadku: req), która przyjmie zwróconâ wartoôê; przy jej pomocy moûna tworzyê w "skrypcie" odpowiednie warunki. Jak widaê w powyûszym przykîadzie, moûna pominâê sîowa: TITLE, BODY i GADGETS. RequestChoice zadziaîa i bez nich. Iloôê gadûetów moûe byê dowolna, byle wszystkie sië zmieôciîy na ekranie. W przeciwnym razie czëôê z nich bëdzie po prostu nieosiâgalna wskaúnikiem myszy. No dobra, ale jak to wykorzystaê w praktyce? Proszë bardzo: ª1º3 ; Start C:RequestChoice >ENV:kill "Killer!" "Mam zaoraê dyskietkë?" "Yea!" "Nope!" If $kill EQ "1" ; gdy naciôniëto "Yea!"... C:Delete df0:#? ALL EndIF C:Delete ENV:kill ; kasowanie "ômieci" ; End ª0º0 Ten skrypt kasuje caîâ zawartoôê dyskietki po uprzednim potwierdzeniu tej operacji. Hmmm... caîâ dyskietkë... A jak skasowaê tylko wybrany plik? Ha! Do tego sîuûy º1RequestFileº0. ª1º3 ; Start RequestFile >ENV:req TITLE "Delete file(s)..." MULTISELECT NOICONS IF NOT WARN C:Delete $req Endif C:Delete ENV:req ;Endª0º0 RequestFile jako wynik operacji zwraca nazwë pliku wraz z caîâ ôcieûkâ dostëpu. Takâ informacjë moûna wykorzystaê np. przy kasowaniu. Gdy zostanie naciôniëty CANCEL (rezygnacja z wyboru), ustawiany jest sygnaî WARN. Opcja º1MULTISELECTº0 umoûliwia wybór wiëcej niû tylko jednego pliku. Zmienna przyjmuje wtedy wartoôê nazw kolejnych plików. Tak wiëc powyûszy skrypt uîatwia kasowanie caîej serii plików. º1NOICONSº0 blokuje wyôwietlanie plików #?.info. RequestFile moûe wskazywaê samâ ôcieûkë dostëpu, a nie konkretny plik. W tym przypadku requester umoûliwi wskazanie tylko katalogu: ª1º3 RequestFile >ENV:path TITLE "Path..." DRAWERSONLY ª0º0 Dopisanie opcji º1SAVEMODEº0 zmieni kolor podkîadu w requesterze, co moûe sygnalizowaê uûytkownikowi "niebezpiecznâ" operacjë. Przy uruchamianiu RequestFile moûna wskazaê "defaultowy" plik i katalog: ª1º3 RequestFile >ENV:kill TITLE "Delete..." FILE "Ced" DRAWER "Df0:" ª0º0 Moûna teû ustawiê dla wyôwietlanych plików "wzorzec", czyli pattern: ª1º3 RequestFile >ENV:kill TITLE "Delete..." PATTERN "#?.txt" ª0º0 Oczywiôcie, moûna uruchamiaê RequestFile z wieloma parametrami naraz. * * * * * Chciaîbym jeszcze dodaê kilka sîów o rozkazie º1Versionº0. Jak chyba kaûdy wie, podaje on wersjë Kickstartu i Workbencha. Moûna niâ teû sprawdzaê numery bibliotek, urzâdzeï, handlerów, skryptów, a nawet programów. Tak! Version reqtools.library FULL - wyôwietla u mnie coô takiego: ª1º3 reqtools.library 38.1095 (23-Sep-93).ª0º0 Rozkaz Version bez parametru FULL wyôwietla info tylko do napotkania nawiasu: "(" A "version CED full" daje w wyniku: ª1º3CygnusEd Professional 3.5 (07-Jun-93).ª0º0 Aby umoûliwiê testowanie numeru wersji pisanych przez nas skryptów (a takûe wszystkich innych plików ASCII jak texty, pliki AmigaGuide itd.), naleûy umieôciê w nich, najlepiej na poczâtku, takâ linië: ª1º3 ; $VER: super text! wersja 99.23412b (1.1.1995) by Dr.Jakiôtamª0º0 \______________ _____________/ \/ tyle wyôwietli Version "nazwa_pliku" \___________________________ ___________________________/ \/ tyle wyôwietli Version "nazwa_pliku" FULL Program, którego wersjë bëdzie sië daîo odczytaê rozkazem Version, naleûy "udoskonaliê" np. takâ linijkâ: ª1º3Version: dc.b '$VER: SystemFucker v.1.0 (26.09.94)',$aª0º0 * * * * * W katalogu S znajdziecie dwa skrypty, które stanowiâ podsumowanie tego artykuîu. Pierwszy z nich - º1ReqCopyº0 sîuûy do kopiowania plików, a º1LhaWINº0 obsîuguje archiwizer Lha. Polecam ulepszenie tych programów i poprawienia ich idiotoodpornoôci. Powodzenia! Larry Laffer 26 IX 1994 PS(tryk)! Today is my birthday! º3I'm nineteen!º0 :-( UWAGA: NIE MAM POJËCIA JAK TO WSZYSTKO, CO TU NAPISAÎEM, MA SIË DO KICKSTARTU 2.X. WSZYSTKO BYÎO TESTOWANE NA A1200 I - SZCZERZE MÓWIÂC - NIE MAM ZIELONEGO POJËCIA, CZY ª1º0RequestChoiceª0º0 Iª1º0 RequestFileª0º0 ISTNIEJÂ W NIÛSZYCH SYSTEMACH. DLATEGO TEÛ PROSZË O EWENTUALNE UWAGI I POPRAWKI. THANX, LARRY L.