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

Odczytywanie błędu ze skompilowanego pliku


Rekomendowane odpowiedzi

Opublikowano

Wyskakuje error że na 13216 lini jest brak tablicy, kod ma tylko 1,5k lini, więc pomyślałem że zdekompiluje i zobacze, a w zdekompilowanym pliku na 13216 lini jest zdeklarowanie zmiennej.

Uruchamiam plik z parametrami, więc musi być zkompilowane.

 

 

http://scr.hu/0rby/rmsu6

 

Wie ktoś jak zczaić się w jakiej lini jest błąd?

Opublikowano

Błąd z tablicą.

Może

  • Wykroczyłeś poza index
  • Do zwykłej zmiennej przypisałeś coś jak do tablicy
  • Do tablicy przypisałeś coś jak do zwykłej zmiennej

Opublikowano

Spróbuj ręczenie te parametry wprowadzić i uruchomić nieskompilowany.

Jakich include'ów użyłeś?

I podaj tą linię

Law of Revelation: The hidden flaw never remains hidden.

Opublikowano

@up2

bosh, wiem, tylko że jak szukam lini na której ten błąd wyskakuje

@up

to ja się pytam jak tą linie znaleźć

kod z takimi samymi parametrami dziala poprawnie(nieskompilowany

 

nie wiem czy to ma jakiekolwiek znaczenie ale trzymaj

 

 

#include <Constants.au3>
#include <Misc.au3>
#include "WinHTTP.au3"
#include "string.au3"
#include "array.au3"
#include <Date.au3>
#include <Timers.au3>
#include <GuiComboBox.au3>
#include <GuiListView.au3>
#include <GuiEdit.au3>
#include <file.au3>
;#include <IE.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>

 

 

 

@edit

poza tym przyda się wiedzieć, jak odczytać poprawną linie, jakby komuś innemu wyskoczył błąd, i mial tylko ssa

Opublikowano

@up2

bosh, wiem, tylko że jak szukam lini na której ten błąd wyskakuje

@up

to ja się pytam jak tą linie znaleźć

kod z takimi samymi parametrami dziala poprawnie(nieskompilowany

 

nie wiem czy to ma jakiekolwiek znaczenie ale trzymaj

 

 

#include <Constants.au3>
#include <Misc.au3>
#include "WinHTTP.au3"
#include "string.au3"
#include "array.au3"
#include <Date.au3>
#include <Timers.au3>
#include <GuiComboBox.au3>
#include <GuiListView.au3>
#include <GuiEdit.au3>
#include <file.au3>
;#include <IE.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>

 

 

Może głupie ale...

Daj zmienną i co kilka linijek ToolTip'a i jej zwiększenie. No i będziesz miał mniej więcej określony przedział.

Opublikowano

I dlatego wolę unikać include'ów i pisać wszystkie dodatkowe funkcje o ile się da samemu... Jak się czasami coś prawie dobrze wpisze do niektórych funkcji z include'ów, ale jednak się jakiś malutki błąd znajdzie, to nie zwracają errora tylko jest błąd programu. Właśnie często taki. O ile dobrze pamiętam, miałem coś takiego z bibliotekami array.au3 i misc.au3.

Spróbuj skompilować zdekompilowany kod i wtedy włączyć, jak wywali to będziesz miał 100% pewności, która linia.

Law of Revelation: The hidden flaw never remains hidden.

Opublikowano

Kod juz naprawilem.

Tylko chciałbym wiedzieć jak odczytywać tą linie

aby blad zwracal linie ktora jest zjebana w skrypcie

@edit

chybamusi się jakoś dać, bo chyba bezsensu by było pokazywanie errorów, a nieznanej lini...

Opublikowano

No to mówię, jak skompilujesz to co Ci dał dekompilator, to nie będzie include'ów i ta linia będzie pokazana w błędzie.

Law of Revelation: The hidden flaw never remains hidden.

Opublikowano

znalazłem rozwiązanie z obfuscatorem, lecz potem przeczytałem że trzeba mieć nowego au3, a za chuja nie bede sciagal nowego bo jest do dupy

 

napisałem na szybko kod z błędem, zdekompilowałem błąd był o kilka lini za daleko, lecz po usunieciu @crlfów HAJS SIE ZGADZA

http://scr.hu/0rby/pfic9

dzieki

Opublikowano

"Kod juz naprawilem.

Tylko chciałbym wiedzieć jak odczytywać tą linie"

 

Sumujesz liczbę linii wszystkich includów i odejmujesz. FileOpen + _FileCountLines będzie najszybciej - prosty skrypcik sobie można do tego zrobić.

Ale wcześniej upewniasz się, czy w jakiś sposób nie obfuscujesz kodu - bo takim obfuscem mi to właśnie śmierdzi. Wtedy nie masz pojęcia co zmienił obfuscator i żeby do tego dojść, musisz zdekompilować... Chyba nawet byłoby szybciej, niż z całym tym sumowaniem.

Ta sygnatura jest pusta.

Opublikowano

 

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <file.au3>
#include <string.au3>
#include <array.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 221, 74, 192, 114)
$Input1 = GUICtrlCreateInput("C:\Documents and Settings\all\Pulpit\ogamebot\Nowy folder (2)\Nowy AutoIt v3 Script.au3", 8, 8, 121, 21)
$Input2 = GUICtrlCreateInput("C:\Documents and Settings\all\Pulpit\ogamebot\Nowy folder (2)\myscript.au3", 8, 32, 121, 21)
$Button1 = GUICtrlCreateButton("Button1", 136, 8, 75, 25)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$aha = GUICtrlRead($Input1)
$countlines = _FileCountLines($aha)
ConsoleWrite($countlines & @CRLF)
$liczbalini = 0
For $i = 1 To $countlines
If StringInStr(FileReadLine($aha, $i), "#include") Then
$first = 0
$readline = FileReadLine($aha, $i)
$first = _StringBetween($readline, '"', '"')
If Not IsArray($first) Then $first = _StringBetween($readline, '<', '>')
If IsArray($first) Then
ConsoleWrite("Czytam " & $first[0] & @CRLF)
$patch = "C:\Program Files\AutoIt3\Include\" & $first[0]
Local $fileinarray[_FileCountLines($patch)]
$x = 1
$tablica = 0
Do
$readed = FileReadLine($patch, $x)
If Not ($readed = "") And Not (StringLeft($readed, 1) = ";") Then
$moszna = 1
If StringInStr($readed, ";") Then
;consolewrite($x & " linia " & $readed & " " & stringinstr($readed,";") & @crlf)
$readed = StringReplace(StringReplace($readed, ' ', ""), " ", "")
If StringLeft($readed, StringInStr($readed, ";") - 1) = "" Then $moszna = 0
EndIf
If $moszna = 1 Then
$fileinarray[$tablica] = $readed
$tablica += 1
EndIf
EndIf
$x += 1
Until $x >= _FileCountLines($patch)
_ArrayDisplay($fileinarray)
For $j = UBound($fileinarray) - 1 To 0 Step -1
If Not $fileinarray[$j] = "" Then ExitLoop
Next

$inpud2 = GUICtrlRead($Input2)
For $w = 0 To $j
FileWriteLine($inpud2, $fileinarray[$w])
Next

Else
ConsoleWrite($i & " cos zjebane w chuj" & @CRLF)
EndIf
Else
$inpud2 = GUICtrlRead($Input2)
FileWriteLine($inpud2, FileReadLine($aha, $i))
EndIf
Next
EndSwitch
WEnd

 

1input to input

2input to output

podlicza linie, dobrze, lecz musiałbym ten kod pokroić na funkcje, bo zapomniałem o tym że w includach są includy xD

wiem że zrobiłem strasznego muła, ale nie miałem innego pomysłu

muli ale trybi i chuj :D(będzie jak będzie sprawdzało includy w includach) bo niestety, przy dekompilowaniu zostawia puste @crlfy które trza usuwać + deko rozkurwia troche kod, duże zmienne

kod który uruchamiałem na screenie niżej to

 

#include <array.au3>
global $nick = $nick[0]

http://scr.hu/0rby/boupo

Opublikowano

Weź mnie nie załamuj... Wystarczy zrobić z fileopen i przyspieszy z 10-krotnie...

Law of Revelation: The hidden flaw never remains hidden.

Opublikowano

tak? a kto niby usunie puste linie i komentarze nie usuwając kodu? nie myśl że będę sam napierdalal i kasował :|

jak nie wierzysz to sam spróbuj, i wklej kod, co ci szkodzi, jak to tylko fileopen

Opublikowano

Nie widzę zbyt dużego problemu, ale ten kod, co dałeś zawsze, na każdym skrypcie mi wywala Array variable subscript badly formatted.: Local $fileinarray[_FileCountLines($patch)]

Law of Revelation: The hidden flaw never remains hidden.

Opublikowano

Uznałem, że nikt nie używa stringu "#cs" ani "#ce", bo inaczej nie pójdzie. Ty też tego nie wziąłeś pod uwagę, ani tego, że ktoś może użyć stringu "#include". Nie wziąłeś też pod uwagę tego, że ktoś może wstawić include'a kilka razy. Często też niektóre include'y załączają te, które użytkownik już załączył. I wtedy nie powinny być jeszcze raz kopiowane.

Proszę: (zmień sobie z powrotem na C:\Program Files\AutoIt3\Include\)

 


#include <String.au3>
#include <Array.au3>
#include <File.au3>
$Form1 = GUICreate("Form1", 221, 94, 192, 114)
$Input1 = GUICtrlCreateInput("F:\TuneUp2.au3", 8, 8, 121, 21)
$Input2 = GUICtrlCreateInput("F:\Edited.txt", 8, 32, 121, 21)
$Button1 = GUICtrlCreateButton("OK", 136, 8, 75, 25)
GUISetState()
Sleep(1000)
Global $odczytane[1], $dozapisu
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
$patch=GUICtrlRead($Input1)
FileDelete(GUICtrlRead($Input2))
FileWrite(GUICtrlRead($Input2), "")
If Not FileExists($patch) Then Exit
Local $guhfsefwjd
_FileReadToArray($patch, $guhfsefwjd)
If @error Then Exit
Czytaj($guhfsefwjd)
FileWrite(GUICtrlRead($Input2), $dozapisu)
ConsoleWrite("Zakończono"& @CRLF)
Exit
EndSwitch
WEnd

Func Czytaj($afile)
Local $czytaj, $noread=False
For $licz=1 To $afile[0]
If StringInStr($afile[$licz], "#ce") Then $noread=False
If StringInStr($afile[$licz], "#cs") Then $noread=True
If $noread Or StringStripWS($afile[$licz], 8)="" Or StringLeft($afile[$licz], 1)=";" Then ContinueLoop
If StringLower(StringLeft(StringStripWS($afile[$licz], 1), 8))="#include" Then
$include=Znajdz($afile[$licz])
_ArraySearch($odczytane, $include)
If Not @error Then ContinueLoop
ConsoleWrite("Załączanie: " & $include & "... "& @CRLF)
_ArrayAdd($odczytane, $include)
Local $sinfifsej
_FileReadToArray("F:\AutoIt\AutoIt3\Include\"& $include, $sinfifsej)
If @error Then
ConsoleWrite("Nie wykryto " & $include & @CRLF)
ContinueLoop
EndIf
Czytaj($sinfifsej)
ConsoleWrite("Załączono"& @CRLF)
Else
$dozapisu&=$afile[$licz] & @CRLF
EndIf
Next
EndFunc

Func Znajdz($y)
$x=StringInStr($y, """")
If Not $x Then $x=StringInStr($y, "'")
If Not $x Then $x=StringInStr($y, "<")
$z=StringInStr($y, '"', Default, 2)
If Not $z Then $z=StringInStr($y, "'", Default, 2)
If Not $z Then $z=StringInStr($y, ">")
Return StringMid($y, $x+1, $z-$x-1)
EndFunc

Podczas gdy twój kod potrzebuje na to pół minuty, mój robi to w ułamku sekundy...

Law of Revelation: The hidden flaw never remains hidden.

Opublikowano

no tak, pominąłem dużo rzeczy bo pisałem na szybko simple code,

Ty też tego nie wziąłeś pod uwagę, ani tego, że ktoś może użyć stringu "#include"

no jak to nie? :D

ale mimo wszystko, zauważyłeś sam że przez fileopen nie jest tak łatwo

sam zapomniałem że istnieje taka funkcja jak "_FileReadToArray"

 

chociaż jak będzie mi się nudziło to napisze ten programik już dopieszczony

poza tym nvm, pisałem ten kod zajebany, to przecież oczywiste że nie wyszła by z tego perełka :D(kod pisałem za jednym za machem, dopiero na koniec zkompilowałem, i sam zobaczyłem że chujowo to zrobiłem)

 

@edit

sprawdziłem pod względem czy jest użytkowny, i jednak nie, nie usuwa komentarzy

http://screenshooter...7289845/rhokuwq

Opublikowano

Jeśli cała linia to komentarz, to usuwa. Usuwa też bloki komentarzy(u Ciebie tego nie widzę) A jak komentarz jest w linii, w której jest kawałek skryptu, to to nie wpływa na numerowanie linii. Można by jeszcze dodać szukanie include'ów w folderze z plikiem au3, bo w sumie tak też można dodawać.

Law of Revelation: The hidden flaw never remains hidden.

Opublikowano

@up

twój kod nie usuwa komentarzy, pokazałem ci ssa

wygląda to jakby twój kod tylko usuwał @crlfy i dodawał biblioteki

http://screenshooter...7289845/qnmdotg

pociąłem kod, i zastąpiłem przeszukiwanie/tworzenie tablicy funkcjami z array.au3

 

#include <String.au3>
#include <Array.au3>
#include <File.au3>
#include <Timers.au3>
$Form1 = GUICreate("Form1", 221, 94, 192, 114)
$Input1 = GUICtrlCreateInput("C:\Documents and Settings\all\Pulpit\ogamebot\Nowy folder (2)\Nowy AutoIt v3 Script (3).au3", 8, 8, 121, 21)
$Input2 = GUICtrlCreateInput("C:\Documents and Settings\all\Pulpit\ogamebot\Nowy folder (2)\myscript.au3", 8, 32, 121, 21)
$Input3 = GUICtrlCreateInput("C:\Program Files\AutoIt3\Include\", 8, 52, 121, 21)
$Button1 = GUICtrlCreateButton("OK", 136, 8, 75, 25)
GUISetState()
Global $glownyplikarray,$pliczeg,$includearray,$ban[1],$sublinia
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
$timer = TimerInit()
_FileReadToArray(guictrlread($Input1), $glownyplikarray)
consolewrites("Otwieram glowny plik")
szukajpileczki($glownyplikarray)
consolewrites(TimerDiff($timer))
EndSwitch
WEnd
func consolewrites($akuku)
consolewrite($akuku & @crlf)
EndFunc
func szukajpileczki($aha)
for $i = 1 to $aha[0]
if stringinstr($aha[$i],"#include") and not stringinstr($aha[$i],"#include-once") Then
$tablica = _StringBetween($aha[$i],"<",">")
if not isarray($tablica) then $tablica = _StringBetween($aha[$i],'"','"')
if _ArraySearch($ban,$tablica[0]) = -1 Then
_arrayadd($ban,$tablica[0])
consolewrites("Otwieram include o nazwie " & $tablica[0])
if not _filereadtoarray(guictrlread($input3) & $tablica[0],$includearray) then _filereadtoarray(@scriptdir & "\" & $tablica[0],$includearray)
szukajpileczki($includearray)
Else
consolewrites("Powturzenie sie wczytywania pliku " & $tablica[0])
EndIf
Else
$linia = $aha[$i] ;stringreplace(stringreplace($aha[$i]," ","")," ","")
if stringinstr($linia," ") or stringinstr($linia," ") Then $sublinia = stringreplace(stringreplace(stringreplace($linia," ","")," ",""),"#cs","")
$stringinstr = stringinstr($linia,";")
if not $stringinstr and not stringinstr($linia,"#include-once") and not $linia = "" and not $sublinia = "" and not stringinstr($linia,'#Region') and not stringinstr($linia,"#AutoIt3") and not stringinstr($linia,"#Obfuscator")and not stringinstr($linia,"#EndRegion")Then
if stringinstr($linia,"_") = stringlen($linia) Then
$pliczeg &= stringreplace($linia,"_","")
Else
$pliczeg &= $linia & @crlf
EndIf

elseif($stringinstr and not stringinstr($linia,"#include-once")and not stringinstr($linia,'#Region') and not stringinstr($linia,"#AutoIt3")and not stringinstr($linia,"#Obfuscator")and not stringinstr($linia,"#EndRegion")) Then
$linia = stringleft($linia,stringinstr($linia,";")-1)
if stringinstr($linia," ") or stringinstr($linia," ") Then $sublinia = stringreplace(stringreplace(stringreplace($linia," ","")," ",""),"#cs","")
if not $linia = "" and not $sublinia = "" then
if stringinstr($linia,"_") = stringlen($linia)Then
$pliczeg &= stringreplace($linia,"_","")
Else
$pliczeg &= $linia & @crlf
EndIf
EndIf
EndIf
EndIf
Next
FileDelete(guictrlread($input2))
filewrite(guictrlread($input2),$pliczeg)
EndFunc

rozkurwia znaczniki takie jak _,cs,ce,#include-once,#region,#endregion,#obfuscator,#autoit3

nie otwiera powtórnie bibliotek

jak nie znadzie bibli w folderze podanym w input3, przeszuka folder ze skryptem

usuwa komentarze(całe linie i te obok funkcji)

usuwa puste linie

i co ważne działa :D

http://screenshooter...7289845/ffumenh

  • 1 miesiąc temu...
Opublikowano

Sorry za odkop, ale potrzebna pomoc.

#include <String.au3>
#include <File.au3>

MsgBox(0,"",""

 

W utworzonym pliku przez Twój skrypt, błąd znajduje się w 712 linijce.

Po odpaleniu skompilowanego programu pokazuje 637 linijkę.

Dlaczego Twój skrypt wyświetla błędną linijkę?
Może ja coś źle robię?

Proszę o pomoc. :)

Opublikowano

Twój program:


Global Const $FC_NOOVERWRITE = 0
Global Const $FC_OVERWRITE = 1
Global Const $FT_MODIFIED = 0
Global Const $FT_CREATED = 1
Global Const $FT_ACCESSED = 2
Global Const $FO_READ = 0
Global Const $FO_APPEND = 1
Global Const $FO_OVERWRITE = 2
Global Const $FO_BINARY = 16
Global Const $FO_UNICODE = 32
Global Const $FO_UTF16_LE = 32
Global Const $FO_UTF16_BE = 64
Global Const $FO_UTF8 = 128
Global Const $FO_UTF8_NOBOM = 256
Global Const $EOF = -1
Global Const $FD_FILEMUSTEXIST = 1
Global Const $FD_PATHMUSTEXIST = 2
Global Const $FD_MULTISELECT = 4
Global Const $FD_PROMPTCREATENEW = 8
Global Const $FD_PROMPTOVERWRITE = 16
Global Const $CREATE_NEW = 1
Global Const $CREATE_ALWAYS = 2
Global Const $OPEN_EXISTING = 3
Global Const $OPEN_ALWAYS = 4
Global Const $TRUNCATE_EXISTING = 5
Global Const $INVALID_SET_FILE_POINTER = -1
Global Const $FILE_BEGIN = 0
Global Const $FILE_CURRENT = 1
Global Const $FILE_END = 2
Global Const $FILE_ATTRIBUTE_READONLY = 0x00000001
Global Const $FILE_ATTRIBUTE_HIDDEN = 0x00000002
Global Const $FILE_ATTRIBUTE_SYSTEM = 0x00000004
Global Const $FILE_ATTRIBUTE_DIRECTORY = 0x00000010
Global Const $FILE_ATTRIBUTE_ARCHIVE = 0x00000020
Global Const $FILE_ATTRIBUTE_DEVICE = 0x00000040
Global Const $FILE_ATTRIBUTE_NORMAL = 0x00000080
Global Const $FILE_ATTRIBUTE_TEMPORARY = 0x00000100
Global Const $FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200
Global Const $FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400
Global Const $FILE_ATTRIBUTE_COMPRESSED = 0x00000800
Global Const $FILE_ATTRIBUTE_OFFLINE = 0x00001000
Global Const $FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000
Global Const $FILE_ATTRIBUTE_ENCRYPTED = 0x00004000
Global Const $FILE_SHARE_READ = 0x00000001
Global Const $FILE_SHARE_WRITE = 0x00000002
Global Const $FILE_SHARE_DELETE = 0x00000004
Global Const $GENERIC_ALL = 0x10000000
Global Const $GENERIC_EXECUTE = 0x20000000
Global Const $GENERIC_WRITE = 0x40000000
Global Const $GENERIC_READ = 0x80000000
Func _FileCountLines($sFilePath)
Local $hFile = FileOpen($sFilePath, $FO_READ)
If $hFile = -1 Then Return SetError(1, 0, 0)
Local $sFileContent = StringStripWS(FileRead($hFile), 2)
FileClose($hFile)
Local $aTmp
If StringInStr($sFileContent, @LF) Then
$aTmp = StringSplit(StringStripCR($sFileContent), @LF)
ElseIf StringInStr($sFileContent, @CR) Then
$aTmp = StringSplit($sFileContent, @CR)
Else
If StringLen($sFileContent) Then
Return 1
Else
Return SetError(2, 0, 0)
EndIf
EndIf
Return $aTmp[0]
EndFunc
Func _FileCreate($sFilePath)
Local $hOpenFile = FileOpen($sFilePath, $FO_OVERWRITE)
If $hOpenFile = -1 Then Return SetError(1, 0, 0)
Local $hWriteFile = FileWrite($hOpenFile, "")
FileClose($hOpenFile)
If $hWriteFile = -1 Then Return SetError(2, 0, 0)
Return 1
EndFunc
Func _FileListToArray($sPath, $sFilter = "*", $iFlag = 0)
Local $hSearch, $sFile, $sFileList, $sDelim = "|"
$sPath = StringRegExpReplace($sPath, "[\\/]+\z", "") & "\"
If Not FileExists($sPath) Then Return SetError(1, 1, "")
If StringRegExp($sFilter, "[\\/:><\|]|(?s)\A\s*\z") Then Return SetError(2, 2, "")
If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, "")
$hSearch = FileFindFirstFile($sPath & $sFilter)
If @error Then Return SetError(4, 4, "")
While 1
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
If ($iFlag + @extended = 2) Then ContinueLoop
$sFileList &= $sDelim & $sFile
WEnd
FileClose($hSearch)
If Not $sFileList Then Return SetError(4, 4, "")
Return StringSplit(StringTrimLeft($sFileList, 1), "|")
EndFunc
Func _FilePrint($s_File, $i_Show = @SW_HIDE)
Local $a_Ret = DllCall("shell32.dll", "int", "ShellExecuteW", _
"hwnd", 0, "wstr", "print", "wstr", $s_File, _
"wstr", "", "wstr", "", "int", $i_Show)
If @error Then Return SetError(@error, @extended, 0)
If $a_Ret[0] <= 32 Then Return SetError(10, $a_Ret[0], 0)
Return 1
EndFunc
Func _FileReadToArray($sFilePath, ByRef $aArray)
Local $hFile = FileOpen($sFilePath, $FO_READ)
If $hFile = -1 Then Return SetError(1, 0, 0)

Local $aFile = FileRead($hFile, FileGetSize($sFilePath))

If StringRight($aFile, 1) = @LF Then $aFile = StringTrimRight($aFile, 1)
If StringRight($aFile, 1) = @CR Then $aFile = StringTrimRight($aFile, 1)
FileClose($hFile)
If StringInStr($aFile, @LF) Then
$aArray = StringSplit(StringStripCR($aFile), @LF)
ElseIf StringInStr($aFile, @CR) Then
$aArray = StringSplit($aFile, @CR)
Else
If StringLen($aFile) Then
Dim $aArray[2] = [1, $aFile]
Else
Return SetError(2, 0, 0)
EndIf
EndIf
Return 1
EndFunc
Func _FileWriteFromArray($File, $a_Array, $i_Base = 0, $i_UBound = 0, $s_Delim = "|")

If Not IsArray($a_Array) Then Return SetError(2, 0, 0)
Local $iDims = UBound($a_Array, 0)
If $iDims > 2 Then Return SetError(4, 0, 0)

Local $last = UBound($a_Array) - 1
If $i_UBound < 1 Or $i_UBound > $last Then $i_UBound = $last
If $i_Base < 0 Or $i_Base > $last Then $i_Base = 0

Local $hFile
If IsString($File) Then
$hFile = FileOpen($File, $FO_OVERWRITE)
Else
$hFile = $File
EndIf
If $hFile = -1 Then Return SetError(1, 0, 0)

Local $ErrorSav = 0
Switch $iDims
Case 1
For $x = $i_Base To $i_UBound
If FileWrite($hFile, $a_Array[$x] & @CRLF) = 0 Then
$ErrorSav = 3
ExitLoop
EndIf
Next
Case 2
Local $s_Temp
For $x = $i_Base To $i_UBound
$s_Temp = $a_Array[$x][0]
For $y = 1 To $iDims
$s_Temp &= $s_Delim & $a_Array[$x][$y]
Next
If FileWrite($hFile, $s_Temp & @CRLF) = 0 Then
$ErrorSav = 3
ExitLoop
EndIf
Next
EndSwitch

If IsString($File) Then FileClose($hFile)

If $ErrorSav Then Return SetError($ErrorSav, 0, 0)
Return 1
EndFunc
Func _FileWriteLog($sLogPath, $sLogMsg, $iFlag = -1)
Local $hOpenFile = $sLogPath, $iOpenMode = $FO_APPEND
Local $sDateNow = @YEAR & "-" & @MON & "-" & @MDAY
Local $sTimeNow = @HOUR & ":" & @MIN & ":" & @SEC
Local $sMsg = $sDateNow & " " & $sTimeNow & " : " & $sLogMsg
If $iFlag <> -1 Then
$sMsg &= @CRLF & FileRead($sLogPath)
$iOpenMode = $FO_OVERWRITE
EndIf

If IsString($sLogPath) Then
$hOpenFile = FileOpen($sLogPath, $iOpenMode)
If $hOpenFile = -1 Then
Return SetError(1, 0, 0)
EndIf
EndIf
Local $iReturn = FileWriteLine($hOpenFile, $sMsg)

If IsString($sLogPath) Then
$iReturn = FileClose($hOpenFile)
EndIf
If $iReturn <= 0 Then
Return SetError(2, $iReturn, 0)
EndIf
Return $iReturn
EndFunc
Func _FileWriteToLine($sFile, $iLine, $sText, $fOverWrite = 0)
If $iLine <= 0 Then Return SetError(4, 0, 0)
If Not IsString($sText) Then
$sText = String($sText)
If $sText = "" Then Return SetError(6, 0, 0)
EndIf
If $fOverWrite <> 0 And $fOverWrite <> 1 Then Return SetError(5, 0, 0)
If Not FileExists($sFile) Then Return SetError(2, 0, 0)
Local $sRead_File = FileRead($sFile)
Local $aSplit_File = StringSplit(StringStripCR($sRead_File), @LF)
If UBound($aSplit_File) < $iLine Then Return SetError(1, 0, 0)
Local $iEncoding = FileGetEncoding($sFile)
Local $hFile = FileOpen($sFile, $iEncoding + $FO_OVERWRITE)
If $hFile = -1 Then Return SetError(3, 0, 0)
$sRead_File = ""
For $i = 1 To $aSplit_File[0]
If $i = $iLine Then
If $fOverWrite = 1 Then
If $sText <> '' Then $sRead_File &= $sText & @CRLF
Else
$sRead_File &= $sText & @CRLF & $aSplit_File[$i] & @CRLF
EndIf
ElseIf $i < $aSplit_File[0] Then
$sRead_File &= $aSplit_File[$i] & @CRLF
ElseIf $i = $aSplit_File[0] Then
$sRead_File &= $aSplit_File[$i]
EndIf
Next
FileWrite($hFile, $sRead_File)
FileClose($hFile)
Return 1
EndFunc
Func _PathFull($sRelativePath, $sBasePath = @WorkingDir)
If Not $sRelativePath Or $sRelativePath = "." Then Return $sBasePath

Local $sFullPath = StringReplace($sRelativePath, "/", "\")
Local Const $sFullPathConst = $sFullPath
Local $sPath
Local $bRootOnly = StringLeft($sFullPath, 1) = "\" And StringMid($sFullPath, 2, 1) <> "\"



For $i = 1 To 2
$sPath = StringLeft($sFullPath, 2)
If $sPath = "\\" Then
$sFullPath = StringTrimLeft($sFullPath, 2)
Local $nServerLen = StringInStr($sFullPath, "\") - 1
$sPath = "\\" & StringLeft($sFullPath, $nServerLen)
$sFullPath = StringTrimLeft($sFullPath, $nServerLen)
ExitLoop
ElseIf StringRight($sPath, 1) = ":" Then
$sFullPath = StringTrimLeft($sFullPath, 2)
ExitLoop
Else
$sFullPath = $sBasePath & "\" & $sFullPath
EndIf
Next



If $i = 3 Then Return ""




If StringLeft($sFullPath, 1) <> "\" Then
If StringLeft($sFullPathConst, 2) = StringLeft($sBasePath, 2) Then
$sFullPath = $sBasePath & "\" & $sFullPath
Else
$sFullPath = "\" & $sFullPath
EndIf
EndIf

Local $aTemp = StringSplit($sFullPath, "\")
Local $aPathParts[$aTemp[0]], $j = 0
For $i = 2 To $aTemp[0]
If $aTemp[$i] = ".." Then
If $j Then $j -= 1
ElseIf Not ($aTemp[$i] = "" And $i <> $aTemp[0]) And $aTemp[$i] <> "." Then
$aPathParts[$j] = $aTemp[$i]
$j += 1
EndIf
Next


$sFullPath = $sPath
If Not $bRootOnly Then
For $i = 0 To $j - 1
$sFullPath &= "\" & $aPathParts[$i]
Next
Else
$sFullPath &= $sFullPathConst

If StringInStr($sFullPath, "..") Then $sFullPath = _PathFull($sFullPath)
EndIf

While StringInStr($sFullPath, ".\")
$sFullPath = StringReplace($sFullPath, ".\", "\")
WEnd
Return $sFullPath
EndFunc
Func _PathGetRelative($sFrom, $sTo)
If StringRight($sFrom, 1) <> "\" Then $sFrom &= "\"
If StringRight($sTo, 1) <> "\" Then $sTo &= "\"
If $sFrom = $sTo Then Return SetError(1, 0, StringTrimRight($sTo, 1))
Local $asFrom = StringSplit($sFrom, "\")
Local $asTo = StringSplit($sTo, "\")
If $asFrom[1] <> $asTo[1] Then Return SetError(2, 0, StringTrimRight($sTo, 1))

Local $i = 2
Local $iDiff = 1
While 1
If $asFrom[$i] <> $asTo[$i] Then
$iDiff = $i
ExitLoop
EndIf
$i += 1
WEnd
$i = 1
Local $sRelPath = ""
For $j = 1 To $asTo[0]
If $i >= $iDiff Then
$sRelPath &= "\" & $asTo[$i]
EndIf
$i += 1
Next
$sRelPath = StringTrimLeft($sRelPath, 1)
$i = 1
For $j = 1 To $asFrom[0]
If $i > $iDiff Then
$sRelPath = "..\" & $sRelPath
EndIf
$i += 1
Next
If StringRight($sRelPath, 1) == "\" Then $sRelPath = StringTrimRight($sRelPath, 1)
Return $sRelPath
EndFunc
Func _PathMake($szDrive, $szDir, $szFName, $szExt)


If StringLen($szDrive) Then
If Not (StringLeft($szDrive, 2) = "\\") Then $szDrive = StringLeft($szDrive, 1) & ":"
EndIf

If StringLen($szDir) Then
If Not (StringRight($szDir, 1) = "\") And Not (StringRight($szDir, 1) = "/") Then $szDir = $szDir & "\"
EndIf


If StringLen($szExt) Then
If Not (StringLeft($szExt, 1) = ".") Then $szExt = "." & $szExt
EndIf
Return $szDrive & $szDir & $szFName & $szExt
EndFunc
Func _PathSplit($szPath, ByRef $szDrive, ByRef $szDir, ByRef $szFName, ByRef $szExt)

Local $drive = ""
Local $dir = ""
Local $fname = ""
Local $ext = ""
Local $pos

Local $array[5]
$array[0] = $szPath

If StringMid($szPath, 2, 1) = ":" Then
$drive = StringLeft($szPath, 2)
$szPath = StringTrimLeft($szPath, 2)
ElseIf StringLeft($szPath, 2) = "\\" Then
$szPath = StringTrimLeft($szPath, 2)
$pos = StringInStr($szPath, "\")
If $pos = 0 Then $pos = StringInStr($szPath, "/")
If $pos = 0 Then
$drive = "\\" & $szPath
$szPath = ""
Else
$drive = "\\" & StringLeft($szPath, $pos - 1)
$szPath = StringTrimLeft($szPath, $pos - 1)
EndIf
EndIf

Local $nPosForward = StringInStr($szPath, "/", 0, -1)
Local $nPosBackward = StringInStr($szPath, "\", 0, -1)
If $nPosForward >= $nPosBackward Then
$pos = $nPosForward
Else
$pos = $nPosBackward
EndIf
$dir = StringLeft($szPath, $pos)
$fname = StringRight($szPath, StringLen($szPath) - $pos)

If StringLen($dir) = 0 Then $fname = $szPath
$pos = StringInStr($fname, ".", 0, -1)
If $pos Then
$ext = StringRight($fname, StringLen($fname) - ($pos - 1))
$fname = StringLeft($fname, $pos - 1)
EndIf

$szDrive = $drive
$szDir = $dir
$szFName = $fname
$szExt = $ext
$array[1] = $drive
$array[2] = $dir
$array[3] = $fname
$array[4] = $ext
Return $array
EndFunc
Func _ReplaceStringInFile($szFileName, $szSearchString, $szReplaceString, $fCaseness = 0, $fOccurance = 1)
Local $iRetVal = 0
Local $nCount, $sEndsWith

If StringInStr(FileGetAttrib($szFileName), "R") Then Return SetError(6, 0, -1)



Local $hFile = FileOpen($szFileName, $FO_READ)
If $hFile = -1 Then Return SetError(1, 0, -1)
Local $s_TotFile = FileRead($hFile, FileGetSize($szFileName))
If StringRight($s_TotFile, 2) = @CRLF Then
$sEndsWith = @CRLF
ElseIf StringRight($s_TotFile, 1) = @CR Then
$sEndsWith = @CR
ElseIf StringRight($s_TotFile, 1) = @LF Then
$sEndsWith = @LF
Else
$sEndsWith = ""
EndIf
Local $aFileLines = StringSplit(StringStripCR($s_TotFile), @LF)
FileClose($hFile)



Local $iEncoding = FileGetEncoding($szFileName)
Local $hWriteHandle = FileOpen($szFileName, $iEncoding + $FO_OVERWRITE)
If $hWriteHandle = -1 Then Return SetError(2, 0, -1)



For $nCount = 1 To $aFileLines[0]
If StringInStr($aFileLines[$nCount], $szSearchString, $fCaseness) Then
$aFileLines[$nCount] = StringReplace($aFileLines[$nCount], $szSearchString, $szReplaceString, 1 - $fOccurance, $fCaseness)
$iRetVal = $iRetVal + 1




If $fOccurance = 0 Then
$iRetVal = 1
ExitLoop
EndIf
EndIf
Next



For $nCount = 1 To $aFileLines[0] - 1
If FileWriteLine($hWriteHandle, $aFileLines[$nCount]) = 0 Then
FileClose($hWriteHandle)
Return SetError(3, 0, -1)
EndIf
Next

If $aFileLines[$nCount] <> "" Then FileWrite($hWriteHandle, $aFileLines[$nCount] & $sEndsWith)
FileClose($hWriteHandle)
Return $iRetVal
EndFunc
Func _TempFile($s_DirectoryName = @TempDir, $s_FilePrefix = "~", $s_FileExtension = ".tmp", $i_RandomLength = 7)

If IsKeyword($s_FilePrefix) Then $s_FilePrefix = "~"
If IsKeyword($s_FileExtension) Then $s_FileExtension = ".tmp"
If IsKeyword($i_RandomLength) Then $i_RandomLength = 7
If Not FileExists($s_DirectoryName) Then $s_DirectoryName = @TempDir
If Not FileExists($s_DirectoryName) Then $s_DirectoryName = @ScriptDir

If StringRight($s_DirectoryName, 1) <> "\" Then $s_DirectoryName = $s_DirectoryName & "\"

Local $s_TempName
Do
$s_TempName = ""
While StringLen($s_TempName) < $i_RandomLength
$s_TempName = $s_TempName & Chr(Random(97, 122, 1))
WEnd
$s_TempName = $s_DirectoryName & $s_FilePrefix & $s_TempName & $s_FileExtension
Until Not FileExists($s_TempName)
Return $s_TempName
EndFunc
Func _HexToString($strHex)
If StringLeft($strHex, 2) = "0x" Then Return BinaryToString($strHex)
Return BinaryToString("0x" & $strHex)
EndFunc
Func _StringBetween($s_String, $s_Start, $s_End, $v_Case = -1)

Local $s_case = ""
If $v_Case = Default Or $v_Case = -1 Then $s_case = "(?i)"

Local $s_pattern_escape = "(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)"
$s_Start = StringRegExpReplace($s_Start, $s_pattern_escape, "\\$1")
$s_End = StringRegExpReplace($s_End, $s_pattern_escape, "\\$1")

If $s_Start = "" Then $s_Start = "\A"

If $s_End = "" Then $s_End = "\z"
Local $a_ret = StringRegExp($s_String, "(?s)" & $s_case & $s_Start & "(.*?)" & $s_End, 3)
If @error Then Return SetError(1, 0, 0)
Return $a_ret
EndFunc
Func _StringEncrypt($i_Encrypt, $s_EncryptText, $s_EncryptPassword, $i_EncryptLevel = 1)
If $i_Encrypt <> 0 And $i_Encrypt <> 1 Then
SetError(1, 0, '')
ElseIf $s_EncryptText = '' Or $s_EncryptPassword = '' Then
SetError(1, 0, '')
Else
If Number($i_EncryptLevel) <= 0 Or Int($i_EncryptLevel) <> $i_EncryptLevel Then $i_EncryptLevel = 1
Local $v_EncryptModified
Local $i_EncryptCountH
Local $i_EncryptCountG
Local $v_EncryptSwap
Local $av_EncryptBox[256][2]
Local $i_EncryptCountA
Local $i_EncryptCountB
Local $i_EncryptCountC
Local $i_EncryptCountD
Local $i_EncryptCountE
Local $v_EncryptCipher
Local $v_EncryptCipherBy
If $i_Encrypt = 1 Then
For $i_EncryptCountF = 0 To $i_EncryptLevel Step 1
$i_EncryptCountG = ''
$i_EncryptCountH = ''
$v_EncryptModified = ''
For $i_EncryptCountG = 1 To StringLen($s_EncryptText)
If $i_EncryptCountH = StringLen($s_EncryptPassword) Then
$i_EncryptCountH = 1
Else
$i_EncryptCountH += 1
EndIf
$v_EncryptModified = $v_EncryptModified & Chr(BitXOR(Asc(StringMid($s_EncryptText, $i_EncryptCountG, 1)), Asc(StringMid($s_EncryptPassword, $i_EncryptCountH, 1)), 255))
Next
$s_EncryptText = $v_EncryptModified
$i_EncryptCountA = ''
$i_EncryptCountB = 0
$i_EncryptCountC = ''
$i_EncryptCountD = ''
$i_EncryptCountE = ''
$v_EncryptCipherBy = ''
$v_EncryptCipher = ''
$v_EncryptSwap = ''
$av_EncryptBox = ''
Local $av_EncryptBox[256][2]
For $i_EncryptCountA = 0 To 255
$av_EncryptBox[$i_EncryptCountA][1] = Asc(StringMid($s_EncryptPassword, Mod($i_EncryptCountA, StringLen($s_EncryptPassword)) + 1, 1))
$av_EncryptBox[$i_EncryptCountA][0] = $i_EncryptCountA
Next
For $i_EncryptCountA = 0 To 255
$i_EncryptCountB = Mod(($i_EncryptCountB + $av_EncryptBox[$i_EncryptCountA][0] + $av_EncryptBox[$i_EncryptCountA][1]), 256)
$v_EncryptSwap = $av_EncryptBox[$i_EncryptCountA][0]
$av_EncryptBox[$i_EncryptCountA][0] = $av_EncryptBox[$i_EncryptCountB][0]
$av_EncryptBox[$i_EncryptCountB][0] = $v_EncryptSwap
Next
For $i_EncryptCountA = 1 To StringLen($s_EncryptText)
$i_EncryptCountC = Mod(($i_EncryptCountC + 1), 256)
$i_EncryptCountD = Mod(($i_EncryptCountD + $av_EncryptBox[$i_EncryptCountC][0]), 256)
$i_EncryptCountE = $av_EncryptBox[Mod(($av_EncryptBox[$i_EncryptCountC][0] + $av_EncryptBox[$i_EncryptCountD][0]), 256)][0]
$v_EncryptCipherBy = BitXOR(Asc(StringMid($s_EncryptText, $i_EncryptCountA, 1)), $i_EncryptCountE)
$v_EncryptCipher &= Hex($v_EncryptCipherBy, 2)
Next
$s_EncryptText = $v_EncryptCipher
Next
Else
For $i_EncryptCountF = 0 To $i_EncryptLevel Step 1
$i_EncryptCountB = 0
$i_EncryptCountC = ''
$i_EncryptCountD = ''
$i_EncryptCountE = ''
$v_EncryptCipherBy = ''
$v_EncryptCipher = ''
$v_EncryptSwap = ''
$av_EncryptBox = ''
Local $av_EncryptBox[256][2]
For $i_EncryptCountA = 0 To 255
$av_EncryptBox[$i_EncryptCountA][1] = Asc(StringMid($s_EncryptPassword, Mod($i_EncryptCountA, StringLen($s_EncryptPassword)) + 1, 1))
$av_EncryptBox[$i_EncryptCountA][0] = $i_EncryptCountA
Next
For $i_EncryptCountA = 0 To 255
$i_EncryptCountB = Mod(($i_EncryptCountB + $av_EncryptBox[$i_EncryptCountA][0] + $av_EncryptBox[$i_EncryptCountA][1]), 256)
$v_EncryptSwap = $av_EncryptBox[$i_EncryptCountA][0]
$av_EncryptBox[$i_EncryptCountA][0] = $av_EncryptBox[$i_EncryptCountB][0]
$av_EncryptBox[$i_EncryptCountB][0] = $v_EncryptSwap
Next
For $i_EncryptCountA = 1 To StringLen($s_EncryptText) Step 2
$i_EncryptCountC = Mod(($i_EncryptCountC + 1), 256)
$i_EncryptCountD = Mod(($i_EncryptCountD + $av_EncryptBox[$i_EncryptCountC][0]), 256)
$i_EncryptCountE = $av_EncryptBox[Mod(($av_EncryptBox[$i_EncryptCountC][0] + $av_EncryptBox[$i_EncryptCountD][0]), 256)][0]
$v_EncryptCipherBy = BitXOR(Dec(StringMid($s_EncryptText, $i_EncryptCountA, 2)), $i_EncryptCountE)
$v_EncryptCipher = $v_EncryptCipher & Chr($v_EncryptCipherBy)
Next
$s_EncryptText = $v_EncryptCipher
$i_EncryptCountG = ''
$i_EncryptCountH = ''
$v_EncryptModified = ''
For $i_EncryptCountG = 1 To StringLen($s_EncryptText)
If $i_EncryptCountH = StringLen($s_EncryptPassword) Then
$i_EncryptCountH = 1
Else
$i_EncryptCountH += 1
EndIf
$v_EncryptModified &= Chr(BitXOR(Asc(StringMid($s_EncryptText, $i_EncryptCountG, 1)), Asc(StringMid($s_EncryptPassword, $i_EncryptCountH, 1)), 255))
Next
$s_EncryptText = $v_EncryptModified
Next
EndIf
Return $s_EncryptText
EndIf
EndFunc
Func _StringExplode($sString, $sDelimiter, $iLimit = 0)
If $iLimit > 0 Then

$sString = StringReplace($sString, $sDelimiter, Chr(0), $iLimit)

$sDelimiter = Chr(0)
ElseIf $iLimit < 0 Then

Local $iIndex = StringInStr($sString, $sDelimiter, 0, $iLimit)
If $iIndex Then

$sString = StringLeft($sString, $iIndex - 1)
EndIf
EndIf
Return StringSplit($sString, $sDelimiter, 3)
EndFunc
Func _StringInsert($s_String, $s_InsertString, $i_Position)
Local $i_Length, $s_Start, $s_End
If $s_String = "" Or (Not IsString($s_String)) Then
Return SetError(1, 0, $s_String)
ElseIf $s_InsertString = "" Or (Not IsString($s_String)) Then
Return SetError(2, 0, $s_String)
Else
$i_Length = StringLen($s_String)
If (Abs($i_Position) > $i_Length) Or (Not IsInt($i_Position)) Then
Return SetError(3, 0, $s_String)
EndIf
EndIf

If $i_Position = 0 Then
Return $s_InsertString & $s_String

ElseIf $i_Position > 0 Then
$s_Start = StringLeft($s_String, $i_Position)
$s_End = StringRight($s_String, $i_Length - $i_Position)
Return $s_Start & $s_InsertString & $s_End

ElseIf $i_Position < 0 Then
$s_Start = StringLeft($s_String, Abs($i_Length + $i_Position))
$s_End = StringRight($s_String, Abs($i_Position))
Return $s_Start & $s_InsertString & $s_End
EndIf
EndFunc
Func _StringProper($s_String)
Local $iX = 0
Local $CapNext = 1
Local $s_nStr = ""
Local $s_CurChar
For $iX = 1 To StringLen($s_String)
$s_CurChar = StringMid($s_String, $iX, 1)
Select
Case $CapNext = 1
If StringRegExp($s_CurChar, '[a-zA-ZŔ-˙šśžź]') Then
$s_CurChar = StringUpper($s_CurChar)
$CapNext = 0
EndIf
Case Not StringRegExp($s_CurChar, '[a-zA-ZŔ-˙šśžź]')
$CapNext = 1
Case Else
$s_CurChar = StringLower($s_CurChar)
EndSelect
$s_nStr &= $s_CurChar
Next
Return $s_nStr
EndFunc
Func _StringRepeat($sString, $iRepeatCount)



Local $sResult
Select
Case Not StringIsInt($iRepeatCount)
SetError(1)
Return ""
Case StringLen($sString) < 1
SetError(1)
Return ""
Case $iRepeatCount <= 0
SetError(1)
Return ""
Case Else
For $iCount = 1 To $iRepeatCount
$sResult &= $sString
Next
Return $sResult
EndSelect
EndFunc
Func _StringReverse($s_String)
Local $i_len = StringLen($s_String)
If $i_len < 1 Then Return SetError(1, 0, "")
Local $t_chars = DllStructCreate("char[" & $i_len + 1 & "]")
DllStructSetData($t_chars, 1, $s_String)
Local $a_rev = DllCall("msvcrt.dll", "ptr:cdecl", "_strrev", "struct*", $t_chars)
If @error Or $a_rev[0] = 0 Then Return SetError(2, 0, "")
Return DllStructGetData($t_chars, 1)
EndFunc
Func _StringToHex($strChar)
Return Hex(StringToBinary($strChar))
EndFunc
MsgBox(0,"",""

 

 

Zdekompilowany program:

 

i»?GLOBAL Const $FC_NOOVERWRITE = 0
Global Const $FC_OVERWRITE = 1
Global Const $FT_MODIFIED = 0
Global Const $FT_CREATED = 1
Global Const $FT_ACCESSED = 2
Global Const $FO_READ = 0
Global Const $FO_APPEND = 1
Global Const $FO_OVERWRITE = 2
Global Const $FO_BINARY = 16
Global Const $FO_UNICODE = 32
Global Const $FO_UTF16_LE = 32
Global Const $FO_UTF16_BE = 64
Global Const $FO_UTF8 = 128
Global Const $FO_UTF8_NOBOM = 256
Global Const $EOF = -1
Global Const $FD_FILEMUSTEXIST = 1
Global Const $FD_PATHMUSTEXIST = 2
Global Const $FD_MULTISELECT = 4
Global Const $FD_PROMPTCREATENEW = 8
Global Const $FD_PROMPTOVERWRITE = 16
Global Const $CREATE_NEW = 1
Global Const $CREATE_ALWAYS = 2
Global Const $OPEN_EXISTING = 3
Global Const $OPEN_ALWAYS = 4
Global Const $TRUNCATE_EXISTING = 5
Global Const $INVALID_SET_FILE_POINTER = -1
Global Const $FILE_BEGIN = 0
Global Const $FILE_CURRENT = 1
Global Const $FILE_END = 2
Global Const $FILE_ATTRIBUTE_READONLY = 1
Global Const $FILE_ATTRIBUTE_HIDDEN = 2
Global Const $FILE_ATTRIBUTE_SYSTEM = 4
Global Const $FILE_ATTRIBUTE_DIRECTORY = 16
Global Const $FILE_ATTRIBUTE_ARCHIVE = 32
Global Const $FILE_ATTRIBUTE_DEVICE = 64
Global Const $FILE_ATTRIBUTE_NORMAL = 128
Global Const $FILE_ATTRIBUTE_TEMPORARY = 256
Global Const $FILE_ATTRIBUTE_SPARSE_FILE = 512
Global Const $FILE_ATTRIBUTE_REPARSE_POINT = 1024
Global Const $FILE_ATTRIBUTE_COMPRESSED = 2048
Global Const $FILE_ATTRIBUTE_OFFLINE = 4096
Global Const $FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192
Global Const $FILE_ATTRIBUTE_ENCRYPTED = 16384
Global Const $FILE_SHARE_READ = 1
Global Const $FILE_SHARE_WRITE = 2
Global Const $FILE_SHARE_DELETE = 4
Global Const $GENERIC_ALL = 268435456
Global Const $GENERIC_EXECUTE = 536870912
Global Const $GENERIC_WRITE = 1073741824
Global Const $GENERIC_READ = -2147483648

Func _FILECOUNTLINES($SFILEPATH)
Local $HFILE = FileOpen($SFILEPATH, $FO_READ)
If $HFILE = -1 Then Return SetError(1, 0, 0)
Local $SFILECONTENT = StringStripWS(FileRead($HFILE), 2)
FileClose($HFILE)
Local $ATMP
If StringInStr($SFILECONTENT, @LF) Then
$ATMP = StringSplit(StringStripCR($SFILECONTENT), @LF)
ElseIf StringInStr($SFILECONTENT, @CR) Then
$ATMP = StringSplit($SFILECONTENT, @CR)
Else
If StringLen($SFILECONTENT) Then
Return 1
Else
Return SetError(2, 0, 0)
EndIf
EndIf
Return $ATMP[0]
EndFunc


Func _FILECREATE($SFILEPATH)
Local $HOPENFILE = FileOpen($SFILEPATH, $FO_OVERWRITE)
If $HOPENFILE = -1 Then Return SetError(1, 0, 0)
Local $HWRITEFILE = FileWrite($HOPENFILE, "")
FileClose($HOPENFILE)
If $HWRITEFILE = -1 Then Return SetError(2, 0, 0)
Return 1
EndFunc


Func _FILELISTTOARRAY($SPATH, $SFILTER = "*", $IFLAG = 0)
Local $HSEARCH, $SFILE, $SFILELIST, $SDELIM = "|"
$SPATH = StringRegExpReplace($SPATH, "[\\/]+\z", "") & "\"
If Not FileExists($SPATH) Then Return SetError(1, 1, "")
If StringRegExp($SFILTER, "[\\/:><\|]|(?s)\A\s*\z") Then Return SetError(2, 2, "")
If Not ($IFLAG = 0 Or $IFLAG = 1 Or $IFLAG = 2) Then Return SetError(3, 3, "")
$HSEARCH = FileFindFirstFile($SPATH & $SFILTER)
If @error Then Return SetError(4, 4, "")
While 1
$SFILE = FileFindNextFile($HSEARCH)
If @error Then ExitLoop
If ($IFLAG + @extended = 2) Then ContinueLoop
$SFILELIST &= $SDELIM & $SFILE
WEnd
FileClose($HSEARCH)
If Not $SFILELIST Then Return SetError(4, 4, "")
Return StringSplit(StringTrimLeft($SFILELIST, 1), "|")
EndFunc


Func _FILEPRINT($S_FILE, $I_SHOW = @SW_HIDE)
Local $A_RET = DllCall("shell32.dll", "int", "ShellExecuteW", "hwnd", 0, "wstr", "print", "wstr", $S_FILE, "wstr", "", "wstr", "", "int", $I_SHOW)
If @error Then Return SetError(@error, @extended, 0)
If $A_RET[0] <= 32 Then Return SetError(10, $A_RET[0], 0)
Return 1
EndFunc


Func _FILEREADTOARRAY($SFILEPATH, ByRef $AARRAY)
Local $HFILE = FileOpen($SFILEPATH, $FO_READ)
If $HFILE = -1 Then Return SetError(1, 0, 0)
Local $AFILE = FileRead($HFILE, FileGetSize($SFILEPATH))
If StringRight($AFILE, 1) = @LF Then $AFILE = StringTrimRight($AFILE, 1)
If StringRight($AFILE, 1) = @CR Then $AFILE = StringTrimRight($AFILE, 1)
FileClose($HFILE)
If StringInStr($AFILE, @LF) Then
$AARRAY = StringSplit(StringStripCR($AFILE), @LF)
ElseIf StringInStr($AFILE, @CR) Then
$AARRAY = StringSplit($AFILE, @CR)
Else
If StringLen($AFILE) Then
Dim $AARRAY[2] = [1, $AFILE]
Else
Return SetError(2, 0, 0)
EndIf
EndIf
Return 1
EndFunc


Func _FILEWRITEFROMARRAY($FILE, $A_ARRAY, $I_BASE = 0, $I_UBOUND = 0, $S_DELIM = "|")
If Not IsArray($A_ARRAY) Then Return SetError(2, 0, 0)
Local $IDIMS = UBound($A_ARRAY, 0)
If $IDIMS > 2 Then Return SetError(4, 0, 0)
Local $LAST = UBound($A_ARRAY) - 1
If $I_UBOUND < 1 Or $I_UBOUND > $LAST Then $I_UBOUND = $LAST
If $I_BASE < 0 Or $I_BASE > $LAST Then $I_BASE = 0
Local $HFILE
If IsString($FILE) Then
$HFILE = FileOpen($FILE, $FO_OVERWRITE)
Else
$HFILE = $FILE
EndIf
If $HFILE = -1 Then Return SetError(1, 0, 0)
Local $ERRORSAV = 0
Switch $IDIMS
Case 1
For $X = $I_BASE To $I_UBOUND
If FileWrite($HFILE, $A_ARRAY[$X] & @CRLF) = 0 Then
$ERRORSAV = 3
ExitLoop
EndIf
Next
Case 2
Local $S_TEMP
For $X = $I_BASE To $I_UBOUND
$S_TEMP = $A_ARRAY[$X][0]
For $Y = 1 To $IDIMS
$S_TEMP &= $S_DELIM & $A_ARRAY[$X][$Y]
Next
If FileWrite($HFILE, $S_TEMP & @CRLF) = 0 Then
$ERRORSAV = 3
ExitLoop
EndIf
Next
EndSwitch
If IsString($FILE) Then FileClose($HFILE)
If $ERRORSAV Then Return SetError($ERRORSAV, 0, 0)
Return 1
EndFunc


Func _FILEWRITELOG($SLOGPATH, $SLOGMSG, $IFLAG = -1)
Local $HOPENFILE = $SLOGPATH, $IOPENMODE = $FO_APPEND
Local $SDATENOW = @YEAR & "-" & @MON & "-" & @MDAY
Local $STIMENOW = @HOUR & ":" & @MIN & ":" & @SEC
Local $SMSG = $SDATENOW & " " & $STIMENOW & " : " & $SLOGMSG
If $IFLAG <> -1 Then
$SMSG &= @CRLF & FileRead($SLOGPATH)
$IOPENMODE = $FO_OVERWRITE
EndIf
If IsString($SLOGPATH) Then
$HOPENFILE = FileOpen($SLOGPATH, $IOPENMODE)
If $HOPENFILE = -1 Then
Return SetError(1, 0, 0)
EndIf
EndIf
Local $IRETURN = FileWriteLine($HOPENFILE, $SMSG)
If IsString($SLOGPATH) Then
$IRETURN = FileClose($HOPENFILE)
EndIf
If $IRETURN <= 0 Then
Return SetError(2, $IRETURN, 0)
EndIf
Return $IRETURN
EndFunc


Func _FILEWRITETOLINE($SFILE, $ILINE, $STEXT, $FOVERWRITE = 0)
If $ILINE <= 0 Then Return SetError(4, 0, 0)
If Not IsString($STEXT) Then
$STEXT = String($STEXT)
If $STEXT = "" Then Return SetError(6, 0, 0)
EndIf
If $FOVERWRITE <> 0 And $FOVERWRITE <> 1 Then Return SetError(5, 0, 0)
If Not FileExists($SFILE) Then Return SetError(2, 0, 0)
Local $SREAD_FILE = FileRead($SFILE)
Local $ASPLIT_FILE = StringSplit(StringStripCR($SREAD_FILE), @LF)
If UBound($ASPLIT_FILE) < $ILINE Then Return SetError(1, 0, 0)
Local $IENCODING = FILEGETENCODING($SFILE)
Local $HFILE = FileOpen($SFILE, $IENCODING + $FO_OVERWRITE)
If $HFILE = -1 Then Return SetError(3, 0, 0)
$SREAD_FILE = ""
For $I = 1 To $ASPLIT_FILE[0]
If $I = $ILINE Then
If $FOVERWRITE = 1 Then
If $STEXT <> "" Then $SREAD_FILE &= $STEXT & @CRLF
Else
$SREAD_FILE &= $STEXT & @CRLF & $ASPLIT_FILE[$I] & @CRLF
EndIf
ElseIf $I < $ASPLIT_FILE[0] Then
$SREAD_FILE &= $ASPLIT_FILE[$I] & @CRLF
ElseIf $I = $ASPLIT_FILE[0] Then
$SREAD_FILE &= $ASPLIT_FILE[$I]
EndIf
Next
FileWrite($HFILE, $SREAD_FILE)
FileClose($HFILE)
Return 1
EndFunc


Func _PATHFULL($SRELATIVEPATH, $SBASEPATH = @WorkingDir)
If Not $SRELATIVEPATH Or $SRELATIVEPATH = "." Then Return $SBASEPATH
Local $SFULLPATH = StringReplace($SRELATIVEPATH, "/", "\")
Local Const $SFULLPATHCONST = $SFULLPATH
Local $SPATH
Local $BROOTONLY = StringLeft($SFULLPATH, 1) = "\" And StringMid($SFULLPATH, 2, 1) <> "\"
For $I = 1 To 2
$SPATH = StringLeft($SFULLPATH, 2)
If $SPATH = "\\" Then
$SFULLPATH = StringTrimLeft($SFULLPATH, 2)
Local $NSERVERLEN = StringInStr($SFULLPATH, "\") - 1
$SPATH = "\\" & StringLeft($SFULLPATH, $NSERVERLEN)
$SFULLPATH = StringTrimLeft($SFULLPATH, $NSERVERLEN)
ExitLoop
ElseIf StringRight($SPATH, 1) = ":" Then
$SFULLPATH = StringTrimLeft($SFULLPATH, 2)
ExitLoop
Else
$SFULLPATH = $SBASEPATH & "\" & $SFULLPATH
EndIf
Next
If $I = 3 Then Return ""
If StringLeft($SFULLPATH, 1) <> "\" Then
If StringLeft($SFULLPATHCONST, 2) = StringLeft($SBASEPATH, 2) Then
$SFULLPATH = $SBASEPATH & "\" & $SFULLPATH
Else
$SFULLPATH = "\" & $SFULLPATH
EndIf
EndIf
Local $ATEMP = StringSplit($SFULLPATH, "\")
Local $APATHPARTS[$ATEMP[0]], $J = 0
For $I = 2 To $ATEMP[0]
If $ATEMP[$I] = ".." Then
If $J Then $J -= 1
ElseIf Not ($ATEMP[$I] = "" And $I <> $ATEMP[0]) And $ATEMP[$I] <> "." Then
$APATHPARTS[$J] = $ATEMP[$I]
$J += 1
EndIf
Next
$SFULLPATH = $SPATH
If Not $BROOTONLY Then
For $I = 0 To $J - 1
$SFULLPATH &= "\" & $APATHPARTS[$I]
Next
Else
$SFULLPATH &= $SFULLPATHCONST
If StringInStr($SFULLPATH, "..") Then $SFULLPATH = _PATHFULL($SFULLPATH)
EndIf
While StringInStr($SFULLPATH, ".\")
$SFULLPATH = StringReplace($SFULLPATH, ".\", "\")
WEnd
Return $SFULLPATH
EndFunc


Func _PATHGETRELATIVE($SFROM, $STO)
If StringRight($SFROM, 1) <> "\" Then $SFROM &= "\"
If StringRight($STO, 1) <> "\" Then $STO &= "\"
If $SFROM = $STO Then Return SetError(1, 0, StringTrimRight($STO, 1))
Local $ASFROM = StringSplit($SFROM, "\")
Local $ASTO = StringSplit($STO, "\")
If $ASFROM[1] <> $ASTO[1] Then Return SetError(2, 0, StringTrimRight($STO, 1))
Local $I = 2
Local $IDIFF = 1
While 1
If $ASFROM[$I] <> $ASTO[$I] Then
$IDIFF = $I
ExitLoop
EndIf
$I += 1
WEnd
$I = 1
Local $SRELPATH = ""
For $J = 1 To $ASTO[0]
If $I >= $IDIFF Then
$SRELPATH &= "\" & $ASTO[$I]
EndIf
$I += 1
Next
$SRELPATH = StringTrimLeft($SRELPATH, 1)
$I = 1
For $J = 1 To $ASFROM[0]
If $I > $IDIFF Then
$SRELPATH = "..\" & $SRELPATH
EndIf
$I += 1
Next
If StringRight($SRELPATH, 1) == "\" Then $SRELPATH = StringTrimRight($SRELPATH, 1)
Return $SRELPATH
EndFunc


Func _PATHMAKE($SZDRIVE, $SZDIR, $SZFNAME, $SZEXT)
If StringLen($SZDRIVE) Then
If Not (StringLeft($SZDRIVE, 2) = "\\") Then $SZDRIVE = StringLeft($SZDRIVE, 1) & ":"
EndIf
If StringLen($SZDIR) Then
If Not (StringRight($SZDIR, 1) = "\") And Not (StringRight($SZDIR, 1) = "/") Then $SZDIR = $SZDIR & "\"
EndIf
If StringLen($SZEXT) Then
If Not (StringLeft($SZEXT, 1) = ".") Then $SZEXT = "." & $SZEXT
EndIf
Return $SZDRIVE & $SZDIR & $SZFNAME & $SZEXT
EndFunc


Func _PATHSPLIT($SZPATH, ByRef $SZDRIVE, ByRef $SZDIR, ByRef $SZFNAME, ByRef $SZEXT)
Local $DRIVE = ""
Local $DIR = ""
Local $FNAME = ""
Local $EXT = ""
Local $POS
Local $ARRAY[5]
$ARRAY[0] = $SZPATH
If StringMid($SZPATH, 2, 1) = ":" Then
$DRIVE = StringLeft($SZPATH, 2)
$SZPATH = StringTrimLeft($SZPATH, 2)
ElseIf StringLeft($SZPATH, 2) = "\\" Then
$SZPATH = StringTrimLeft($SZPATH, 2)
$POS = StringInStr($SZPATH, "\")
If $POS = 0 Then $POS = StringInStr($SZPATH, "/")
If $POS = 0 Then
$DRIVE = "\\" & $SZPATH
$SZPATH = ""
Else
$DRIVE = "\\" & StringLeft($SZPATH, $POS - 1)
$SZPATH = StringTrimLeft($SZPATH, $POS - 1)
EndIf
EndIf
Local $NPOSFORWARD = StringInStr($SZPATH, "/", 0, -1)
Local $NPOSBACKWARD = StringInStr($SZPATH, "\", 0, -1)
If $NPOSFORWARD >= $NPOSBACKWARD Then
$POS = $NPOSFORWARD
Else
$POS = $NPOSBACKWARD
EndIf
$DIR = StringLeft($SZPATH, $POS)
$FNAME = StringRight($SZPATH, StringLen($SZPATH) - $POS)
If StringLen($DIR) = 0 Then $FNAME = $SZPATH
$POS = StringInStr($FNAME, ".", 0, -1)
If $POS Then
$EXT = StringRight($FNAME, StringLen($FNAME) - ($POS - 1))
$FNAME = StringLeft($FNAME, $POS - 1)
EndIf
$SZDRIVE = $DRIVE
$SZDIR = $DIR
$SZFNAME = $FNAME
$SZEXT = $EXT
$ARRAY[1] = $DRIVE
$ARRAY[2] = $DIR
$ARRAY[3] = $FNAME
$ARRAY[4] = $EXT
Return $ARRAY
EndFunc


Func _REPLACESTRINGINFILE($SZFILENAME, $SZSEARCHSTRING, $SZREPLACESTRING, $FCASENESS = 0, $FOCCURANCE = 1)
Local $IRETVAL = 0
Local $NCOUNT, $SENDSWITH
If StringInStr(FileGetAttrib($SZFILENAME), "R") Then Return SetError(6, 0, -1)
Local $HFILE = FileOpen($SZFILENAME, $FO_READ)
If $HFILE = -1 Then Return SetError(1, 0, -1)
Local $S_TOTFILE = FileRead($HFILE, FileGetSize($SZFILENAME))
If StringRight($S_TOTFILE, 2) = @CRLF Then
$SENDSWITH = @CRLF
ElseIf StringRight($S_TOTFILE, 1) = @CR Then
$SENDSWITH = @CR
ElseIf StringRight($S_TOTFILE, 1) = @LF Then
$SENDSWITH = @LF
Else
$SENDSWITH = ""
EndIf
Local $AFILELINES = StringSplit(StringStripCR($S_TOTFILE), @LF)
FileClose($HFILE)
Local $IENCODING = FILEGETENCODING($SZFILENAME)
Local $HWRITEHANDLE = FileOpen($SZFILENAME, $IENCODING + $FO_OVERWRITE)
If $HWRITEHANDLE = -1 Then Return SetError(2, 0, -1)
For $NCOUNT = 1 To $AFILELINES[0]
If StringInStr($AFILELINES[$NCOUNT], $SZSEARCHSTRING, $FCASENESS) Then
$AFILELINES[$NCOUNT] = StringReplace($AFILELINES[$NCOUNT], $SZSEARCHSTRING, $SZREPLACESTRING, 1 - $FOCCURANCE, $FCASENESS)
$IRETVAL = $IRETVAL + 1
If $FOCCURANCE = 0 Then
$IRETVAL = 1
ExitLoop
EndIf
EndIf
Next
For $NCOUNT = 1 To $AFILELINES[0] - 1
If FileWriteLine($HWRITEHANDLE, $AFILELINES[$NCOUNT]) = 0 Then
FileClose($HWRITEHANDLE)
Return SetError(3, 0, -1)
EndIf
Next
If $AFILELINES[$NCOUNT] <> "" Then FileWrite($HWRITEHANDLE, $AFILELINES[$NCOUNT] & $SENDSWITH)
FileClose($HWRITEHANDLE)
Return $IRETVAL
EndFunc


Func _TEMPFILE($S_DIRECTORYNAME = @TempDir, $S_FILEPREFIX = "~", $S_FILEEXTENSION = ".tmp", $I_RANDOMLENGTH = 7)
If IsKeyword($S_FILEPREFIX) Then $S_FILEPREFIX = "~"
If IsKeyword($S_FILEEXTENSION) Then $S_FILEEXTENSION = ".tmp"
If IsKeyword($I_RANDOMLENGTH) Then $I_RANDOMLENGTH = 7
If Not FileExists($S_DIRECTORYNAME) Then $S_DIRECTORYNAME = @TempDir
If Not FileExists($S_DIRECTORYNAME) Then $S_DIRECTORYNAME = @ScriptDir
If StringRight($S_DIRECTORYNAME, 1) <> "\" Then $S_DIRECTORYNAME = $S_DIRECTORYNAME & "\"
Local $S_TEMPNAME
Do
$S_TEMPNAME = ""
While StringLen($S_TEMPNAME) < $I_RANDOMLENGTH
$S_TEMPNAME = $S_TEMPNAME & Chr(Random(97, 122, 1))
WEnd
$S_TEMPNAME = $S_DIRECTORYNAME & $S_FILEPREFIX & $S_TEMPNAME & $S_FILEEXTENSION
Until Not FileExists($S_TEMPNAME)
Return $S_TEMPNAME
EndFunc


Func _HEXTOSTRING($STRHEX)
If StringLeft($STRHEX, 2) = "0x" Then Return BinaryToString($STRHEX)
Return BinaryToString("0x" & $STRHEX)
EndFunc


Func _STRINGBETWEEN($S_STRING, $S_START, $S_END, $V_CASE = -1)
Local $S_CASE = ""
If $V_CASE = Default Or $V_CASE = -1 Then $S_CASE = "(?i)"
Local $S_PATTERN_ESCAPE = "(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)"
$S_START = StringRegExpReplace($S_START, $S_PATTERN_ESCAPE, "\\$1")
$S_END = StringRegExpReplace($S_END, $S_PATTERN_ESCAPE, "\\$1")
If $S_START = "" Then $S_START = "\A"
If $S_END = "" Then $S_END = "\z"
Local $A_RET = StringRegExp($S_STRING, "(?s)" & $S_CASE & $S_START & "(.*?)" & $S_END, 3)
If @error Then Return SetError(1, 0, 0)
Return $A_RET
EndFunc


Func _STRINGENCRYPT($I_ENCRYPT, $S_ENCRYPTTEXT, $S_ENCRYPTPASSWORD, $I_ENCRYPTLEVEL = 1)
If $I_ENCRYPT <> 0 And $I_ENCRYPT <> 1 Then
SetError(1, 0, "")
ElseIf $S_ENCRYPTTEXT = "" Or $S_ENCRYPTPASSWORD = "" Then
SetError(1, 0, "")
Else
If Number($I_ENCRYPTLEVEL) <= 0 Or Int($I_ENCRYPTLEVEL) <> $I_ENCRYPTLEVEL Then $I_ENCRYPTLEVEL = 1
Local $V_ENCRYPTMODIFIED
Local $I_ENCRYPTCOUNTH
Local $I_ENCRYPTCOUNTG
Local $V_ENCRYPTSWAP
Local $AV_ENCRYPTBOX[256][2]
Local $I_ENCRYPTCOUNTA
Local $I_ENCRYPTCOUNTB
Local $I_ENCRYPTCOUNTC
Local $I_ENCRYPTCOUNTD
Local $I_ENCRYPTCOUNTE
Local $V_ENCRYPTCIPHER
Local $V_ENCRYPTCIPHERBY
If $I_ENCRYPT = 1 Then
For $I_ENCRYPTCOUNTF = 0 To $I_ENCRYPTLEVEL Step 1
$I_ENCRYPTCOUNTG = ""
$I_ENCRYPTCOUNTH = ""
$V_ENCRYPTMODIFIED = ""
For $I_ENCRYPTCOUNTG = 1 To StringLen($S_ENCRYPTTEXT)
If $I_ENCRYPTCOUNTH = StringLen($S_ENCRYPTPASSWORD) Then
$I_ENCRYPTCOUNTH = 1
Else
$I_ENCRYPTCOUNTH += 1
EndIf
$V_ENCRYPTMODIFIED = $V_ENCRYPTMODIFIED & Chr(BitXOR(Asc(StringMid($S_ENCRYPTTEXT, $I_ENCRYPTCOUNTG, 1)), Asc(StringMid($S_ENCRYPTPASSWORD, $I_ENCRYPTCOUNTH, 1)), 255))
Next
$S_ENCRYPTTEXT = $V_ENCRYPTMODIFIED
$I_ENCRYPTCOUNTA = ""
$I_ENCRYPTCOUNTB = 0
$I_ENCRYPTCOUNTC = ""
$I_ENCRYPTCOUNTD = ""
$I_ENCRYPTCOUNTE = ""
$V_ENCRYPTCIPHERBY = ""
$V_ENCRYPTCIPHER = ""
$V_ENCRYPTSWAP = ""
$AV_ENCRYPTBOX = ""
Local $AV_ENCRYPTBOX[256][2]
For $I_ENCRYPTCOUNTA = 0 To 255
$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][1] = Asc(StringMid($S_ENCRYPTPASSWORD, Mod($I_ENCRYPTCOUNTA, StringLen($S_ENCRYPTPASSWORD)) + 1, 1))
$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0] = $I_ENCRYPTCOUNTA
Next
For $I_ENCRYPTCOUNTA = 0 To 255
$I_ENCRYPTCOUNTB = Mod(($I_ENCRYPTCOUNTB + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0] + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][1]), 256)
$V_ENCRYPTSWAP = $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0]
$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0] = $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTB][0]
$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTB][0] = $V_ENCRYPTSWAP
Next
For $I_ENCRYPTCOUNTA = 1 To StringLen($S_ENCRYPTTEXT)
$I_ENCRYPTCOUNTC = Mod(($I_ENCRYPTCOUNTC + 1), 256)
$I_ENCRYPTCOUNTD = Mod(($I_ENCRYPTCOUNTD + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTC][0]), 256)
$I_ENCRYPTCOUNTE = $AV_ENCRYPTBOX[Mod(($AV_ENCRYPTBOX[$I_ENCRYPTCOUNTC][0] + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTD][0]), 256)][0]
$V_ENCRYPTCIPHERBY = BitXOR(Asc(StringMid($S_ENCRYPTTEXT, $I_ENCRYPTCOUNTA, 1)), $I_ENCRYPTCOUNTE)
$V_ENCRYPTCIPHER &= Hex($V_ENCRYPTCIPHERBY, 2)
Next
$S_ENCRYPTTEXT = $V_ENCRYPTCIPHER
Next
Else
For $I_ENCRYPTCOUNTF = 0 To $I_ENCRYPTLEVEL Step 1
$I_ENCRYPTCOUNTB = 0
$I_ENCRYPTCOUNTC = ""
$I_ENCRYPTCOUNTD = ""
$I_ENCRYPTCOUNTE = ""
$V_ENCRYPTCIPHERBY = ""
$V_ENCRYPTCIPHER = ""
$V_ENCRYPTSWAP = ""
$AV_ENCRYPTBOX = ""
Local $AV_ENCRYPTBOX[256][2]
For $I_ENCRYPTCOUNTA = 0 To 255
$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][1] = Asc(StringMid($S_ENCRYPTPASSWORD, Mod($I_ENCRYPTCOUNTA, StringLen($S_ENCRYPTPASSWORD)) + 1, 1))
$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0] = $I_ENCRYPTCOUNTA
Next
For $I_ENCRYPTCOUNTA = 0 To 255
$I_ENCRYPTCOUNTB = Mod(($I_ENCRYPTCOUNTB + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0] + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][1]), 256)
$V_ENCRYPTSWAP = $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0]
$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTA][0] = $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTB][0]
$AV_ENCRYPTBOX[$I_ENCRYPTCOUNTB][0] = $V_ENCRYPTSWAP
Next
For $I_ENCRYPTCOUNTA = 1 To StringLen($S_ENCRYPTTEXT) Step 2
$I_ENCRYPTCOUNTC = Mod(($I_ENCRYPTCOUNTC + 1), 256)
$I_ENCRYPTCOUNTD = Mod(($I_ENCRYPTCOUNTD + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTC][0]), 256)
$I_ENCRYPTCOUNTE = $AV_ENCRYPTBOX[Mod(($AV_ENCRYPTBOX[$I_ENCRYPTCOUNTC][0] + $AV_ENCRYPTBOX[$I_ENCRYPTCOUNTD][0]), 256)][0]
$V_ENCRYPTCIPHERBY = BitXOR(Dec(StringMid($S_ENCRYPTTEXT, $I_ENCRYPTCOUNTA, 2)), $I_ENCRYPTCOUNTE)
$V_ENCRYPTCIPHER = $V_ENCRYPTCIPHER & Chr($V_ENCRYPTCIPHERBY)
Next
$S_ENCRYPTTEXT = $V_ENCRYPTCIPHER
$I_ENCRYPTCOUNTG = ""
$I_ENCRYPTCOUNTH = ""
$V_ENCRYPTMODIFIED = ""
For $I_ENCRYPTCOUNTG = 1 To StringLen($S_ENCRYPTTEXT)
If $I_ENCRYPTCOUNTH = StringLen($S_ENCRYPTPASSWORD) Then
$I_ENCRYPTCOUNTH = 1
Else
$I_ENCRYPTCOUNTH += 1
EndIf
$V_ENCRYPTMODIFIED &= Chr(BitXOR(Asc(StringMid($S_ENCRYPTTEXT, $I_ENCRYPTCOUNTG, 1)), Asc(StringMid($S_ENCRYPTPASSWORD, $I_ENCRYPTCOUNTH, 1)), 255))
Next
$S_ENCRYPTTEXT = $V_ENCRYPTMODIFIED
Next
EndIf
Return $S_ENCRYPTTEXT
EndIf
EndFunc


Func _STRINGEXPLODE($SSTRING, $SDELIMITER, $ILIMIT = 0)
If $ILIMIT > 0 Then
$SSTRING = StringReplace($SSTRING, $SDELIMITER, Chr(0), $ILIMIT)
$SDELIMITER = Chr(0)
ElseIf $ILIMIT < 0 Then
Local $IINDEX = StringInStr($SSTRING, $SDELIMITER, 0, $ILIMIT)
If $IINDEX Then
$SSTRING = StringLeft($SSTRING, $IINDEX - 1)
EndIf
EndIf
Return StringSplit($SSTRING, $SDELIMITER, 3)
EndFunc


Func _STRINGINSERT($S_STRING, $S_INSERTSTRING, $I_POSITION)
Local $I_LENGTH, $S_START, $S_END
If $S_STRING = "" Or (Not IsString($S_STRING)) Then
Return SetError(1, 0, $S_STRING)
ElseIf $S_INSERTSTRING = "" Or (Not IsString($S_STRING)) Then
Return SetError(2, 0, $S_STRING)
Else
$I_LENGTH = StringLen($S_STRING)
If (Abs($I_POSITION) > $I_LENGTH) Or (Not IsInt($I_POSITION)) Then
Return SetError(3, 0, $S_STRING)
EndIf
EndIf
If $I_POSITION = 0 Then
Return $S_INSERTSTRING & $S_STRING
ElseIf $I_POSITION > 0 Then
$S_START = StringLeft($S_STRING, $I_POSITION)
$S_END = StringRight($S_STRING, $I_LENGTH - $I_POSITION)
Return $S_START & $S_INSERTSTRING & $S_END
ElseIf $I_POSITION < 0 Then
$S_START = StringLeft($S_STRING, Abs($I_LENGTH + $I_POSITION))
$S_END = StringRight($S_STRING, Abs($I_POSITION))
Return $S_START & $S_INSERTSTRING & $S_END
EndIf
EndFunc


Func _STRINGPROPER($S_STRING)
Local $IX = 0
Local $CAPNEXT = 1
Local $S_NSTR = ""
Local $S_CURCHAR
For $IX = 1 To StringLen($S_STRING)
$S_CURCHAR = StringMid($S_STRING, $IX, 1)
Select
Case $CAPNEXT = 1
If StringRegExp($S_CURCHAR, "[a-zA-ZŔ-˙šśžź]") Then
$S_CURCHAR = StringUpper($S_CURCHAR)
$CAPNEXT = 0
EndIf
Case Not StringRegExp($S_CURCHAR, "[a-zA-ZŔ-˙šśžź]")
$CAPNEXT = 1
Case Else
$S_CURCHAR = StringLower($S_CURCHAR)
EndSelect
$S_NSTR &= $S_CURCHAR
Next
Return $S_NSTR
EndFunc


Func _STRINGREPEAT($SSTRING, $IREPEATCOUNT)
Local $SRESULT
Select
Case Not StringIsInt($IREPEATCOUNT)
SetError(1)
Return ""
Case StringLen($SSTRING) < 1
SetError(1)
Return ""
Case $IREPEATCOUNT <= 0
SetError(1)
Return ""
Case Else
For $ICOUNT = 1 To $IREPEATCOUNT
$SRESULT &= $SSTRING
Next
Return $SRESULT
EndSelect
EndFunc


Func _STRINGREVERSE($S_STRING)
Local $I_LEN = StringLen($S_STRING)
If $I_LEN < 1 Then Return SetError(1, 0, "")
Local $T_CHARS = DllStructCreate("char[" & $I_LEN + 1 & "]")
DllStructSetData($T_CHARS, 1, $S_STRING)
Local $A_REV = DllCall("msvcrt.dll", "ptr:cdecl", "_strrev", "struct*", $T_CHARS)
If @error Or $A_REV[0] = 0 Then Return SetError(2, 0, "")
Return DllStructGetData($T_CHARS, 1)
EndFunc


Func _STRINGTOHEX($STRCHAR)
Return Hex(StringToBinary($STRCHAR))
EndFunc

MsgBox(0, "", ""

 

 

 

Mój skrypt:

#include <File.au3>
#include <String.au3>
 
Msgbox(0,"",""

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...