Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Замена кусков текста в выделенных файлах
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Loopback



Joined: 07 Sep 2009
Posts: 1533

Post (Separately) Posted: Wed Oct 06, 2010 13:52    Post subject: Reply with quote

Flasher
Тот же вариант, но заданием параметров интерфейса из командной строки. Также избавился от последней библиотеки, из которой использовалось всего 3 контанты. Теперь можно даже не компилировать.

Code:

; Параметры:
; 1: %L
; 2: Количество полей поиска, минимум 1
; 3: Высота одного поля поиска

If $CmdLine[0] < 3 Then
    MsgBox (0, "", "Недостаточно параметров, должно быть 3.")
    Exit
EndIf

Global $gSrcCount = $CmdLine[2]
Global $gSrcHeight = $CmdLine[3]

Global $aList  = _TCHLoadFileList($CmdLine[1])
Global $gReplaces = 0, $gMask
Global $gSrcEdit[$gSrcCount]
Global $nGUIHeight = $gSrcHeight * $gSrcCount + 109

Global Const $GUI_DISABLE = 128
Global Const $GUI_CHECKED = 1

$hGUI = GUICreate("Поиск и замена", 563, $nGUIHeight, -1, @DesktopHeight/2 - $nGUIHeight/2)
GUICtrlCreateLabel("Маска файлов", 8, 6, 78, 17)
$edMask = GUICtrlCreateInput("*.*", 8, 24, 265, 21)
GUICtrlCreateLabel("Текст для поиска", 8, 54, 94, 17)
GUICtrlCreateLabel("Текст для замены", 288, 54, 98, 17)

For $i = 0 To $gSrcCount - 1
    $gSrcEdit[$i] = GUICtrlCreateEdit("", 8, 72 + $gSrcHeight * $i, 265, $gSrcHeight)
Next

$edTrg = GUICtrlCreateEdit("", 288, 72, 265, $gSrcHeight * $gSrcCount)
$cbCaseSence = GUICtrlCreateCheckbox("Учитывать регистр", 8, $gSrcHeight * $gSrcCount + 84, 137, 17)
$btnOK = GUICtrlCreateButton("OK", 400, $gSrcHeight * $gSrcCount + 79, 75, 25)
$btnCancel = GUICtrlCreateButton("Отмена", 480, $gSrcHeight * $gSrcCount + 79, 75, 25)
GUISetState(@SW_SHOW)

If $aList[0] = 0 Then GUICtrlSetState($btnOK, $GUI_DISABLE)

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case -3, $btnCancel
        Exit
      Case $btnOK
        $gMask = _MaskToRegexp(GUICtrlRead($edMask))
        For $i = 1 To $aList[0]
            If StringRight($aList[$i], 1) = "\" Then
                _DoFolder($aList[$i])
            Else
                _DoFile($aList[$i])
            EndIf
        Next
        MsgBox (0, "", "Выполнено замен: " & $gReplaces, 0, $hGUI)
        Exit
   EndSwitch
WEnd

Func _DoFolder($sFolder)
    If $sFolder = "" Then Return
    Local $sDirs = ""
    Local $hSearch = FileFindFirstFile($sFolder & "*.*")
    If @error Then Return
    While 1
        $sFile = FileFindNextFile($hSearch)
        If @error Then ExitLoop
        If @extended Then
            $sDirs &= $sFolder & $sFile & "\" & @LF
            ContinueLoop
        EndIf
        _DoFile($sFolder & $sFile)
    Wend
    FileClose($hSearch)
    ; Обработку каталогов приходится делать отдельно,
    ; чтобы не оставлять открытый поисковый хэндл,
    ; их максимально может быть 64
    $aDirs = StringSplit($sDirs, @LF)
    For $i = 1 To $aDirs[0]
        _DoFolder($aDirs[$i])
    Next
EndFunc

Func _DoFile($sFile)
    If StringRegExp($sFile, $gMask) = 0 Then Return
    Local $sText = FileRead($sFile)
    Local $sSrc
    Local $nReplaces = 0
    For $i = 0 To $gSrcCount - 1
        $sSrc = GUICtrlRead($gSrcEdit[$i])
        If $sSrc = "" Then ContinueLoop
        $sText = StringReplace($sText, $sSrc, GUICtrlRead($edTrg), 0, _
                               BitAND(GUICtrlRead($cbCaseSence), $GUI_CHECKED))
        $nReplaces += @extended
    Next
    If $nReplaces = 0 Then Return
    $gReplaces += $nReplaces
    Local $hFile = FileOpen($sFile, 2)
    FileWrite($hFile, $sText)
    FileClose($hFile)
EndFunc

Func _MaskToRegexp($sMask)
    $sMask = StringRegExpReplace($sMask, "(\\|\.|\+|\^|\(|\)|\[|\]|\{|\}|\$)", "\\\1")
    $sMask = StringReplace($sMask, "?", ".")
    $sMask = StringReplace($sMask, "*", ".+?")
    Return("(?i)^" & $sMask & "$")
EndFunc

Func _TCHLoadFileList($sFileName)
    Local $asList[1] = [0]
    Local $hfList = FileOpen($sFileName, 0)
    While 1
        $sLine = FileReadLine($hfList)
        If @error Then Exitloop
        ReDim $asList[UBound($asList)+1]
        $asList[UBound($asList)-1] = $sLine
    Wend
    FileClose($hfList)
    $asList[0] = UBound($asList)-1
    Return $asList
EndFunc


Last edited by Loopback on Wed Oct 06, 2010 19:55; edited 1 time in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Oct 06, 2010 14:04    Post subject: Reply with quote

Loopback
Ok, здорово! А с кнопками никак? Просто это позволило бы свести к минимуму кол-во кнопок в тулбаре и горячих клавиш для пользовательских команд.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1533

Post (Separately) Posted: Wed Oct 06, 2010 14:35    Post subject: Reply with quote

Flasher wrote:
А с кнопками никак?

А, это я не заметил. Странный получается интерфейс, ну да ладно. Чтобы еще раз не постить простыню полного скрипта, добавь в начале скрипта после строк:
Code:

Global $gSrcCount = $CmdLine[2]
Global $gSrcHeight = $CmdLine[3]


такую конструкцию:

Code:

If $gSrcCount = 0 Then
    $gBtnCount = 9 ; Количество кнопок
    $nGUIHeight = 6 + $gBtnCount * 24 + $gBtnCount * 5

    GUICreate("Окон поиска", 110, $nGUIHeight, -1, @DesktopHeight/2 - $nGUIHeight/2)
    For $i = 0 To $gBtnCount - 1
        GUICtrlCreateButton($i+1, 5, 5 + $i*24 + $i*5, 100, 24)
    Next
    GUISetState(@SW_SHOW)

    While 1
       $nMsg = GUIGetMsg()
       Switch $nMsg
          Case -3
            Exit
          Case 3 To $gBtnCount + 2
            $gSrcCount = $nMsg - 2
            GUIDelete()
            ExitLoop
       EndSwitch         
    Wend
EndIf

Теперь, если параметр количества окон, передаваемый скрипту будет = 0, будет появляться окно с кнопками.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Oct 06, 2010 14:46    Post subject: Reply with quote

Ух ты. Просьба кнопки сделать квадратными(маленькими) в строку, а не в столб и сверху надпись "Выберите количество полей для поиска". Smile
Добавлено: + ещё бы ограничение высоты окна по абсолютной высоте экрана сделать, при этом задать условие: если в сумме высота окна превышает абсолютную высоту экрана, то высота каждого левого поля ужимается по принципу x / y , где x - абсолютная высота экрана, а y - количество полей. И будет вообще великолепно. Wink

+ Добавлено: да, конечно, нужно учесть и постоянные величины других элементов окна: строку заголовка, сепараторы(полосы прокрутки), области выше, ниже самих полей.
Думаю, это и без подсказки понятно, так, на всякий случай пишу.)
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1533

Post (Separately) Posted: Wed Oct 06, 2010 16:00    Post subject: Reply with quote

Ох что вышло Shocked Жаль что на форуме нет "спойлера".

Заменяй всё начало скрипта:

Code:

; Параметры:
; 1: %L
; 2: Количество полей поиска, минимум 1
; 3: Высота одного поля поиска

If $CmdLine[0] < 3 Then
    MsgBox (0, "", "Недостаточно параметров, должно быть 3.")
    Exit
EndIf

Global $gSrcCount = $CmdLine[2]
Global $gSrcHeight = $CmdLine[3]

If $gSrcCount = 0 Then
    $gBtnCount = 9 ; Количество кнопок
    $nGUIWidth = 6 + $gBtnCount * 24 + $gBtnCount * 5
    GUICreate("Выберите количество полей для поиска", $nGUIWidth, 34, @DesktopWidth/2 - $nGUIWidth/2, -1)
    For $i = 0 To $gBtnCount - 1
        GUICtrlCreateButton($i+1, 5 + $i*24 + $i*5, 5, 24, 24)
    Next
    GUISetState(@SW_SHOW)
    While 1
       $nMsg = GUIGetMsg()
       Switch $nMsg
          Case -3
            Exit
          Case 3 To $gBtnCount + 2
            $gSrcCount = $nMsg - 2
            If @DesktopHeight - 50 < $gSrcHeight * $gSrcCount + 109 Then
               $gSrcHeight = Int((@DesktopHeight-200) / $gSrcCount)
            EndIf
            GUIDelete()
            ExitLoop
       EndSwitch         
    Wend
EndIf

Global $aList  = _TCHLoadFileList($CmdLine[1])
Global $gReplaces = 0, $gMask
Global $gSrcEdit[$gSrcCount]
Global Const $GUI_DISABLE = 128
Global Const $GUI_CHECKED = 1

$nGUIHeight = $gSrcHeight * $gSrcCount + 109

до строчки:
Code:

$hGUI = GUICreate("Поиск и замена", 563, $nGUIHeight, -1, @DesktopHeight/2 - $nGUIHeight/2 - 20)

Конечно, считать через полную высоту экрана не совсем правильно, т.к. есть еще панель задач, а она может быть у некоторых более широкая. Но честно говоря, сейчас лень искать, как ее получать.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Oct 06, 2010 16:19    Post subject: Reply with quote

Loopback wrote:
Code:
$hGUI = GUICreate("Поиск и замена", 563, $nGUIHeight, -1, @DesktopHeight/2 - $nGUIHeight/2 - 20)
" - 20)" не было в предыдущем скрипте. Ну не суть, строку нашёл, отсутствующее добавил. Мне уже нравится. Smile Вот ещё что: можно, коли ты решил не раздвигать окно по высоте, хотя бы его центрировать?
Loopback wrote:
т.к. есть еще панель задач, а она может быть у некоторых более широкая
Про панель задач и вправду забыл, она у меня скрывается автоматически, пиксель торчит. Smile

Кстати, если кому надо: чтобы надпись в строке заголовка окна с кнопками влезла целиком, можно поменять "Выберите количество ..." на "Выбор числа ...".
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1533

Post (Separately) Posted: Wed Oct 06, 2010 16:43    Post subject: Reply with quote

Flasher wrote:
Вот ещё что: можно, коли ты решил не раздвигать окно по высоте, хотя бы его центрировать?

В смысле решил не раздвигать? Его высота устанавливается по количеству полей. Если полей с заданной высотой слишком много, они ужимаюся.
И оно центрируется, но немного выше, чтобы учесть таскбар. Убери как раз добавленный " - 20" и должно быть по центру.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Oct 06, 2010 16:49    Post subject: Reply with quote

Loopback wrote:
В смысле решил не раздвигать? Его высота устанавливается по количеству полей. Если полей с заданной высотой слишком много, они ужимаюся.
В том смысле, что не относительно высоты экрана, а в ограниченной области.
Loopback wrote:
И оно центрируется, но немного выше, чтобы учесть таскбар.
Нет, это попытка завести в центр, только ты забыл, что у всех расширения разные и смещение, соответственно, будет у всех разное. А я хотел бы абсолютный центр( как в TCFS2 организовано с @ ). Если нужно, могу MVV попросить, он выложит код этого места с API-шками. Question
Loopback wrote:
Убери как раз добавленный " - 20" и должно быть по центру.
Very Happy А у меня, наоборот, после добавления стало ближе к центру.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1533

Post (Separately) Posted: Wed Oct 06, 2010 17:02    Post subject: Reply with quote

Flasher wrote:
В том смысле, что не относительно высоты экрана, а в ограниченной области.

Ограниченной чем? Таскбаром? Если так, то да, сейчас оно не вычисляется, я об этом и писал.
Flasher wrote:
расширения

Может "разрешения"? Тогда это не играет роли, должно центрироваться на любом. А смещение сделано для коррекции высоты таскбара, но как опять же я писал выше, это неправильный путь, да.
Flasher wrote:
А у меня, наоборот, после добавления стало ближе к центру.

Ладно, посмотрю. Я ведь правильно понимаю, что окно должно центрироваться по вертикали в свободной области, не занятой таскбаром?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Oct 06, 2010 17:15    Post subject: Reply with quote

Loopback wrote:
Ограниченной чем? Таскбаром?
Нет, я имею в виду, что окно не распахнуто по высоте, а уменьшено.
Loopback wrote:
Может "разрешения"?
Конечно, пардон.
Loopback wrote:
Тогда это не играет роли, должно центрироваться на любом. А смещение сделано для коррекции высоты таскбара, но как опять же я писал выше, это неправильный путь, да.
Правильней сказать - несворачивающегося таскбара. (Странно, что MVV тогда на это не указал, когда делал команды r6 и т.п.)
Loopback wrote:
Я ведь правильно понимаю, что окно должно центрироваться по вертикали в свободной области, не занятой таскбаром?
Конечно. Даже если предположить, что таскбар постоянно присутствует, то всё равно он перекрывается окном снизу. К тому же таскбар у всех может очень сильно отличаться. Пытаться выискать высоту панели задач каждой шкурки, а также системных настроек, скажем, Win7 в зависимости от размера заданных иконок - дело не из лёгких. У меня классика '98, поэтому мне с этим проще.

Чего-то кнопка OK мёртвая. Поправь, пожалуйста.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Wed Oct 06, 2010 18:14    Post subject: Reply with quote

[off]
Loopback
Loopback wrote:
Чтобы еще раз не постить простыню полного скрипта

Ты же можешь исправлять свои старые посты - кнопка "правка". Так исправляй основной пост со скриптом и пользователям не придётся собирать скрипт по кускам.

Что-то я смотрю-смотрю на AutoIt и всё больше хочеться его изучить Wink
[/off]
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Oct 06, 2010 18:56    Post subject: Reply with quote

Batya wrote:
Так исправляй основной пост со скриптом и пользователям не придётся собирать скрипт по кускам.
Скорей, это объясняется предыдущим предложением:
Loopback wrote:
Странный получается интерфейс
Т.е., возможно, автор посчитал дополнительное окно лишним или нецелесообразным, поэтому и дополнил кусками. Ну, когда будет окончательный вариант, я могу MIME/UUE прицепить из соображения ёмкости и полноты.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1533

Post (Separately) Posted: Wed Oct 06, 2010 19:55    Post subject: Reply with quote

Flasher wrote:
Чего-то кнопка OK мёртвая. Поправь, пожалуйста.

В смысле? Неактивная? У меня вроде все работает.

Batya wrote:
Ты же можешь исправлять свои старые посты - кнопка "правка". Так исправляй основной пост со скриптом и пользователям не придётся собирать скрипт по кускам.

Я знаю, но тогда им придется искать этот пост. Лучше бы, конечно, спойлер. Хотя, пожалуй, можно давать на него ссылку.

Batya wrote:
Что-то я смотрю-смотрю на AutoIt и всё больше хочеться его изучить

Ну, лишним это уж точно не будет Wink Тем более, что со знанием VBS это несложно.

Flasher wrote:
Т.е., возможно, автор посчитал дополнительное окно лишним или нецелесообразным, поэтому и дополнил кусками.

В данном случае нет, оно же появляется только при заданных условиях и прочей работе не мешает.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Oct 06, 2010 20:22    Post subject: Reply with quote

Loopback wrote:
В смысле? Неактивная?
Именно. Можешь Ctrl+Enter повесить на выполнение замены?

Что там с центрированием?
Loopback wrote:
В данном случае нет, оно же появляется только при заданных условиях и прочей работе не мешает.
Второй причиной мог быть лишний кусок кода. Ну раз сам опроверг, то..
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1533

Post (Separately) Posted: Wed Oct 06, 2010 20:34    Post subject: Reply with quote

Flasher
Вот. Центровка теперь должна работать правильно при любой высоте таскбара. Ctrl+Enter добавил.

В дальнейшем буду править этот пост.

Code:

;; Параметры:
; 1: %L
; 2: Количество полей поиска, если = 0, открывается диалог выбора количества полей
; 3: Высота одного поля поиска

If $CmdLine[0] < 3 Then
    MsgBox (0, "", "Недостаточно параметров, должно быть 3.")
    Exit
EndIf

Global $gSrcCount = $CmdLine[2]
Global $gSrcHeight = $CmdLine[3]

Global $gClientHeight = @DesktopHeight - 30
$aTrayPos = WinGetPos("[CLASS:Shell_TrayWnd]")
If Not @error Then $gClientHeight = @DesktopHeight - $aTrayPos[3]

If $gSrcCount = 0 Then
    $gBtnCount = 9 ; Количество кнопок
    $nGUIWidth = 6 + $gBtnCount * 24 + $gBtnCount * 5
    GUICreate("Выбор числа полей для поиска", $nGUIWidth, 34, @DesktopWidth/2 - $nGUIWidth/2, -1)
    For $i = 0 To $gBtnCount - 1
        GUICtrlCreateButton($i+1, 5 + $i*24 + $i*5, 5, 24, 24)
    Next
    GUISetState(@SW_SHOW)
    While 1
       $nMsg = GUIGetMsg()
       Switch $nMsg
          Case -3
            Exit
          Case 3 To $gBtnCount + 2
            $gSrcCount = $nMsg - 2
            If $gClientHeight < $gSrcHeight * $gSrcCount + 140 Then
               $gSrcHeight = Int(($gClientHeight - 140) / $gSrcCount)
            EndIf
            GUIDelete()
            ExitLoop
       EndSwitch         
    Wend
EndIf

Global $aList  = _TCHLoadFileList($CmdLine[1])
Global $gReplaces = 0, $gMask, $gBackups = False
Global $gSrcEdit[$gSrcCount]
Global Const $GUI_CHECKED = 1

$nGUIHeight = $gSrcHeight * $gSrcCount + 109

$hGUI = GUICreate("Поиск и замена", 563, $nGUIHeight, -1, -1)
GUICtrlCreateLabel("Маска файлов", 8, 6, 78, 17)
$edMask = GUICtrlCreateInput("*.*", 8, 24, 265, 21)
GUICtrlCreateLabel("Текст для поиска", 8, 54, 94, 17)
GUICtrlCreateLabel("Текст для замены", 288, 54, 98, 17)

For $i = 0 To $gSrcCount - 1
    $gSrcEdit[$i] = GUICtrlCreateEdit("", 8, 72 + $gSrcHeight * $i, 265, $gSrcHeight)
Next

$edTrg = GUICtrlCreateEdit("", 288, 72, 265, $gSrcHeight * $gSrcCount)
$cbCaseSence = GUICtrlCreateCheckbox("Учитывать регистр", 8, $gSrcHeight * $gSrcCount + 84, 137, 17)
$cbBackups = GUICtrlCreateCheckbox("Создавать резервные копии", 150, $gSrcHeight * $gSrcCount + 84, 170, 17)
$btnOK = GUICtrlCreateButton("OK", 400, $gSrcHeight * $gSrcCount + 79, 75, 25)
$btnCancel = GUICtrlCreateButton("Отмена", 480, $gSrcHeight * $gSrcCount + 79, 75, 25)
Global $AccelTable[1][2] = [["^{ENTER}", $btnOK]]
GUISetAccelerators($AccelTable)

GUISetState(@SW_SHOW)

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case -3, $btnCancel
        Exit
      Case $btnOK
        $gMask = _MaskToRegexp(GUICtrlRead($edMask))
        $gBackups = BitAND(GUICtrlRead($cbBackups), $GUI_CHECKED)
        For $i = 1 To $aList[0]
            If StringRight($aList[$i], 1) = "\" Then
                _DoFolder($aList[$i])
            Else
                _DoFile($aList[$i])
            EndIf
        Next
        MsgBox (0, "", "Выполнено замен: " & $gReplaces, 0, $hGUI)
        Exit
   EndSwitch
WEnd

Func _DoFolder($sFolder)
    If $sFolder = "" Then Return
    Local $sDirs = ""
    Local $hSearch = FileFindFirstFile($sFolder & "*.*")
    If @error Then Return
    While 1
        $sFile = FileFindNextFile($hSearch)
        If @error Then ExitLoop
        If @extended Then
            $sDirs &= $sFolder & $sFile & "\" & @LF
            ContinueLoop
        EndIf
        _DoFile($sFolder & $sFile)
    Wend
    FileClose($hSearch)
    ; Обработку каталогов приходится делать отдельно,
    ; чтобы не оставлять открытый поисковый хэндл,
    ; их максимально может быть 64
    $aDirs = StringSplit($sDirs, @LF)
    For $i = 1 To $aDirs[0]
        _DoFolder($aDirs[$i])
    Next
EndFunc

Func _DoFile($sFile)
    If StringRegExp(StringLower($sFile), $gMask) = 0 Then Return
    Local $sText = FileRead($sFile)
    Local $sSrc
    Local $nReplaces = 0
    For $i = 0 To $gSrcCount - 1
        $sSrc = GUICtrlRead($gSrcEdit[$i])
        If $sSrc = "" Then ContinueLoop
        $sText = StringReplace($sText, $sSrc, GUICtrlRead($edTrg), 0, _
                               BitAND(GUICtrlRead($cbCaseSence), $GUI_CHECKED))
        $nReplaces += @extended
    Next
    If $nReplaces = 0 Then Return
    $gReplaces += $nReplaces
    If $gBackups Then FileCopy($sFile, $sFile & ".bak", 1) ; бэкап
    Local $hFile = FileOpen($sFile, 2)
    FileWrite($hFile, $sText)
    FileClose($hFile)
EndFunc

Func _MaskToRegexp($sMask)
    $sMask = StringRegExpReplace($sMask, "(\\|\.|\+|\^|\(|\)|\[|\]|\{|\}|\$)", "\\\1")
    $sMask = StringReplace($sMask, "?", ".")
    $sMask = StringReplace($sMask, "*", ".+?")
    Return StringLower("(?i)" & $sMask & "$")
EndFunc

Func _TCHLoadFileList($sFileName)
    Local $asList[1] = [0]
    Local $hfList = FileOpen($sFileName, 0)
    While 1
        $sLine = FileReadLine($hfList)
        If @error Then Exitloop
        ReDim $asList[UBound($asList)+1]
        $asList[UBound($asList)-1] = $sLine
    Wend
    FileClose($hfList)
    $asList[0] = UBound($asList)-1
    Return $asList
EndFunc


Last edited by Loopback on Fri Oct 22, 2010 15:53; edited 5 times in total
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
Page 4 of 9

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group