String Funkcje które mają wersję ze znakiem
Transkrypt
String Funkcje które mają wersję ze znakiem
% & ! # @ $ - Integer Long Single Double Currency String Funkcje które mają wersję ze znakiem "$" na końcu: • ChrW$ • Command$ • Dir$ • Environ$ • Error$ • Format$ • FormatCurrency$ • FormatDateTime$ • FormatNumber$ • FormatPercent$ • GetSetting$ • Hex$ • Oct$ • Join$ • TypeName$ • MonthName$ Print #1, x; řrednik na końcu zapisu powoduje zapis bez nowej linii na końcu ostatniego wiersza Abs podaje wartořć bezwzględną liczby (wartořć liczby bez uwzględnienia znaku). Np.obie funkcje ABS(-1) i ABS(1) zwracają 1. Asc wyznacza kod znaku odpowiadającego pierwszej literze ciągu x = Asc("!txt")'32 wykrzyknik CDate zob. DateValue() x = CDate("29-08-99") x = CDate("99-08-09") + 5 '99-08-14 ChDir instrukcja zmienia domyřlny katalog dysku "D:". ChDir "D:\WINDOWS\SYSTEM" Dysk "C:" pozostaje dyskiem domyřlnym ChDrive W tym przykładzie wykorzystano instrukcję ChDrive do zmiany domyřlnej stacji dysków. ChDrive "D" ' Ustaw dysk "D" jako domyřlny. Chr$ x = Chr$(34) 'zwraca znak ", Chr(13) & Chr(10 vbNewLine, vbCrLf, Chr(9)= vbTab 'spacja 3 znaki Cint konwert na Integer, zaokrągla w górę argument z częřcią ułamkową do liczby całkowitej Cint(12,7) = 13 CSng konwert na Single CStr konwert na String CurDir: porównaj: App.Path Katalog = CurDir (pokazuje gdzie znajduje się katalog, z którego wywołujemy jakiř plik.exe przy pomocy innej aplikacji czy pliku bat za wyjątkiem lnk). Katalog = App.Path (pokazuje katalog, w którym znajduje się plik.exe) CVar konwert na Variant Dir$ sprawdza obecnořć pliku lub folderu a = Dir("C:\autoexec.bat", vbHidden) b = Dir("C:\*.bat") c = Dir("x:\Temp\Bonus.SSR10", vbDirectory) DoEvents ' wstawiać przed loop Tę komendę wykorzystuje się głównie w pętlach. Załóżmy, że mamy taką pętlę: For i = 0 to 1000 [tutaj rób cokolwiek] next i I ta pętla przez cały czas swojego trwania "blokuje" nam aplikację. Tzn. nie można wywołać żadnego zdarzenia, dopóki pętla nie zostanie zakończona. Na szczęřcie komenda DoEvents pozwala nam zmienić ten stan rzeczy. Przykładowo: For i = 0 to 1000 [tutaj rób cokolwiek] DoEvents next i Teraz podczas trwania pętli będzie można wykonywać dowolne zdarzenia, np. kliknąć przycisk. FileCopy, CopyFile i CopyFolder FileCopy "C:\autoexec.bat", "X:\autoexec.bat" Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName _ As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long CopyFile "x:\test.dll", "c:\WINDOWS\system32\test.dll", False Kopiowanie folderów: -------------------W References dodaj: Microsoft Scripting Runtime Dim dostęp As New Scripting.FileSystemObject dostęp.CopyFolder "c:\docs", "c:\backup\docs", True FileDateTime sprawdza datę utworzenia lub ostatniej modyfikacji pliku x = FileDateTime("c:\autoexec.bat") 31-08-09 21:41:30 ________________________________________________________ Dim dostęp As New Scripting.FileSystemObject sprawdza datę utworzenia lub ostatniej modyfikacji pliku: Set dostęp = CreateObject("Scripting.FileSystemObject") plik = "q:\katalog.md5" Set skrót = dostęp.GetFile(plik) Data1 = skrót.DateLastModified Data2 = skrót.DateLastAccessed Data3 = skrót.DateCreated ------------------------------------------------------------sprawdza datę utworzenia lub ostatniej modyfikacji katalogu: Set dostęp = CreateObject("Scripting.FileSystemObject") katalog = "x:\RamDisk\Imagenomic\" Set skrót = dostęp.GetFolder(katalog) Data1 = skrót.DateLastModified Data2 = skrót.DateLastAccessed Data3 = skrót.DateCreated FileLen sprawdzanie wielkořci nieaktywnego pliku, dla aktywnego zobacz LOF x = FileLen("d:\Nowe Gadu-Gadu\4416367\Archive.db") '16561152 B Fix Obcina częřć ułamkową. GetAttr sprawdzanie Atrybutów x = GetAttr("d:\Nowe Gadu-Gadu\4416367\Archive.db") '32 - Archive, idx = GetAttr("d:\Nowe Gadu-Gadu\4416367") If Len(idx) > 2 Then idx = idx - 8192 folder = idx > 15 And idx < 24 Or idx > 47 And idx < 56 IIf Dim Zmienna As Variant, Czy_większa As Variant Zmienna = "50" Czy_większa = IIf(Zmienna > 100, "Większa", "Mniejsza") 'Mniejsza Zmienna = "150" Czy_większa = IIf(Zmienna > 100, "Większa", "Mniejsza") 'Większa TotalCMD = IIf(FileLen("d:\WinCMD\TotalCMD.exe") = "3734952", True, False) W7 = IIf(Dir("c:\Users\", vbDirectory) <> Empty, True, False) 'W7: True If W7 Then ilořć = "46" Else ilořć = "35": 'Me.Caption = Space(ilořć) & Me.Caption ilořć = IIf(Dir("C:\Users\", vbDirectory) <> "", "46", "35") ' ' Me.Caption = Space(ilořć) & Me.Caption Me.Caption = Space(IIf(Dir("C:\Users\", 16) <> "", "46", "35")) & Me.Caption plik = IIf(Dir("x:\Temp\FILMY-sort.txt", 7) <> Empty, True, False) plik = IIf(Dir("x:\Temp\FILMY-sort.txt", 7) <> Empty, "jest", "nie ma") If IIf(Dir("c:\Users", vbDirectory) <> Empty, True, False) then 'W7: True katalog = "d:\_Konfiguracja\W7\" Else katalog = "d:\_Konfiguracja\XP\" End If WinWord = IIf(Dir("C:\Users", vbDirectory) = "", _ "D:\Microsoft Office 2010\Office14\WinWORD.exe", _ "D:\Microsoft Office 2003\OFFICE11\WinWORD.exe") InputBox$ x = InputBox$("Wprowadź liczbe", "Okno wprowadzania", "1", 5000, 5000) Instr okreřla pozycję pierwszego wystąpienia jednego ciągu w drugim SearchString ="XXpXXpXXPXXP" SearchChar = "P" ' Ciąg przeszukiwany. ' Poszukiwany znak "P". Porównywanie tekstowe począwszy od pozycji 4. x = Instr(4, SearchString, SearchChar, 1) 'Zwracana jest pozycja 6. Porównywanie binarne począwszy od pozycji 1. x = Instr(1, SearchString, SearchChar, 0) 'Zwracana jest pozycja 9. Domyřlne porównywanie binarne (brak ostatniego argumentu). x = Instr(SearchString, SearchChar) ' Zwracana jest pozycja 9. x = Instr(1, SearchString, "W") ' Zwracane jest 0 InStrRev x = InStrRev("demarkacyjna", "a",, 1) x = InStrRev("demarkacyjna", "a", 9, 1) x jest to pozycja poszukiwanego ostatniego znaku "a" 1 to text compare 9 podaje ile będzie czytanych znaków od lewej, Int Zaokrągla w dół argument z częřcią ułamkową do liczby całkowitej x = Int(-99,8) x = Int(-99.2) x = Int(99.8) ' Wynik: -100. ' Wynik: -100. ' Wynik: 99. KIll Kill "C:\autoexec.bat" kasowanie (delete) pliku Shell "D:\Console\console.exe del /Q x:\Temp2\dupa\*" kasowanie plików Shell "cmd.exe /c del x:\Temp2\dupa.ini" RmDir kasowanie katalogu RmDir "e:\ Moje filmy\m\" lub: Deltree /Y "h:\.Download\NVidia" albo: Dim dostęp As New FileSystemObject dostęp.DeleteFolder "q:\.Adobe Photoshop CS5", True ' uwaga Deltree.exe musi się znajdować w system32 katalog = "c:\Main Menu" jest = IIf(Dir(katalog, vbDirectory) <> Empty, True, False) If jest Then SetAttr katalog, 0 Shell """c:\Program Files\Unlocker\Unlocker.exe"" """ & katalog & """ /S" Shell "Deltree /y """ & katalog & """" 'kasuje atrybuty S i H oprócz R End If LCase$: x = LCase$(WinCMD) ' -> wincmd Tylko duże litery są zamieniane na małe Left$: x = Left(zdanie, 6) 'zwraca liczbę znaków od lewej strony danego ciągu Len: x = Len("Zdanie") -> 6 'zwraca ilořć znaków Like Operator ten służy do porównywania ciągów x = zdanie Like wzór x x x x x x x = = = = = = = "aBBBa" Like "a*a" ' Wynik: True. "F" Like "[A-Z]" ' Wynik: True. "F" Like "[!A-Z]" ' Wynik: False. "a2a" Like "a#a" ' Wynik: True. "aM5b" Like "a[L-P]#[!c-e]" ' Wynik: True. "BAT123khg" Like "B?T*" ' Wynik: True. "CAT123khg" Like "B?T*" ' Wynik: False. Jeřli string pasuje do pattern, result ma wartořć True; jeřli nie, result ma wartořć False. Sposób działania operatora Like zależy od instrukcji Option Compare. Domyřlną metodą porównywania ciągów dla każdego modułu jest metoda Option Compare Binary. Wykrzyknik (!) na początku wzorca oznacza, że do wzorca pasuje każdy znak znaleziony w ciągu, za wyjątkiem znaków znajdujących się na tej liřcie. Poza nawiasem kwadratowym wykrzyknik oznacza sam siebie. W wyniku działania instrukcji Option Compare Binary porównania ciągów odbywają się w oparciu o porządek sortowania, wynikający z wewnętrznej binarnej reprezentacji znaków. W řrodowisku Microsoft Windows o porządku sortowania decyduje strona kodowa. W poniższym przykładzie pokazano typowy binarny porządek sortowania: A < B < E < Z < a < b < e < z < Ŕ < Ę < Ŗ < ŕ < ę < ŗ W wyniku działania instrukcji Option Compare Text porównania ciągów odbywają się w oparciu o nie uwzględniający wielkořci liter, tekstowy porządek sortowania, okreřlany przez ustawienia regionalne systemu. Sortując te same znaki przy użyciu instrukcji Option Compare Text, otrzymuje się następujący porządek: (A=a) < (Ŕ=ŕ) < (B=b) < (E=e) < (Ę=ę) < (Z=z) < (Ŗ=ŗ) Wbudowany mechanizm dopasowywania według wzorca stanowi wszechstronne narzędzie do porównywania ciągów. Możliwořci tego mechanizmu pozwalają na stosowanie dowolnych kombinacji symboli wieloznacznych, list znaków i zakresów znaków. W poniższej tabeli zamieszczono znaki, których stosowanie dopuszcza się we wzorcu, wskazując jednoczeřnie, do jakich znaków są one dopasowywane: Znaki argumentu pattern Pasujące znaki string ? Dowolny pojedynczy znak. * Dowolna liczba znaków lub brak znaku. # Dowolna pojedyncza cyfra (0–9). [lista_znaków] Dowolny pojedynczy znak należący do listy_znaków. [!lista_znaków] Dowolny pojedynczy znak nie należący do listy_znaków. Grupa zawierająca jeden lub więcej znaków (lista_znaków) ujętych w nawiasy kwadratowe ([ ]) może zostać użyta w celu dopasowania do wzorca dowolnego pojedynczego znaku ciągu i może zawierać niemal każdy kod znaku, łącznie z cyframi. Uwaga W celu dopasowania do wzorca znaków specjalnych, takich jak lewy nawias kwadratowy ([), znak zapytania (?), oznaczenie liczby (#) czy gwiazdka (*), znaki te należy umieszczać w nawiasach. Gdy prawy nawias kwadratowy (]) występuje wewnątrz grupy, nie można go użyć w celu dopasowania do samego siebie, można wykorzystać go poza grupą jako pojedynczy znak. Można sprawić, by lista_znaków okreřlała zakres znaków, posługując się łącznikiem (–) w celu oddzielenia górnej i dolnej granicy zakresu. Na przykład, [A-Z] daje włařciwe dopasowanie, gdy odpowiednia pozycja ciągu zawiera dowolną wielką literę z zakresu od A do Z. Większą liczbę zakresów umieszcza się w nawiasach bez stosowania znaków rozdzielających. Znaczenie podanego zakresu zależy od sposobu porządkowania znaków obowiązującego w czasie wykonywania (o sposobie tym decyduje instrukcja Option Compare i ustawienia regionalne systemu, na którym wykonywany jest kod programu). W zamieszczonym powyżej przykładzie dla instrukcji Option Compare Binary do zakresu [A–E] zostaną dopasowane znaki A, B i E. W przypadku instrukcji Option Compare Text, do zakresu [A–E] zostaną dopasowane znaki A, a, Ŕ, ŕ, B, b, E, e. Do podanego zakresu nie zostaną dopasowane znaki Ę ani ę, ponieważ w porządku sortowania znaki tego typu występują po wszystkich znakach podstawowych. Oto inne ważne reguły dotyczące dopasowywania według wzorca: Wykrzyknik (!) umieszczony na początku listy_znaków oznacza, że dopasowanie nastąpi wtedy, gdy w ciągu znajdzie się dowolny znak, który nie znajduje się na liřcie_znaków. Poza nawiasem kwadratowym wykrzyknik oznacza sam siebie. Jeżeli łącznik (–) ma oznaczać sam siebie, to musi on występować na początku listy_znaków (po wykrzykniku, jeżeli użyto wykrzyknika) lub na jej końcu. W każdyminnym miejscu łącznik jest stosowany do oznaczenia zakresu znaków. Znaki użyte do zdefiniowania zakresu muszą występować zgodnie z rosnącym porządkiem sortowania (od najmniejszego do największego). [A-Z] jest wzorcem prawidłowym, nie jest nim natomiast [Z-A]. Sekwencja znaków [] jest traktowana jako ciąg o długořci zerowej (""). LOF Pokazuje długořć otwartego pliku, zobacz FileLen Open "d:\.PROGRAMY\Tabletki\godzina" For Input As #1 FileLength = LOF(1) ' Pobierz długořć pliku. Close #1 Mid$ Zwraca ciąg typu Variant (String) zawierający okreřloną liczbę znaków z innego ciągu. pierwszy_wyraz = Mid("Mid Function Demo", 1, 3) 'trzy znaki od pierwszego, "Mid". x = Mid("Mid Function Demo", 5) 'Zwracany jest ciąg od 5 znaku "Function Demo". x = "tutaj trzy wyrazy" Mid(x, 7, 4) = "są 4" Mid(x, 3) = " jest aż 5 słów" ' "tutaj trzy wyrazy" ' "tutaj są 4 wyrazy" ' "tu jest aż 5 słów" MkDir MkDir "D:\nowy folder" 'zakładanie nowego folderu MsgBox MsgBox "informacja", 64 MsgBox Space(0) & "informacja" & Space(0), 16, Space(0) & "belka" Name tym można przenieřć plik z jednego folderu do innego, ale nie można przenieřć folderu Name "C:\autoexec.bat" As "X:\Temp1\start.bat" ' move lub zmienić nazwę katalogu lub pliku: Name "D:\Internet Download Manager" As "D:\Internet Download Manager.bk" Name "D:\Internet Download Manager\IDMan.exe " As D:\Internet Download Manager\IDMan.exe.bk" Operatory arytmetyczne IsNumeric txt = "1969,10" Czy_liczba = IsNumeric(txt) ' True txt = "1969.10" Czy_liczba = IsNumeric(txt) ' False * Mnożenie przy większych liczbach może wystąpić overflow należy używać te znaki a = 1024# * 1024# a = "34" + 6 ' Wynik: 40 a = "34" + "6" ' Wynik: 346 ^ potęgowanie a = 3 ^ 3 a = 3 ^ 3 ^ 3 ' Wynik: 27 ' Wynik: 19683 Sqr pierwiastek a = Sqr(4) \ Wykonuje dzielenie dwóch liczb i zwraca wynik w postaci liczby całkowitej. a = 11 \ 4 ' Wynik: 2 a = 9 \ 3 ' Wynik: 3 a = 100 \ 3 ' Wynik: 33 mod a a a a = = = = 10 Mod 5 10 Mod 3 12 Mod 4.3 12.6 Mod 5 ' ' ' ' Wynik: Wynik: Wynik: Wynik: 0 1 0 3 Round Liczba = 1.5667 wynik = Round(Liczba, 2) 'wynik 1.57 2 -> Liczba miejsc po przecinku FormatNumber Liczba = 1.5667 wynik = FormatNumber(Liczba, 2) 'wynik 1.57 2 -> Liczba miejsc po przecinku Option Base 1 bez "Option Base 1", Tablica(0) = "", DolnyZakres = 0 z "Option Base 1", brak Tablica(0), DolnyZakres = 1 elementy tablicy numerowane są np. od 1 a nie od 0 "Option Base 1" nie dotyczy Split, ale . . . zobacz Split Option Compare Jeżeli instrukcja Option Compare zostanie użyta, to musi być umieszczone w module przed wszystkimi procedurami Option compare Binary 'To znaczy, że "AAA" jest mniejsze niż "aaa" Option compare Text 'To znaczy, że "AAA" jest równe "aaa". Option Explicit Aby uniknąć pomyłek w nazwach zmiennych można nakazać, aby system zawsze ostrzegał, gdy napotka nazwę, która nie została zadeklarowana jako zmienna ________________________________________________________________ Replace x = Replace(String1, "a", "u", 1, -1) zastąpienie a przez u pierwsza cyfra okreřla, od którego znaku zostanie odczytane druga cyfra okreřla ile znaków ma być zamienione (-1 zamienia wszystkie) RND Randomize Timer x = Int((6 * Rnd) + 1) 'Wygeneruj liczbę losową od 1 do 6. Right$ x = Right(zdanie, 6) 'zwraca liczbę znaków od prawej strony ciągu RSet instrukcja RSet jest wykorzystywana do przesunięcia do prawej strony ciągu wewnątrz zmiennej typu ciąg. MyString = "0123456789" RSet MyString = "Right->" ' teraz MyString wygląda -> " Right->". MyString = "0000" s = "22" RSet MyString = s ' MyString = "0022" Set Set obrazek(1) = FILM.Image1 Set Linia(1) = Me.Controls("Line" & 1) SetAttr ustawianie atrybutów SetAttr "d:\Nowe Gadu-Gadu\4416367\Archive.db", vbHidden Sgn pokazuje czy liczba jest większa, mniejsza lub równa 0 liczba większa od zera -> 1 Liczba równa zeru -> 0 Liczba mniejsza od zera -> -1 x = Sgn(99.8) ‘ 1 Shell Wywołanie funkcji Shell z drugim parametrem o wartořci 1 powoduje uruchomienie aplikacji w oknie o standardowym rozmiarze i przeniesienie fokusu do tego okna. x = Shell("C:\WINDOWS\CALC.exe", 1) Shell GetTempDir & "\plik.bat" Shell "d:\WinCMD\TotalCMD.exe", 0 Shell "d:\_PROGRAMY\lavalicense.dll.bat", vbHide 'Dos jest zamknięty vbHide lub 0 - Okno jest ukrywane, fokus jest przekazywany do tego ukrytego okna. vbNormalFocus lub 1 - Okno otrzymuje fokus, a rozmiar i położenie okna są przywracane do stanu początkowego. vbMinimizedFocus lub 2 - Okno jest wy¶wietlane jako ikona z fokusem. vbMaximizedFocus lub 3 - Okno jest maksymalizowane i ma fokus. vbNormalNoFocus lub 4 - Odtwarzany jest ostatni rozmiar i położenie okna. Aktualnie aktywne okno pozostaje aktywne. vbMinimizedNoFocus6 - Okno jest wy¶wietlane jako ikona. Aktualnie aktywne okno pozostaje aktywne. Shell "Rundll32 krnl386,ExitKernel" błyskawicznie zamyka system Shell "cmd.exe /c del x:\Temp2\dupa.ini" Shell "D:\Console\console.exe del /Q x:\Temp2\dupa\*" kasowanie plików _________________________________________________________________________________ Shell "D:\WinCMD\TotalCMD.exe /O /L=c:\Intel /R=q:\Temp", 1 Shell "D:\WinCMD\TotalCMD.exe /O /L=""c:\Program Files"" /R=""q:Temporary Internet Files""", 1 WCMD = "TotalCMD.exe" Shell "D:\WinCMD\" & WCMD & " /O /L=d:\jpg1 /R=g:\temp", 1 Shell "D:\WinCMD\" & WCMD & " /O /L=""D:\_PROGRAMY\WinCMDini"" /R=""X:\ Programy\WinCMDini""", 1 ------------------------------------------------------------------------------------------------a = "g:\Filmy" a = "g:\.Moje filmy" ------------------------------------------------------------------------------------------------Shell "D:\WinCMD\TotalCMD.exe /O /L=""" & a, 1 -----------------------------------------------a = "x:\Temp2" b = "x:\Temp3" a = "g:\.Moje filmy" b = "x:\image uszkodzone Erotik" Shell "D:\WinCMD\TotalCMD.exe /O /T /L=""" & a & """ /R=""" & b, 1 -------------------------------------------------------------Shell "d:\WinCMD\SendTCCommand.exe cm_CompareDirsWithSubdirs", vbHide Shell "d:\WinCMD\SendTCCommand.exe cm_ShowOnlySelected", vbHide Space$ wyraz1 = "Dzień": wyraz2 = "dobry" Między dwa ciągi wstawiona jest 1 spacja. zdanie = wyraz1 & Space$(1) & wyraz2 Spc Funkcję Spc można używać w połączeniu z instrukcją Print: Open "d:\.PROGRAMY\Tabletki\godzina" For Output As #1 Print #1, "początek"; Spc(10); "koniec" '10 spacji w řrodku Close #1 Static zapamiętuje dane na cały czas trwania procesu Tu wykorzystano instrukcję Static do zachowywania wartořci zmiennej tak długo, jak działa program danego modułu. ' Definicja funkcji. Function ZachowajSumę(Liczba) ' Tylko zmienna Suma zachowuje swoją wartořć między wywołaniami. Static Suma Suma = Suma + Liczba ZachowajSumę = Suma End Function ' Definicja funkcji Static. Static Function MojaFunkcja (Arg1, Arg2, Arg3) ' Wszystkie zmienne lokalne zachowują swoje wartořci między wywołaniami funkcji. Suma = Arg1 + Arg2 + Arg3 Połowa = Suma / 2 MojaFunkcja = Połowa End Function Str$ x x x pierwszym znakiem = Str$(459) = Str$(-459.65) = Str$(459.001) ciągu jest ' Zwracany ' Zwracany ' Zwracany zawsze spacja zarezerwowana na znak jest ciąg " 459". jest ciąg "-459.65". jest ciąg " 459.001". StrComp W tym przykładzie funkcja StrComp jest wykorzystywana do zwrócenia wyniku porównania dwóch ciągów. jeřli trzeci argument jest równy 1, wykonywane jest porównywanie tekstowe; jeřli trzeci argument ma wartořć 0 lub jest pominięty, wykonywane jest porównywanie binarne. x = StrComp(string1, string2, compare) string1 < string2 -1 string1 = string2 0 string1 > string2 1 x = StrComp("ABCD", "abcd", 1) ' Wynik: 0. (porównanie tekstowe) x = StrComp("ABCD", "abcd", 0) ' Wynik: -1. (porównanie binarne) abcd jest większe tzn. zajmuje dalsze miejsce w tabeli ASCII x = StrComp("abcd", "ABCD") ' Wynik: 1. (porównanie binarne) StrConv StrConv(string, conversion) Funkcja StrConv ma następujące nazwane argumenty: string Argument obowiązkowy. Jest to wyrażenie znakowe podlegające konwersji. conversion Argument obowiązkowy typu Integer. Jest to suma wartořci okreřlających typ przeprowadzanych konwersji. Dopuszczalne są następujące wartořci argumentu conversion: Stała Wartořć vbUpperCase 1 vbLowerCase 2 vbProperCase 3 Opis Zamienia znaki ciągu na wielkie litery. Zamienia znaki ciągu na małe litery. Zamienia pierwszą literę każdego wyrazu w ciągu na wielką literę. String$ W tym przykładzie funkcja String jest wykorzystywana do zwrócenia ciągu okreřlonej długořci, złożonego z takich samych znaków. Dim MyString MyString = String$(5, "*") ' Zwracany jest ciąg "*****". MyString = String$(5, 42) ' Zwracany jest ciąg "*****". MyString = String$(10, "ABC") ' Zwracany jest ciąg "AAAAAAAAAA". StrReverse$ Podaje znaki w odwrotnej kolejnořci – odwraca ciąg. x = StrReverse$("007") Tab Tu wykorzystano funkcję Tab do ustawienia pozycji w pliku dla operacji wyjřcia i pozycji wydruku w oknie Analiza programu. Funkcji Tab można używać w połączeniu z instrukcją Print #. Open "TEST" For Output As #1 Print #1, "Pozdrawiam"; Tab(20); "wszystkich"' Drugie słowo drukowane jest w 20 kolumnie ' Jeřli nie podano wartořci parametru, kursor przesuwany jest do kolejnego obszaru wydruku. Print #1, "Pozdrawiam"; Tab; " wszystkich" Close #1 ' Zamknij plik. Funkcji Tab można również użyć w połączeniu z metodą Print. Poniższa instrukcja drukuje tekst od dziesiątej kolumny. Debug.Print Tab(10); "Dziesiąta kolumna." Trim$, LTrim$, RTrim$ x = Trim(" string ") x = LTrim(" string ") x = RTrim(" string ") ' -> "string". ' -> "string ". ' -> " string". UCase$ zamienia wszystkie małe litery na duże x = UCase$(WinCMD) ' -> wincmd Tylko duże litery są zamieniane na małe Val x = Val(" 1615 198") -> 1615198 'konwertuje string na integer Date, DateAdd, DateDiff, DatePart, DateSerial, DateValue, Format Date = "20-08-11" ustawia datę w systemie yyyy Rok y Dzień roku q Kwartał m Miesiąc d Dzień w Dzień tygodnia ww Tydzień h Godzina n Minuta s Sekunda x = Format(Date, "Long date") '3 luty 2010 x x x x = = = = Date '03-02-10 Now '03-02-10 17:38:06 Day(Now) 'data, tylko dzień -> 3 Day(Date) 'data, tylko dzień -> 3 x = Month(Now) 'miesiąc -> 2 x = Month(Date) 'miesiąc -> 2 x = Year(Now) '2010 x = Year(Date) '2010 x = Hour(Now) 'aktualna godzina x = Minute(Now) 'aktualna minuta x = Second(Now) 'aktualna sekunda x = Weekday(Now, vbMonday)'kolejny dzień tygodnia od poniedziałku -> 3 x = Weekday(Date, vbMonday)'kolejny dzień tygodnia od poniedziałku -> 3 x x x x = = = = WeekdayName$(Weekday(Date, vbMonday), 0) 'řroda WeekdayName$(Weekday(Now, vbMonday), 0) 'řroda WeekdayName$(Weekday(Date, vbMonday), 1) 'Řr WeekdayName$(Weekday(Now, vbMonday), 1) 'Řr x = DateAdd("d", 5, Date) '08-02-10 dodano 5 dni x = DateAdd("ww", 1, "03-02-10 ") '10-02-10, dodano 1 tydzień x = DateAdd("m", 5, Date) '03-07-10 dodano 5 miesięcy x = DateDiff("d", "15-01-10", Now) 'minęło 19 dni od podanej daty x = DateDiff("ww", "07-01-10", "17-01-10", vbMonday) różnica 1 tydzień ponieważ w kalendarzu gdzie tydzień zaczyna się od poniedziałku, 17 styczeń znajduje się 1 linię poniżej 7 stycznia. Argument vbMonday ma wpływ na obliczenia dokonywane przy wykorzystaniu symboli interwału "w" i "ww". x = DateDiff("ww", "07-01-10", "17-01-10") 'różnica 2 tygodnie różnica 2 tygodnie, ponieważ w kalendarzu gdzie tydzień zaczyna się od niedzieli, 17 styczeń znajduje się 2 linie poniżej 7 stycznia. DatePart x1 = MsgBox(DatePart("q", Now)) 'wyřwietlenie bieżącego kwartału x2 = MsgBox(DatePart("y", Now)) 'wyřwietlenie numeru dnia w roku x3 = MsgBox(DatePart("ww", Now)) 'wyřwietlenie numeru tygodnia w roku DateSerial x = DateSerial(1990, 7, 30) '30-07-90 MsgBox DateSerial(Year(Date), Month(Date) + 1, 0) 'ostatni dzień miesiąca DateValue zob. CDate x = DateValue("1985, Maj 15") '15-05-85 TimeSerial x = TimeSerial (12 - 6, -15, 0) ' 5:45:00 TimeValue x = TimeValue("1:23:17 PM") '1:23:17 IsDate okreřla czy badane wyrażenie może być konwertowane do typu Date txt = "1969, Luty 10" Czy_Data = IsDate(txt) ' True txt = "13,13,1969" Czy_Data = IsDate(txt) ' False Tablice Dim a() ReDim a$(8) ' Przydziel pamięć dla 8 elementów. ReDim Preserve a$(15)' Zmień rozmiar na 15 elementów, ale nie usuwaj jej elementów. For i = 1 To 8 a$(i) = i ' zainicjuj tablicę. Next i Array Option Base 1 Dim Tablica as Variant Tablica = Array("Pn", "Wt", "Sr", "Cz", "Pt", "So", "Ni") ‘ muszą być przecinki i cudzysłowy DolnyZakres = 1 a1 = Tablica(1) a2 = Tablica(2) a3 = Tablica(3) a4 = Tablica(4) 'Pn 'Wt 'Řr 'Cz IsArray okreřla czy badana zmienna jest tablicą. Dim Zmienna1$(10) Czy_to_tablica = IsArray(Zmienna1$) ' True Dim Zmienna2$(10, 4) Czy_to_tablica = IsArray(Zmienna2$) ' True Zmienna3 = Array(9, 5) Czy_to_tablica = IsArray(Zmienna3) ' True Zmienna4 = 10 Czy_to_tablica = IsArray(Zmienna4) ' False Join ReDim a$(10) a(0) = "Ala" a(1) = "ma" a(2) = "kota" ReDim Preserve a$(3) Text = Join(a, " ") ' "Ala ma kota" UBound Dim TablicaTo (1 To 10, -3 To 8, 30 To 105) As Variant Dim Tablica (20) As Variant Dim GórnyZakres As Variant GórnyZakres=UBound(TablicaTo,1) GórnyZakres=UBound(TablicaTo,2) GórnyZakres=UBound(TablicaTo,3) GórnyZakres=UBound(Tablica) _____________________ Dim a%(100, 5, 4) 'GórnyZakres=10 'GórnyZakres=8 'GórnyZakres=105 'GórnyZakres=20 x = UBound(a, 1) '100 y = UBound(a, 2) '5 Z = UBound(a, 3) '4 LBound DolnyZakres = 0 lub 1 w zależnořci od ustawień Option Base 1 Dim TablicaTo(1 To 10, -3 To 8, 30 To 105) As Variant Dim Tablica(20) As Variant Dim DolnyZakres As Variant DolnyZakres DolnyZakres DolnyZakres DolnyZakres = = = = LBound(TablicaTo, 1) 'DolnyZakres=1 LBound(TablicaTo, 2) 'DolnyZakres=-3 LBound(TablicaTo, 3) 'DolnyZakres=30 LBound(Tablica) Split "Option Base 1" nie dotyczy Split, DolnyZakres = 0 Konwersja na DolnyZakres = 1 __________________________________ Dim Tablica: ReDim Tablica2$(1000) txt = "Adam Mickiewicz | Rafał Wojaczek | Thomas P | Gosia P" Tablica = Split(txt, "|") ReDim Tablica2$(UBound(Tablica) + 1) For n = 0 To UBound(Tablica) Tablica2(n + 1) = Tablica(n) Next ReDim Preserve Tablica(UBound(Tablica) + 1) For n = 1 To UBound(Tablica) Tablica(n) = Tablica2(n) Next a1 = Tablica(1) a2 = Tablica(2) a3 = Tablica(3) a4 = Tablica(4) ________________________ Dim Tablica As Variant řcieżka = "x:\Test\.Form\Dane.txt" Tablica = Split(řcieżka, "\") y = Tablica(LBound(Tablica)) x0 = Tablica(0) 'x: x1 = Tablica(1) 'Test x2 = Tablica(2) '.Form x3 = Tablica(3) 'Dane.txt z = Tablica(UBound(Tablica)) 'pierwszy: x: 'ostatni: Dane.txt ________________________________________________ Text = "Ala ma kota i psa" GórnyZakres = UBound(Split(Text, " ")) pierwsza cyfra pokazuje, od której częsci jest czytane zdanie do końca druga cyfra pokazuje ile częřci od początku zostanie pominiętych a0 a1 a2 a3 a4 = = = = = Split(Text, Split(Text, Split(Text, Split(Text, Split(Text, " " " " " ", ", ", ", ", 1)(0) 2)(1) 3)(2) 4)(3) 5)(4) '"Ala ma kota i psa" '"ma kota i psa" '"kota i psa" '"i psa" '"psa" przy braku pierwszej cyfry zdanie nie jest czytane do końca, czytany jest tylko jeden wyraz b0 = Split(Text, " ")(0) '"Ala" b1 = Split(Text, " ")(1) '"ma" b2 = Split(Text, " ")(2) '"kota" b3 = Split(Text, " ")(3) '"i" b4 = Split(Text, " ")(4) '"psa" _____________________________________ Text = "Ala i Ola mają kota i psa" znak = "i" liczba_znaków = UBound(Split(Text, znak)) ' 2 pozycja = InStr(1, Text, "mają") 'pozycja "mają" w "Text" = 11 Tablica = Split(Text, " ") szukaj = "i" For Each wyraz In Tablica nr = nr + 1 If szukaj = wyraz Then x = x & "wyraz nr:" & " " & nr & vbNewLine End If Next MsgBox """i"" jest jako:" & vbNewLine & x, , "" __________________________________________________ Option Base 1 ReDim Tablica$(7) Tablica(1) Tablica(2) Tablica(3) Tablica(4) Tablica(5) Tablica(6) Tablica(7) = = = = = = = "Ala" "i" "Ola" "mają" "kota" "i" "psa" Text = Join(Tablica, " ") znak = "i" ' liczba_znaków = UBound(Split(Text, znak)) '= 2 pozycja = InStr(1, Text, "mają") 'pozycja "mają" w "Text" = 11 sprawdzanie czy "kota" jest w tablicy = True znajdź = InStr(1, Join(Tablica, " "), "kota") > 0 pozycja = InStr(1, Text, "mają") 'pozycja "mają" w " Text " = 11 ___________________________________________________________________ Dim Miasta$(4) Dim szukaj Miasta(1) Miasta(2) Miasta(3) Miasta(4) = = = = "Warszawa" "Kiel" "Katowice" "Kiel" szukaj = "Kiel" '1 For Each szukaj In Miasta nr = nr + 1 If szukaj = "Kiel" Then x = x & "Miasta(" & nr & ")" & vbNewLine End If Next MsgBox "Kiel znajduje się w:" & vbNewLine & x, , "Gdzie jest Kiel?" '2 For nr = LBound(Miasta) To UBound(Miasta) If szukaj = Miasta(nr) Then x = x & "Miasta(" & nr & ")" & vbNewLine End If Next MsgBox "Kiel znajduje się w:" & vbNewLine & x, , "Gdzie jest Kiel?" '3 nr = 0 y = 1 txtlinii = Join(Miasta, " ") x = InStr(1, Join(Miasta, " "), "Kiel") > 0 'sprawdzanie czy "Kiel" jest w tablicy If x Then For i = LBound(Miasta) To UBound(Miasta) Z = InStr(y, txtlinii, "Kiel") If Z <> 0 Then nr = nr + 1 y = Z + 1 End If Next End If MsgBox "Kiel znajduje się " & nr & " razy", , "Gdzie jest Kiel?" __________________________________________________________________ zamiana tablicy jednowymiarowej na dwuwymiarową ReDim Tablica$(4) ReDim Tablica2(2, 2) 'jednowymiarowa Tablica(1) Tablica(2) Tablica(3) Tablica(4) = = = = "Ala" "i" "Ola" "mają" For i = 1 To 2 For j = 1 To 2 nr = nr + 1 Tablica2(i, j) = Tablica(nr) Next j Next i 'dwuwymiarowa b0 = Tablica2(1, 1) b1 = Tablica2(1, 2) b2 = Tablica2(2, 1) b3 = Tablica2(2, 2) _______________________________ Zmiana nazwy tablicy w() na m() w(1) = "Adam" w(2) = "Mickiewicz" w(3) = "Rafał" w(4) = "Wojaczek" For n = 1 To 4 ' to jest bardzo szybka zamiana m(n) = w(n) Next Form1.BackColor = RGB(230, 216, 181) RGB(15 94 235) złoty kolor kolor niebieski Microsoft Scripting Runtime (scrrun.dll) regsvr32 c:\WINDOWS\system32\VB6IDEMouseWheelAddin.dll And, not, or, xor p q NOT p NOT q p AND q p OR q p NAND q p NOR q p XOR q p XNOR q 0 0 1 1 0 0 1 1 0 1 0 1 1 0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 1 0 0 1 1 0 0 0 1 IsEmpty (zmienna) - zwraca True jeřli zmienna nie istnieje ___________________________ Dim x As String * 5 x = "kot" ' wynik = "kot " Dim x As String * 2 x = "kot" ' wynik = "ko" Zamiast Form1. można użyć zapis ME. ___________________________________________________________________ Jeřli chcesz mieć więcej kolorów to zastosuj kontrolkę RichTextBox. ___________________________________________________________________ Czytanie od tyłu For a = 0 To Len(txt) - 1 b = Len(txt) - a wynik = wynik & Mid(txt, b, 1) Next To samo co: x = StrReverse$(txt) _________________________________ On Error GoTo ProcError Gosia = IIf(Dir("\\SONY-VAIO\..transfer\", vbDirectory) <> Empty, True, False) ProcError: MsgBox "niedostępny" Resume błąd ' lub End błąd: On Error Resume Next 'powrót do programu _______________________' bez Goto _________________________________ Uwaga: Dim x przed Timer –> x zachowuje się jak Static tzn. zachowuje ostatnią wartořć Private Sub Timer1_Timer() lub 'Private Sub main() Static y ' zachowuje ostatnią wartořć y On Local Error GoTo DirDriverHandler Kod…….. KoniecProcesu: Exit Sub DirDriverHandler: MsgBox błąd, 16, "błąd" On Error Resume Next Resume KoniecProcesu End Sub ________________________________________________________________ Dim uchwyt& uchwyt = FindWindow("TTOTAL_CMD", vbNullString) While uchwyt <> 0 PostMessage uchwyt, &H10, 0&, 0& ' wyłączanie Sleep (300) uchwyt = FindWindow("TTOTAL_CMD", vbNullString) Wend Shell "D:\WinCMD\TotalCMD.exe", 1 _____________________________________________________________________________________________________ If FindWindow("TTOTAL_CMD", vbNullString) = "0" Then Shell "D:\_PROGRAMY\WinCMDini\WinCMDini.exe", 0 _____________________________________________________________________________________________________ Dim Process As Object Dim był_włączony As Boolean był_włączony = True While był_włączony był_włączony = False For Each Process In GetObject("winmgmts:").ExecQuery("Select Name from Win32_Process Where Name = '" & "TotalCMD64.exe" & "'") Process.Terminate ' wyłączanie był_włączony = True Sleep (1000) Next Wend Shell "D:\WinCMD\TotalCMD64.exe", 1 ________________________________________________________________ aplikacje = "Clock.exe Photos.exe" Tablica = Split(aplikacje, " ") For Each aplikacja In Tablica If GetObject("winmgmts:").ExecQuery("Select Name from Win32_Process Where Name = '" & aplikacja & "'").Count = 0 Then Shell "d:\HTC Home(W7)\" & aplikacja, 0 'jeżeli nie włączona End If Next _________________________________ "" Aby text wyřwietlany miał postać: "informacja" należy dać podwójny cudzysłów: ""informacja"" lub: Chr(34) + "informacja" & Chr(34) ________________________________________________________________________________ Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _ ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" _ (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long Const SW_SHOWNORMAL = 1 Private Sub Form_Load() On Error Resume Next Dim ret As Long ret = ShellExecute(Me.hwnd, "open", "d:\_PROGRAMY\ABC\ instrukcja VB6.rtf", 0, 0, SW_SHOWNORMAL) End End Sub _________________________________ řcieżka = "x:\Temp2\du.pa 13.txb" kropka = 1 n = 0 While kropka <> 0 pozycja = n kropka = InStr(n + 1, řcieżka, ".", 1) n = kropka Wend MsgBox "ostatnia kropka jest na = " & pozycja & " pozycji", , řcieżka _____________________________________________________________________ d:\_PROGRAMY\ForceDel\ForceDel.exe Command line usage: ~~~~~~~~~~~~~~~~~~ ForceDEL.exe [switches] filename1 filename2... /D /ND /U /NU /R /NR /C /NC /B /NB /MB /W[0-4] filename Delete the files (default) Don't delete the files (just unlock them) Unlock the files (default) Don't unlock the files Schedule deletion on reboot (if can't delete otherwise) Don't schedule deletion on reboot (default) Delete file comments Don't delete file comments (default) Delete to recycle bin Don't delete to recycle bin Delete to recycle bin if possible (not possible i.e. with invalid files)(default) Warning level. 0-no GUI 1-show errors, 2-warnings, 3-log, 4-debug Name of a file you want to delete Command line examples: ~~~~~~~~~~~~~~~~~~~~~ ForceDEL.exe C:\TEST.TXT ForceDEL.exe /W0 /ND /U f:\ deletes C:\TEST.TXT unlocks all files on f:\ _____________________________________________________________ Wpis dla unlocker do pliku *.bat: "c:\Program Files\Unlocker\Unlocker.exe" "c:\Program Files\test" /S zawsze pojawia się box z info "Operation succeeded", ale jest mocniejszy od Unlocker z boxem: /LO "c:\Program Files\IObit Unlocker\IObitUnlocker.exe" /none "c:\Program Files\Acronis" /none /normal /none /advanced _________________ Alt 042 * Alt 092 \ Alt 095 _ Alt 0126 ~ __________________________________ Private Type Tabl A As String B As String C As Integer End Type Private Sub main() Dim Tablica(2) As Tabl Tablica(1).A = "Adam" Tablica(1).B Tablica(1).C Tablica(2).A Tablica(2).B Tablica(2).C a1 a2 a3 a4 a5 a6 = = = = = = = = = = = "Mickiewicz" 16 "Rafał" "Wojaczek" 20 Tablica(1).A Tablica(1).B Tablica(1).C Tablica(2).A Tablica(2).B Tablica(2).C zamiana 1, 2 a1 = a2 = a3 = a4 = a5 = a6 = End Sub Tablica(1).A Tablica(1).B Tablica(1).C Tablica(2).A Tablica(2).B Tablica(2).C Function zamiana(x, y) Dim Tmp As Tabl Tmp = Tablica(x) Tablica(x) = Tablica(y) Tablica(y) = Tmp End Function __________________________________________________ Usunięcie ze stringa znaków sterujących strValue = Replace(strValue, Chr(13), "") 'enter strValue = Replace(strValue, Chr(10), "") 'newline strValue = Replace(strValue, Chr(9), "") 'tab strValue = Replace(strValue, ":", "") 'colons strValue = Trim(strValue) 'trim __________________________________________________________________________ Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sleep (100) __________________________________________________________________________ Dim Aktywuj Set Aktywuj = CreateObject("WScript.Shell") Aktywuj.AppActivate "Total" Dla VB6 class = TTOTAL_CMD Aktywuj.SendKeys "%{F4}" 'zamyka Total Commander Aktywuj.SendKeys "{LEFT}cm_selectFiles{ENTER}*.ini{ENTER}" Aktywuj.SendKeys "{LEFT}cm_SelectFolders{ENTER}Temp{ENTER}" nawiasy ( , ) nie są akceptowane, należy je wziąřć w klamry {(} Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys Aktywuj.SendKeys "{LEFT}cm_SaveSelection{ENTER}" "{LEFT}cm_RestoreSelection{ENTER}" ' tylko w tym samym oknie "{LEFT}cm_CopyNamesToClip{ENTER}" duża litera litera partycji "{LEFT}cm_CopyFullNamesToClip{ENTER}" mała litera partycji "{LEFT}cm_CopySrcPathToClip{ENTER}" mała litera partycji "{LEFT}cm_CopyToClipboard{ENTER}" duża litera litera partycji "{LEFT}cm_LoadSelectionFromClip{ENTER}" czyta tylko małe litery partycji "{LEFT}cm_SaveSelectionToFileA{ENTER}q:\oknoL.txt{ENTER}" "{LEFT}cm_LoadSelectionFromFile{ENTER}q:\oknoL.txt{ENTER}" "{TAB}" "{LEFT}cm_ClearAll{ENTER}" "{LEFT}cm_CompareDirsWithSubdirs{ENTER}" "{LEFT}cm_DirMatch{ENTER}" "{LEFT}cm_ExchangeSelFiles{ENTER}" "{LEFT}cm_ExchangeSelFolders{ENTER}" "{LEFT}cm_Exit{ENTER}" "{LEFT}cm_FocusLeft{ENTER}" "{LEFT}cm_FocusRight{ENTER}" "{LEFT}cm_LeftCustomView1{ENTER}" "{LEFT}cm_Return{ENTER}" "{LEFT}cm_ShowOnlySelected{ENTER}" "{LEFT}cm_SrcUserSpec{ENTER}*.avi{ENTER}" If IIf(Dir("q:\oknoL.txt", 7) <> Empty, True, False) Then Kill "q:\oknoL.txt" End If Open "q:\oknoL.txt" For Output As #1 Print #1, txt_oknoL Close #1 If IIf(Dir("q:\oknoP.txt", 7) <> Empty, True, False) Then Kill "q:\oknoP.txt" End If Open "q:\oknoP.txt" For Output As #2 Print #2, txt_oknoP Close #2 ____________________________________________________________ Dim Linia(24) For Each kontrolka In Me Debug.Print kontrolka.Name ' kontrolki Next For i = 1 To 24 Set Linia(i) = Me("Line" & i) Next For Each kontrolka In Me If Left(kontrolka.Name, 4) = "Line" Then If IsNumeric(Replace(kontrolka.Name, "Line", "", 1)) Then _ Set Linia(Replace(kontrolka.Name, "Line", "", 1)) = _ Me("Line" & Replace(kontrolka.Name, "Line", "", 1)) End If Next Linia(1).Visible = False ____________________________________________________________ (uaktywnić w References) Microsoft Word 14.0 Object Library Dim objWord As Word.Application Set objWord = New Word.Application objWord.Documents.Open ("d:\_PROGRAMY\ABC\ instrukcja VB6.doc") objWord.Visible = True