Jesteś tutaj
Nowa DLL'ka! Strings.dll
-------------------------- Strings.dll --------------------------
Biblioteka zajmuje sie obróbką stringów. Narazie zaimplementowana jest częściowa obsługa string list oraz jedna funkcja ogólna.
String listy są dobrze znane użytkowniką zMUDów. Są to zwykle lancuchy znakow, ktore logicznie monza podzielic na elementy, oddzielone od siebie znakiem "|":
a|b c|d|e
Powyższa lista zawiera 4 elementy. Drugim elementem jest "b c".
Strings.dll pozwala na obsluge takich list - narazie podstawową:
/calldll Strings AddItem {<zmienna listy>,<nowy element>}
Funkcja ta dodaje do listy nowy element. Jezeli lista jest pusta, zostanie ona zapelniona nowym elementem.
<zmienna listy> to Nazwa Zmienne, zawierajaca liste, ktora chcemy zmienic. Nie uzywamy tutaj znaku "$", lecz jedynie samej nazwy zmiennej.
Należy zwrócić uwagę na sposób podawania parametrów w tej, a także i każdej innej funkcji omawianej biblioteki.
Każdy parametr, dopóku jest jednym słowem (bez spacji) może być zapisany bez cudzysłowa, jednak jeśli chcemy podać zmienną, lub bardziej skomlikowany parametr, należy użyć cudzysłowa. To samo tyczy sie przekazywania przecinka, jako parametru.
Wywołanie procedury nie powinno zawierać żadnych zbędnych spacji, szczególnie pomiedzy parametrami a przecinkami. Oto przykład prawidłowego wywołania procedury:
[code]/calldll Strings AddItem {nowalista,"to jest dodawany element"}[/code]
Pozostałe procedury:
/calldll Strings DelItem {<zmienna listy>,<numer elementu>}
Usuwa z listy, przechowywanej w <zmienna listy> n-ty element. Elementy listy numerowane sa od 1 (tak jak, pierwszy element listy ma numer 1).
/calldll Strings Item {<zmienna wyniku>,<lista>,<numer elementu>}
Zapisuje w <zmienna wyniku> n-ty element listy, przechowywanej w <zmienna listy>. Elementy listy sa numerowane od 1. <zmienna wyniku> jest tylko nazwa zmiennej, natomiast <lista> nie jest zmienna! Jesli chcemy podac zmienna, uzyjemy $zmienna!
/calldll String IsMember {<zmienna wyniku>,<lista>,<tekst>}
Wyszukuje w dane liście <lista> (nie nazwa zmiennej! - należy je rozwijać znakiem "$") element <tekst> i zapisuje jego numer w <zmienna wyniku>. Jeśli <tekst> nie jest elementem listy, <zmienna wyniku> zawiera 0.
Istnieje jeszcze jedna, bardzo przydatna procedura:
/calldll Strings Replace {<zmienna wyniku>,<tekst źródlowy>,<wzorzec>,<nowy tekst>}
Zamienia każde wystąpienie <wzorca> w <tekscie żródlowym> na <nowy tekst>. Jeżeli <nowy tekst> jest stringiem pustym, każde wystąpienie <wzorca> zostanie usunięte.
Zastosowanie znalazło to już w q_druzyna.txt , a na pewno jest jeszcze wiele miejsc, ktore wykorzystają tą dll'ke.
PRZYKŁADOWE SKRYPTY BIBLITOEKI STRINGS.DLL
Narazie to tyle. Niebawem kolejne updaty!
Pozdrawiam.
Mandrek
- Odpowiedz
- 628 odsłon

Nowa DLL'ka! Strings.dll
Nowa procedura w Strings.dll!
Najnowsza wersja do ściągniecia w pierwszej notce, lub razem z Arkdiskiem.
/calldll Strings NumItems {<zmienna wynikowa>,<lista>}
Podlicza elementy w danej liście i zapisuje wynik do <zmienna wynikowa>.
Przyklad:
/var Lista {a|b|c d|e} /calldll Strings NumItems {ilosc,"$Lista"} /sh {Ilosc elementow: $ilosc} Mozna takze napisac: /calldll Strings NumItems {ilosc,"a|b|c d|e"} /sh {Ilosc elementow: $ilosc}Oby dwa przypadki spowodują zapisanie do "ilosc" liczby 4.
Nowa DLL'ka! Strings.dll
Nowa procedura w Strings.dll!
/callldll Strings Sort {<zmienna wynikowa>,
}
Sortuje daną liste i zapisuje ja w <zmienna wynikowa>. Sortwanie jest naprawde bardzo wydajne (QSort) wiec z powodzeniem mozna stosowac do wiekszych list.Jezeli chcemy posortowac liste z zmiennej i zapisac ja w tej samej zmiennej, mozemy pominać drugi parametr (<lista>). Wtedy wartosc zmiennej zostanie automatycznie rozwinieta, posortowana i spowrotem zapisana.
Przykład:
/var lista {c|z|b|a|e|r} /sh {Lista to: $lista} /calldll Strings Sort {lista,"$lista"} /sh {Posortowana lista: $lista} /calldll Strings Sort {lista,"$lista"} można zapisać jako /calldll Strings Sort {lista} - zapisy te sa równważne.Nowa DLL'ka! Strings.dll
Naprawde fajne.
Przydalyby sie tez funkcje do usuwania w listy duplikatow Uniqe.
Byc moze tez funkcja ktora dla listy {a|b|c|d} tworzy ciag zmiennych
/var Zmienna1 {a}
/var Zmienna2 {b}
/var Zmienna3 {c}
...
Nowa DLL'ka! Strings.dll
Nowe procedury w Strings.dll!
/calldll Strings Unique {<zmienna wynikowa>,<lista>}
Usuwa powtarzające się elementy z <listy>. Jeżeli <lista> zostanie pominięta, to jest ona czytana z <zmienna wynikowa>. Należy się upewnić że <zmienna wynikowa> nie jest pusta, jeżeli nie podajemy <lista>
/var lista {a|b|a|b|c|c|a} /calldll Strings Unique {lista} /sh {Lista zawiera: $lista}/calldll Strings Expand {<nazwa>,<lista>}
Zapisuje każdy element listy <lista> w oddzielnej zmiennej. Zmienne są nazywane: <nazwa>1, <nazwa>2, <nazwa>3.
/var lista {a b|c d|e f} /calldll Strings Expand {test,"$lista"} /sh {Zmienna 1: $test1} /sh {Zmienna 2: $test2} /sh {Zmienna 3: $test3}Oprócz tego poprawiony błąd w IsMember, który objawiał sie tym, że nie można było wyszukać ostatniogo elementu....
Pozdrawiam na wychodnym do Tych.
M.
Nowa DLL'ka! Strings.dll
Update strings.dll
Wszystkie informacje można znaleźć w /calldll Strings Help. Jako parametr można podać nazwe procedury, ktorej informacje chce sie wyswietlic.
--------------------------------------------------------------------------------
Insert {<zmienna>,[orginal],<pozycja>,<tekst>}
Wstawia <tekst> na danej <pozycji> w [orginale] oraz zapisuje uzyskany łańcuch do <zmiennej>
<pozycja> jest liczba wskazujacą po ktorej literce ma zostac wstawiony <tekst>
[orginal] jest parametrem opcjonlanym - jesli nie zostanie podany operacja zostanie dokonana na zawartości <zmiennej>
Przyklad:
/calldll Strings Insert {text,0."}
wstawia spacje na poczatku tekstu"
--------------------------------------------------------------------------------
Pop {<zmienna wynikowa>,<zmienna listy>,[a]}
Zapisuje pierwszy element <listy> w <zmiennej wynikowej> oraz usuwa ten element z <listy>.
Parametr [a] jest opcjonalany - jezeli zostanie pominiety, operacja wykonana zostaje na zawartosci <zmiennej listy>.
Przyklad:
/calldll Strings Pop {element,lista}
--------------------------------------------------------------------------------
Push {<zmienna listy>,[a],<nowy element>}
Wstawia <nowy element> na początek <listy>.
Parametr [a jest opcjonalny] - jezeli zostanie pominiety,operacje zostaje wykonana na zawartosci <zmiennej listy>.
Przyklad:
/calldll Strings Push {lista,"nowy element"}
--------------------------------------------------------------------------------
Proper {<zmienna>,[tekst]}
Formatuje tekst jako zdanie - pierwsza literka jest duza, pozostale sa male.
Parametr [tekst] jest opcjolnalny - jezeli zostanie pominiety, operacja zostanie wykonana na zawartosci <zmiennej>
Przyklad:
/calldll Strings Proper {tekst}
--------------------------------------------------------------------------------
Reverse {<zmienna>,[tekst]}
Zapisuje tekst od tylu, umieszczajac go w <zmiennej>.
Parametr [tekst] jest opcjonalny - jezeli zostanie pominiety, operacja bedzie wykonana na zawartosci <zmiennej>.
-------------------------------------------------------------------------------
Roll {<zmienna>,[tekst],[flaga]}
Przepisuje pierwsza literke <tekstu> na koniec. Jezeli jako ostatni argument, podano niezerową liczbe (opcjonalne) ostatnia literka zostanie umieszczona na początku.
[/][/][/][/]Parametr [tekst] jest opcjonalny - jezeli zostanie pominiety, operacja bedzie wykonana na zawartosci <zmiennej>.