Plik nagłówkowy funkcji do manipulacji ciągami znaków zawiera zbiór przydatnych funkcji, które łatwo dołączyć i użyć w skryptach NSIS.
Parametry mają następującą postać:
Wymagane (wymagane) (Opcja1 | Opcja2) [opcjonalne lub dodatkowe opcje] [Opcja1 | Opcja2]
Znaki gwiazdek, które znajdują się koło nazw poleceń (*****) są subiektywnym określeniem przydatności danej funkcji. Im więcej gwiazdek, tym bardziej funkcja jest przydatna. Najwyższą ocenę reprezentuje 5 gwiazdek (*****).
W każdym miejscu, gdy napisane jest "Wartość domyślna:", oznacza to, że możesz użyć wymienionej wartości lub pozostawić ją pustą - rezultat będzie taki sam.
Jeśli chcesz, aby określona wartość (np. tekst) była zależna od języka, użyj ciągu znaków języka (polecenie LangString) oraz zdefiniuj wartość $(STRINGNAME).
Jeśli chcesz do ciągu znaków dodać znak '`', powinieneś zawsze używać znaku modyfikacji '$\`', ponieważ funkcje makra pliku nagłówkowego używają znaku ` do rozdzielania parametrów.
!include "StrFunc.nsh"
Plik nagłówkowy StrFunc.nsh musi znajdować się w katalogu dołączanych plików, więc nie musisz określać ścieżki dostępu.
Polecenie to musisz umieścić przed każdym innym, które znajdziesz w tym pliku.
Plik nagłówkowy zawiera definicje, które automatyzują pewne czynności. Zanim ich użyjesz, przeczytaj poniższe:
Określa nazwy wszystkich funkcji dostępnych w pliku nagłówkowym StrFunc.
Określa nazwy wszystkich parametrów dostępnych dla funkcji "*". (* = nazwa funkcji, np: StrTok_List).
Określa typy wszystkich parametrów dla funkcji "*". (* = nazwa funkcji, np: StrTok_List). Możliwe typy dla każdego z parametrów to:
Niektóre polecenia wymagają specjalnych zabiegów, żeby działały. Sprawdź poniższą sekcję "3.3 Polecenia".
Każde polecenie używane w sekcjach i funkcjach instalacji muszą być wywołane wpierw poza obszarem sekcji bądź funkcji, bez podawania jakichkolwiek parametrów.
Przykład: ${StrStr}
Polecenia w sekcjach i funkcjach deinstalacji muszą mieć przedrostek "Un" przed słowem znajdującym się w nawiasie klamrowym "{}".
Przykład: ${UnStrStr}
Pełny przykład poleceń instalacji oraz deinstalacji:
!include "StrFunc.nsh"
${StrStr} # dla sekcji oraz funkcji instalacji
${UnStrStr} # dla sekcji oraz funkcji deinstalacji
Section
${StrStr} $0 "OK! Co teraz?" "wh"
SectionEnd
Section Uninstall
${UnStrStr} $0 "OK! Co teraz?" "wh"
SectionEnd
ResultVar String Type(|L|U|T|S|<>)
Konwertuje ciąg znaków "String" na ciąg "Type" z określoną wielkością znaków. Używa LogicLib.
ResultVar - Miejsce docelowe zwracanej wartości.
String - Ciąg znaków konwertowany na ciąg "Type", o określonej wielkości znaków.
Type - Typ wielkości liter:
Domyślną wartością jest "" (oryginalna wielkość liter).
Ciąg znaków "String" jako ciąg "Type" z określoną wielkością znaków.
Przykład:
${StrCase} $0 '"Vocę" to "TY" po polsku.' "U"
[_(_)_()__()__()_(___)_]
$0 = '"VOCĘ" TP "TY" PO POLSKU.'
ResultVar String Action(|>|<|<>) ResultVar String Type(|L|U|T|S|<>)
Wykonuje akcje na schowku, w zależności od wartości parametru "Action". Używa LogicLib.
String - Jeśli parametr "Action" = ">" lub "<>" - Ciąg znaków String umieszczony zostanie w schowku.
Action - Parametr ten może przyjmować następujące wartości:
Jeśli parametr "Action" = "<" lub "<>" - Ciąg znaków String został znaleziony w schowku.
ResultVar String
Konwertuje ciąg znaków "String" wtyczki Install Options, aby był obsługiwany przez NSIS. Konwertowane są znaki Escape, back-slash, carriage return, line feed oraz tab.
ResultVar - Miejsce docelowe zwracanej wartości.
String - Konwertowany ciąg znaków String.
Type - Typ znaku, w który zostanie skonwertowana wartość wejściowa:
Ciąg znaków "String" obsługiwany przez NSIS.
Przykład:
${StrIOToNSIS} $0 "\r\n\t\\To jest przykład\\"
[()()()()_____________()]
$0 = "$\r$\n$\t\To jest przykład\"
ResultVar String StrToSearchFor CounterDirection(>|<)
Wyszukuje ciągu znaków "StrToSearchFor" w ciągu znaków "String" i zwraca jego położenie, w zależności od kierunku przeszukiwania "CounterDirection".
ResultVar - Miejsce docelowe zwracanej wartości.
String - Ciąg znaków, w którym wyszukiwany jest ciąg znaków "StrToSearchFor".
StrToSearchFor - Ciąg znaków, który wyszukiwany jest w ciągu znaków "String".
CounterDirection(>|<) - Kierunek wyszukiwania. Domyślnie ma wartość ">". (> = z lewej do prawej, < = z prawej do lewej)
Wyszukuje lokalizację ciągu znaków "StrToSearchFor", w zależności od kierunku "OffsetDirection".
Przykład:
${StrLoc} $0 "To jest przykład" "jest" "<"
(__)<<<<<<<<<<<
$0 = "9"
ResultVar String
Konwertuje ciąg znaków "String" z formatu NSIS, aby był zgodny z wtyczką Install Options. Konwertowane są znaki: Escape, back-slash, carriage return, line feed oraz tab.
ResultVar - Miejsce docelowe zwracanej wartości.
String - Konwertowany ciąg znaków, aby był zgodny z wtyczką Install Options.
Ciąg znaków "String" zgodny z wtyczką Install Options.
Przykład:
${StrNSISToIO} $0 "$\r$\n$\t\To jest przykład\"
[(_)(_)(_)^____________^]
$0 = "\r\n\t\\To jest przykład\\"
ResultVar String StrToReplace ReplacementString
Wyszukuje wszystkie wystąpienia ciągu znaków "StrToReplace" w ciągu znaków "String", zastępując go ciągiem znaków "ReplacementString".
ResultVar - Miejsce docelowe zwracanej wartości.
String - Ciąg znaków, w którym wyszukiwany jest ciąg znaków "StrToReplace".
StrToReplaceFor - Wyszukiwany ciąg znaków w ciągu znaków "String".
StringToBeReplacedWith - Ciąg znaków, który zastępuje wyszukany ciąg znaków "StringToReplace" w ciągu znaków "String".
Ciąg znaków "String" z wszystkimi wystąpieniami ciągu znaków "StringToReplace", zamienianymi na ciąg znaków "ReplacementString".
Przykład:
${StrRep} $0 "To jest tylko przykład" "tylko" "pierwszy"
[______( )_______]
$0 = "To jest pierwszy przykład"
ResultVar String LeftStr CenterStr RightStr IncludeLeftStr(1|0)
IncludeCenterStr(1|0) IncludeRightStr(1|0)
Wyszukuje ciąg znaków "CenterStr" w ciągu znaków "String" zwracając tylko wartości znajdujące się pomiędzy ciągami znaków "LeftStr" oraz "RightStr", łącznie z ciągiem "CenterStr" (lub nie) używając "IncludeCenterStr" oraz/lub z ciągiem "LeftStr" używając "IncludeLeftStr" oraz "RightStr" używając "IncludeRightStr".
ResultVar - Miejsce docelowe zwracanej wartości.
String - Ciąg znaków, w którym wyszukiwany jest ciąg znaków "CenterStr".
LeftStr - Pierwsze wystąpienie ciągu znaków "LeftStr" na lewo od ciągu znaków "CenterStr". Jeśli jego wartość jest pusta lub nie został znaleziony, zwrócony zostanie ciąg znaków po lewej stronie ciągu znaków "CenterStr".
CenterStr - Ciąg znaków wyszukiwany w ciągu znaków "String".
RightStr - Pierwsze wystąpienie ciągu znaków "RightStr" na prawo od ciągu znaków "CenterStr". Jeśli jego wartość jest pusta lub nie został znaleziony, zwrócony zostanie ciąg znaków po prawej stronie ciągu znaków "CenterStr".
IncludeLeftStr(1|0) - Dołącz lub nie ciąg znaków "LeftStr" w zwracanym ciągu znaków. Domyślną wartością jest 1 (True). (1 = True, 0 = False)
IncludeCenterStr(1|0) - Dołącz lub nie ciąg znaków "CenterStr" w zwracanym ciągu znaków. Domyślną wartością jest 1 (True). (1 = True, 0 = False)
IncludeRightStr(1|0) - Dołącz lub nie ciąg znaków "RightStr" w zwracanym ciągu znaków. Domyślną wartością jest 1 (True). (1 = True, 0 = False)
Ciąg znaków znajdujący się pomiędzy ciągiem znaków "LeftStr" oraz "RightStr" wyszukanego ciągu "CenterStr", wraz z dołączonym (lub nie) ciągiem znaków "LeftStr" oraz "RightStr", jeśli wartość "IncludeLeftRightStr" równa jest 1 oraz/lub z ciągiem znaków "CenterStr", jeśli wartość "IncludeCenterStr" równa jest 1.
Przykład:
${StrSort} $0 "To jest fajny przykład" " jest" "" "ład" "0" "0" "0"
[__(__)_________]( )
C R
$0 = "To jest fajny przyk"
ResultVar String StrToSearchFor
Wyszukuje ciągu znaków "StrToSearchFor" w ciągu znaków "String".
ResultVar - Miejsce docelowe zwracanej wartości.
String - Ciąg znaków, w którym wyszukiwany jest ciąg znaków "StrToSearchFor".
StrToSearchFor - Wyszukiwany ciąg znaków w ciągu znaków "String".
Ciąg znaków "StrToSearchFor" plus ciąg znaków znajdujący się po ciągu znaków "StrToSearchFor" w ciągu znaków "String".
Przykład:
${StrStr} $0 "To jest tylko przykład" "tylko"
>>>>>>>>>{__)_______]
$0 = "tylko przykład"
ResultVar String StrToSearchFor SearchDirection(>|<)
ResultStrDirection(>|<) DisplayStrToSearch(1|0) Loops CaseSensitive(0|1)
Wyszukuje ciąg znaków "StrToSearchFor" w ciągu znaków "String" w kierunku określonym przez "SearchDirection" oraz liczbą powtórzeń "Loops".
ResultVar - Miejsce docelowe zwracanej wartości.
String - Ciąg znaków, w którym wyszukiwany jest ciąg znaków "StrToSearchFor".
StrToSearchFor - Wyszukiwany ciąg znaków w ciągu znaków "String".
SearchDirection (>|<) - Kierunek wyszukiwania. Domyślnie: ">" (w prawo). (< = w lewo, > = w prawo)
ResultStrDirection (>|<) - Miejsce wynikowego ciągu znaków w zależności od pozycji "StrToSearchFor". Domyślnie: ">" (w prawo). (< = w lewo, > = prawo)
DisplayStrToSearch (1|0) - Wyświetl ciąg znaków "StrToSearchFor" w wyniku. Domyślnie: "1" (True). (1 = True, 0 = False)
Loops - Liczba powtórzeń wyszukiwania ciągu znaków "StrToSearchFor" w ciągu znaków "String", bez oryginalnego wykonania. Domyślnie: "0" (1 powtórzenie).
CaseSensitive(0|1) - Jeśli wartość równa jest "1", w wyszukiwaniu brane pod uwagę będą wielkości liter (różnice). Jeśli wartość równa jest "0" wielkość liter nie ma znaczenia. Domyślnie: "0".
Ciąg znaków "StrToSearchFor", jeśli wartość "DisplayStrToSearch" równa jest 1, plus wynikowy ciąg znaków po lub przed ciągiem znaków "StrToSearchFor", w zależności od "ResultStrDirection".
Jeśli ciąg znaków "StrToSearchFor" nie został znaleziony, zwrócony zostanie pusty ciąg znaków.
Jeśli ciąg znaków "StrToSearchFor" jest pusty, zwrócony zostanie ciąg znaków "String" i ustawiona zostanie flaga błędu.
Jeśli ciąg znaków "String" jest pusty, zwrócony zostanie ciąg znaków i ustawiona zostanie flaga błędu.
Przykład:
${StrStrAdv} $0 "To JEST naprawdę tylko przykład" "JEST " ">" ">" "0" "0" "1"
>>>>>( )[___________________]
$0 = "naprawdę tylko przykład"
ResultVar String Separators ResultPart[L] SkipEmptyParts(1|0)
Zwraca część "ResultPart" znajdującą się pomiędzy dwoma separatorami "Separators" wewnątrz ciągu znaków "String".
ResultVar - Miejsce docelowe zwracanej wartości.
String - Ciąg znaków, w którym wyszukiwane są separatory "Separators".
Separators - Znaki wyszukiwane w ciągu znaków "String".
ResultPart[L] - Część, która ma być wyszukana "StrToTokenize", pomiędzy dwoma separatorami "Separators". Może być to dowolna liczba, poczynając od 0, oraz kończąc na "L". Domyślnie jest to L (ostatnia część).
SkipEmptyParts(1|0) - Pomija puste części ciągu znaków pomiędzy dwoma separatorami "Separators". Domyślnie ma wartość 1 (True). (1 = True, 0 = False)
Ciąg znaków "String" z liczbą "Part" pomiędzy separatorami "Separators".
Przykład:
1) ${StrTok} $0 "This is, or is not, just an example" " ," "4" "1"
( ) () () () [_] ( ) () ( )
0 1 2 3 4 5 6 7
$0 = "not"
2) ${StrTok} $0 "This is, or is not, just an example" " ," "4" "0"
( ) () ^() [] ( ) ^( ) () ( )
0 1 23 4 5 67 8 9
$0 = "is"
ResultVar String
Usuwa niepotrzebne nowe linie na końcu ciągu znaków "String".
ResultVar - Miejsce docelowe zwracanej wartości.
String - Ciąg znaków, w którym wyszukiwane są zbędne nowe linie na końcu "String".
Ciąg znaków "String" bez usuniętych nowych linii na końcu.
Przykład:
${StrTrimNewLines} $0 "$\r$\nTo jest przykład$\r$\n$\r$\n"
[__________________(_)(_)(_)(_)]
$0 = "$\r$\nTo jest przykład"
11 funkcji zostało dołączonych - Nie są dostępne w archiwum. Są w formacie LogicLib.
15 funkcji zostało pominiętych
6 z nich zostało pominiętych z uwagi na obecność polecenia AdvStrTok (tutaj nazywana: StrTok)
2 z nich zostało pominiętych z uwagi na obecność polecenia StrCase
2 z nich zostało pominiętych z uwagi na obecność polecenia StrClb
1 z nich została pominięta z uwagi na obecność poleceń NSISToIO oraz IOToNSIS
1 z nich została pominięta z uwagi na oryginalną implementację funkcji String Replace (tutaj nazywana: StrRep)
2 z nich zostało pominiętych z uwagi na ich nieprzydatność
1 z nich została pominięta z uwagi na błędy
Starsze wydaniaAutor: Diego Pedroso (aka deguix).
Wszystkie funkcje w formacie LogicLib: Diego Pedroso. Oparte są one na funkcjach napisanych przez: Amir Szekely, Dave Laundon, Hendri Adriaens, Nik Medved, Joost Verburg, Stuart Welch, Ximon Eighteen, "bigmac666" oraz "bluenet". Dołączone zostały funkcje w formacie LogicLib - StrIOToNSIS, StrNSISToIO autorstwa "bluenet".
This header file is provided 'as-is', without any express or implied warranty. In no event will the
author be held liable for any damages arising from the use of this header file.
Permission is granted to anyone to use this header file for any purpose, including commercial
applications, and to alter it and redistribute it freely, subject to the following restrictions:
1. The origin of this header file must not be misrepresented; you must not claim that you wrote
the original header file. If you use this header file in a product, an acknowledgment in the
product documentation would be appreciated but is not required.
2. Altered versions must be plainly marked as such, and must not be misrepresented as being the
original header file.
3. This notice may not be removed or altered from any distribution.