Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[UDF] PhoMisc.au3 - Wszystkie moje funkcje w jednym UDF


Rekomendowane odpowiedzi

Opublikowano

Siema :D

Chcę wam zaprezentować bibliotekę, w której znajdują się wszystkie moje mniej lub bardziej przydatne funkcje :]

Oto kod:

#region <<OPIS>>
; #BIBLIOTEKA# ==================================================================================================================
; Nazwa ..........: PhoMisc
; Opis ...........: Zbiór róznych przydatnych funkcji, oraz wszystkich funkcji z moich bibliotek
; Autor ..........: Phoenix_PL
; Wersja .........: 1.2
; Link ...........: [url=http://www.mpcforum.pl/topic/723209-udf-phomiscau3-wszystkie-moje-funkcje-w-jednym-udf/]http://www.mpcforum.pl/topic/723209-udf-phomiscau3-wszystkie-moje-funkcje-w-jednym-udf/[/url]
; ===============================================================================================================================

; #LISTA FUNKCJI#================================================================================================================
; _GenerZnak
; _GenerChar
; _PolaczPliki
; _RozdzielPliki
; _CopyWithProgress
; _CopyWithProgressWin
; _GetFileSize
; _PhoLog_Start
; _PhoLog_Test
; _PhoLog_Write
; _PhoLog_End
; _PhoLog_SetPath
; __phowrite
; ===============================================================================================================================
#endregion <<OPIS>>

#region <<ZMIENNE>
; #ZMIENNE#======================================================================================================================
Global Const $PhoZnaki[4] = ["qwertyuiopasdfghjklzxcvbnm", "QWERTYUIOPASDFGHJKLZXCVBNM", "1234567890", "!@#$%^&*()~`:;?/>.<,[}]_-+=|\{'"""] ; -> _PhoGenZnak
Local $i = 0
Local $PhoSeparator = "_[phosep]_" ; -> _PolaczPliki, _RozdzielPliki
; #ZMIENNE - PhoLog#
Global $_PhoLog_Sciezka = @ScriptDir&"\log.txt"
Local Const $_PhoLog_WTest = "[TEST] ---> "
Local Const $_PhoLog_WEnd = "[KONIEC] ---> "
Local Const $_PhoLog_WInfo = "[INFO] ---> "
Local Const $_PhoLog_WError = "[BŁĄD] ---> "
Local Const $_PhoLog_WStart = "[START] ---> "
; ===============================================================================================================================
#endregion <<ZMIENNE>>

#region <<GŁÓWNE FUNKCJE>>
; #FUNKCJA# =====================================================================================================================
; Nazwa ............: _PhoGenZnak
; Opis .............: Funkcja generująca dowolną ilosć losowych znaków
; Składnia .........: _PhoGenZnak($s_tryb, $i_ilosc)
; Parametry ........: $i_ilosc - Ilosć znaków do wygenerowania (domyslnie 10)
; $s_tryb - Flaga generowania (domyslnie all).
; Info - Flagi .....: Flagi są wykrywanie poprzez StringInStr. Mozliwe flagi:
; all - Do generowania są uzyte wszystkie mozliwe znaki. Ignoruje inne flagi.
; mlit - Do generowania są uzyte male litery
; dlit - Do generowania są uzyte duze litery
; num - Do generowania są uzyte cyfry
; chars - Do generowania są uzyte znaki
; Flagi mozna laczyc (oprocz all), nie trzeba ich oddzielac. Po wiecej informacji, jak moga byc umieszczone flagi, zapraszam do Helpa funkcji StringInStr.
; Zwracana wartosć .: Wygenerowane znaki
; Kody @error ......: 1 - Podana ujemna/nieprawidlowa ilosc znaków do wygenerowania
; 2 - Podane nieprawidlowe flagi
; Autor ............: Phoenix_PL, podziękowania dla wefhy za poprawki 
; ===============================================================================================================================
Func _PhoGenZnak($i_ilosc = 10, $s_tryb = "all")
If $i_ilosc <= 0 Then
SetError (1)
Return @error
EndIf
If Not StringInStr ($s_tryb, "mlit") And Not StringInStr ($s_tryb, "dlit") And Not StringInStr ($s_tryb, "num") And Not StringInStr ($s_tryb, "chars") And Not StringInStr ($s_tryb, "all") Then
SetError (2)
Return @error
EndIf
Local $k = 0, $p = 0, $pn = 0

Local $gener = ""
Local $return = ""
$i = 1
If StringInStr ($s_tryb, "all") Then
$gener = $PhoZnaki[0]&$PhoZnaki[1]&$PhoZnaki[2]&$PhoZnaki[3]
While $i <= $i_ilosc
$return &= StringMid($gener, Random(1, StringLen($gener), 1), 1)
$i += 1
WEnd
Return $return
EndIf
If StringInStr ($s_tryb, "mlit") Then $gener &= $PhoZnaki[0]
If StringInStr ($s_tryb, "dlit") Then $gener &= $PhoZnaki[1]
If StringInStr ($s_tryb, "num") Then $gener &= $PhoZnaki[2]
If StringInStr ($s_tryb, "char") Then $gener &= $PhoZnaki[3]
While $i <= $i_ilosc
$return &= StringMid($gener, Random(1, StringLen($gener), 1), 1)
$i += 1
WEnd
Return $return
EndFunc

; #FUNKCJA# ====================================================================================================================
; Nazwa .............: _PhoGenChars
; Opis ..............: Funkcja generuje losowe znaki z tablicy ASCII
; Składnia ..........: _PhoGenChars($i_ilosc)
; Parametry .........: $i_ilosc - ilosc generowanych znaków.
; $i_od - Od którego znaku losować (maksimum 254, minimum 0)
; $i_do - Do którego znaku losować (maksimum 255, minimum 1)
; Zwracane wartosci .: Wygenerowane znaki
; Kody @error .......: 1 - Nieprawidłowa ilosć znaków
; 2 - Nieprawidłowy parametr $i_od
; 3 - Nieprawidłowy parametr $i_do
; Autor .............: Phoenix_PL
; Uwagi .............: UWAGA! FUNKCJA MOZE POWODOWAĆ ANOMALIE W SYSTEMIE JEŚLI WYSYŁANE (SEND & CONTROLSEND) BĘDĄ KODY STERUJĄCE (ZNAKI 0-31 I 127)
; Po informacje na ten temat zapraszam na wikipedię: [url=http://pl.wikipedia.org/wiki/ASCII]http://pl.wikipedia.org/wiki/ASCII[/url]
; ===============================================================================================================================
Func _PhoGenChars($i_ilosc, $i_od = 0, $i_do = 255)
If $i_ilosc <= 0 Then
SetError(1)
Return @error
EndIf
If $i_od < 0 Or $i_od > 255 Then
SetError(2)
Return @error
EndIf
If $i_do < 1 Or $i_do > 255 Then
SetError(3)
Return @error
EndIf
$i = 0
Local $chars = ""
While $i <= $i_ilosc
$chars &= Chr(Random($i_od,$i_do, 1))
$i += 1
WEnd
Return $chars
EndFunc

; #FUNKCJA# =====================================================================================================================
; Nazwa ...............: _PolaczPliki
; Deskrypcja ..........: Łączy kilka plików w jeden (z mozliwoscią rozłączania)
; Składnia ............: _PolaczPliki($a_pliki, $plik_wyjsciowy)
; Parametry ...........: $a_pliki - Tablica z sciezkami do plików które mają być połączone.
; $plik_wyjsciowy - Ściezka do miejsca, gdzie ma być utworzony połączony plik.
; Kody błędów .........: 1 - $a_pliki nie jest tablicą danych
; 2 - Ściezka wyjsciowa nie została podana
; Autor ...............: Phoenix_PL
; ===============================================================================================================================

Func _PolaczPliki($a_pliki, $plik_wyjsciowy)
If Not IsArray($a_pliki) Then
SetError(1)
Return @error
ElseIf $plik_wyjsciowy = "" Then
SetError(2)
Return @error
EndIf

Local $pliki = ""
Local $filename = ""
$i = 0

While $i < UBound($a_pliki)
$filename = StringSplit($a_pliki[$i], "\")
$pliki &= FileRead ($a_pliki[$i])&$PhoSeparator&$filename[UBound($filename)-1]&$PhoSeparator
$i += 1
WEnd

Local $plikkoncowy = FileOpen ($plik_wyjsciowy, 10)
FileWrite ($plikkoncowy, $pliki)
FileClose ($plikkoncowy)
EndFunc

; #FUNKCJA# =====================================================================================================================
; Nazwa ...............: _RozdzielPliki
; Deskrypcja ..........: Rozłącza pliki połączone przez funkcję _PolaczPliki
; Składnia ............: _RozdzielPliki($plik, $folder)
; Parametry ...........: $plik - Plik z połączonymi plikami
; $folder - Ściezka do folderu w którym mają znaleźć się wyodrębnione pliki
; Kody błędów .........: 1 - Plik z plikami nie istnieje
; 2 - Nie został podany folder wyjsciowy
; Autor ...............: Phoenix_PL
; ===============================================================================================================================

Func _RozdzielPliki($plik, $folder)
If Not FileExists ($plik) Then
SetError (1)
Return @error
ElseIf $folder = "" Then
SetError (2)
Return @error
EndIf

Local $openPlik = FileOpen ($plik)
Local $plikread = FileRead ($openPlik)
Local $split = StringSplit ($plikread, $PhoSeparator, 1)
FileClose ($openPlik)
If Not FileExists ($folder) Then
DirCreate ($folder)
EndIf

$i = 2
While $i < UBound ($split)
FileWrite ($folder&$split[$i], $split[$i-1])
$i += 2
WEnd
EndFunc

; #FUNKCJA# =====================================================================================================================
; Nazwa ...............: _CopyWithProgress
; Deskrypcja ..........: Kopiowanie plików z obsługą paska postępu
; Składnia ............: _CopyWithProgress ($h_Pasek, $Plik, $Sciezka)
; Parametry ...........: $h_Pasek - Uchwyt do paska postępu
; $Plik - Ściezka do pliku do skopiowania
; $Sciezka - Ściezka do której ma być skopiowany plik
; Kody błędów .........: 1 - Nieprawidłowa sciezka pliku do skopiowania
; 2 - Nieprawidłowa sciezka do miejsca skopiowania pliku
; 3 - $hPasek nie jest uchwytem
; 4 - Nie mozna otworzyć pliku do skopiowania
; 5 - Nie mozna otworzyć sciezki do skopiowania pliku
; Autor ...............: Phoenix_PL
; ===============================================================================================================================

Func _CopyWithProgress($h_Pasek, $Plik, $Sciezka)
If $Plik = "" Then
SetError (1)
Return @error
ElseIf $Sciezka = "" Then
SetError (2)
Return @error
ElseIf Not IsHWnd($h_Pasek) Then
SetError (3)
Return @error
EndIf
Local $filesize = FileGetSize ($Plik)
If $filesize > 1024 Then
$filesize = $filesize / 1024
EndIf
$sourceopen = FileOpen ($Plik, 0)
If $sourceopen = False Then
SetError (4)
Return @error
EndIf
$dest = FileOpen ($Sciezka, 10)
If $dest = 0 Then
SetError (5)
Return @error
EndIf
Local $ret
Local $pos
While 1
$sordat = FileRead ($sourceopen, 1024)
If @error = -1 Then
$ret = FileWrite ($dest, ($sordat))
EndIf
$pos = $pos + (100/$filesize)
GUICtrlSetData ($h_Pasek, $pos)
$ret = FileWrite ($dest, ($sordat))
If $pos < 100 Then
ExitLoop
EndIf
WEnd
FileClose ($sourceopen)
FileClose ($dest)
EndFunc

; #FUNKCJA# =====================================================================================================================
; Nazwa ...............: _CopyWithProgressWin
; Deskrypcja ..........: Kopiowanie plików z obsługą paska postępu w osobnym oknie
; Składnia ............: _CopyWithProgressWin ($Plik, $Sciezka)
; Parametry ...........: $Plik - Ściezka do pliku do skopiowania
; $Sciezka - Ściezka do której ma być skopiowany plik
; Kody błędów .........: 1 - Nieprawidłowa sciezka pliku do skopiowania
; 2 - Nieprawidłowa sciezka do miejsca skopiowania pliku
; 3 - Nie mozna otworzyć pliku do skopiowania
; 4 - Nie mozna otworzyć sciezki do skopiowania pliku
; Autor ...............: Phoenix_PL
; ===============================================================================================================================

Func _CopyWithProgressWin ($Plik, $Sciezka)
ProgressOn ("Kopiowanie plików...", "Kopiuję "&$Plik, "do "&$Sciezka)
If $Plik = "" Then
SetError (1)
Return @error
ElseIf $Sciezka = "" Then
SetError (2)
Return @error
EndIf
Local $filesize = FileGetSize ($Plik)
If $filesize > 1024 Then
$filesize = $filesize / 1024
EndIf
$sourceopen = FileOpen ($Plik, 0)
If $sourceopen = False Then
SetError (3)
Return @error
EndIf
$dest = FileOpen ($Sciezka, 10)
If $dest = 0 Then
FileClose ($dest)
SetError (4)
Return @error
EndIf
Local $ret
Local $pos
While 1
$sordat = FileRead ($sourceopen, 1024)
If @error = -1 Then
$ret = FileWrite ($dest, ($sordat))
EndIf
$pos = $pos + (100/$filesize)
ProgressSet ($pos)
$ret = FileWrite ($dest, ($sordat))
If $pos > 100 Then
ExitLoop
EndIf
WEnd
FileClose ($sourceopen)
FileClose ($dest)
ProgressOff ()
EndFunc

; #FUNKCJA# =====================================================================================================================
; Nazwa ...............: _GetFileSize
; Deskrypcja ..........: Pokazywanie wielkosci pliku w róznych jednostkach
; Składnia ............: _GetFileSize ($Plik, $f_Typ, $i_PoPrzecinku)
; Parametry ...........: $Plik - Sciezka do pliku z którego będzie pobrana wielkosć
; $f_Typ - Jednostka w której będzie podana wielkosć
; $i_PoPrzecinku - Liczba wyswietlanych liczb po przecinku
; Flagi $f_Typ ........: 0 - Bajty (
; 1 - Kilobajty (KB)
; 2 - Megabajty (MB)
; 3 - Gigabajty (GB)
; Autor ...............: Phoenix_PL
; ===============================================================================================================================

Func _GetFileSize ($Plik, $f_Typ, $i_PoPrzecinku)
Local $size = FileGetSize ($Plik)
Local $tmp
Local $tmp2
Local $endsize
If $f_Typ = 1 Then
$size = $size / 1024
$tmp = StringSplit ($size, ".")
$tmp2 = StringRight ($tmp[2], $i_PoPrzecinku)
$endsize = $tmp[1]&"."&$tmp2
ElseIf $f_Typ = 2 Then
$size = $size / 1024^2
$tmp = StringSplit ($size, ".")
$tmp2 = StringRight ($tmp[2], $i_PoPrzecinku)
$endsize = $tmp[1]&"."&$tmp2
ElseIf $f_Typ = 3 Then
$size = $size / 1024^3
$tmp = StringSplit ($size, ".")
$tmp2 = StringRight ($tmp[2], $i_PoPrzecinku)
$endsize = $tmp[1]&"."&$tmp2
EndIf
If $endsize = "" Then
$endsize = $size
EndIf
Return $endsize
EndFunc

; #FUNKCJA# =====================================================================================================================
; Nazwa .............: _PhoLog_Start
; Opis ..............: Start logu. Wymagany przed jakimikolwiek innymi funkcjami
; Składnia ..........: _PhoLog_Start()
; Parametry .........: Brak
; Autor .............: Phoenix_PL
; ===============================================================================================================================
Func _PhoLog_Start()
Local $ex = False
If FileExists ($_PhoLog_Sciezka) Then
$ex = True
EndIf
Global $_PhoLog_HWNd = FileOpen ($_PhoLog_Sciezka, 9)
If $ex = True Then __phowrite (@CRLF)
EndFunc

; #FUNKCJA# =====================================================================================================================
; Nazwa .............: _PhoLog_Test
; Opis ..............: Test logu
; Składnia ..........: _PhoLog_Test()
; Parametry .........: Brak
; Zwracane wartosci .: @error:
; 1 - Plik z logiem nie istnieje
; Autor .............: Phoenix_PL
; ===============================================================================================================================
Func _PhoLog_Test()
_PhoLog_write (@HOUR&":"&@MIN&":"&@SEC&" "&@MDAY&"-"&@MON&"-"&@YEAR&" "&"Próba logu...", 0)
If Not FileExists ($_PhoLog_Sciezka) Then
SetError (1)
Return @error
EndIf
EndFunc

; #FUNKCJA# =====================================================================================================================
; Nazwa .............: _PhoLog_Write
; Opis ..............: Zapis tekstu do logu
; Składnia ..........: _PhoLog_Write($s_text[, $f_mode = 1])
; Parametry .........: $s_text - Tekst do wpisania
; $f_mode - [opcjonalnie] Prefiks uzyty do wpisania. Domyslnie 1 (brak prefiksu)
; Uwagi .............: Wartosci $f_mode dla odpowiednich trybów (podane nazwy zmiennych trybów):
; 0 - Wpis testowy
; 1 - Normalny wpis
; 2 - Wpis o błędzie
; 3 - Wpis informacyjny
; 4 - Wpis uruchamiający
; 5 - Wpis kończący
; Kazdy tryb powyzej 5 (6,7,8...) zostanie potraktowany jako normalny.
; Autor .............: Phoenix_PL
; ===============================================================================================================================
Func _PhoLog_Write($s_text, $f_mode = 1)
Local $a
Switch $f_mode
Case 0
$a = $_PhoLog_WTest
Case 2
$a = $_PhoLog_WError
Case 3
$a = $_PhoLog_WInfo
Case 4
$a = $_PhoLog_WStart
Case 5
$a = $_PhoLog_WEnd
Case Else
$a = ""
EndSwitch
__phowrite (@HOUR&":"&@MIN&":"&@SEC&" "&@MDAY&"-"&@MON&"-"&@YEAR&" "&$a&$s_text&@CRLF)
EndFunc

; #FUNKCJA# =====================================================================================================================
; Nazwa ...........: _PhoLog_End
; Opis ............: Funkcja zamykająca log, wymagana przed zamknięciem programu
; Składnia ........: _PhoLog_End()
; Parametry .......: Brak
; Author ..........: Phoenix_PL
; ===============================================================================================================================
Func _PhoLog_End()
FileClose ($_PhoLog_HWNd)
EndFunc

; #FUNKCJA# =====================================================================================================================
; Nazwa .............: _PhoLog_SetPath
; Opis ..............: Funkcja słuzaca do zmiany miejsca logu.
; Składnia ..........: _PhoLog_SetParh($Sciezka)
; Parametry .........: $Sciezka - Nowa sciezka do folderu z logiem.
; Zwracane wartosci .: @error:
; 1 - Nie mozna było utworzyć pliku
; Autor .............: Phoenix_PL
; ===============================================================================================================================
Func _PhoLog_SetPath($Sciezka)
$_PhoLog_Sciezka = $Sciezka
_PhoLog_end()
_PhoLog_start()
If Not FileExists ($_PhoLog_Sciezka) Then
SetError (1)
Return @error
EndIf
EndFunc
#endregion <<GŁÓWNE FUNKCJE>>

#region <<FUNKCJE LOKALNE>>
; #FUNCKJA_LOKALNA# =============================================================================================================
; Nazwa ...........: __phowrite
; Opis ............: FUNKCJA LOKALNA
; Składnia ........: __phowrite($text)
; Parametry .......: $text - Tekst do wpisania.
; Autor ...........: Phoenix_PL
; ===============================================================================================================================
Func __phowrite($text)
FileWrite ($_PhoLog_HWNd, $text)
EndFunc
#endregion <<FUNKCJE LOKALNE>>



Są tam między innymi funkcje do losowego generowania znaków, funkcje łączące wiele plików w całość (a także funkcje je rozdzielające), oraz funkcje do obsługi logu programu

Piszcie co mogę w tym udf-ie zmienić czy poprawić, albo dajcie jakieś pomysły na funkcje.

Jeszcze download:

Dropbox
PhoMisc.rar

846331404756772371599.jpeg
  • 3 tygodnie później...
  • 1 miesiąc temu...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...