Creat0R
09-06-2007, 09:37
amel27
зачем там RegExp?
Я тоже в начале не хотел это использовать, но дело в том, что в отличие от приведённого мной примера, иногда есть необходимость для каждой замены задавать Patern (кстати, как оно по русский? :) ), чтобы по нему делать замену.
Вобщем спасибо, идея с созданием массива вне функции мне понравилась, это позволяет более удобно задавать Patern и соответственно замену.
А также...
- нет проблем с форматными символами (речь о "|");
:)
Вот немного переделал, добавил проверку ошибочности и возврат общего числа сделанных замен (@Extended):
$String = 'file://localhost/%22c:/my%20test/test.zip%22'
Dim $Pattern[4] = ['/', '%20', '%22', 'file:\\localhost\']
Dim $Replace[4] = ['\', ' ', '"', '']
$String = _StringMultiReplace($String, $Pattern, $Replace)
MsgBox (64, "Results", $String & @LF & "Число замен: " & @extended)
;На выходе имеем это:
;"c:\my test\test.zip"
;Число замен: 9
Func _StringMultiReplace($String, $Pattern, $Replace)
If Not IsArray($Pattern) Or Not IsArray($Replace) Then Return SetError(1, 0, $String)
Local $Extended = 0
ReDim $Replace[UBound($Pattern)]
For $i = 0 To UBound($Pattern)-1
$String = StringReplace($String, $Pattern[$i], $Replace[$i])
$Extended += @extended
Next
Return SetError(0, $Extended, $String)
EndFunc
gregaz
При закрытии дочернего окна GUI у меня обычно закрывается и родительсое окно.
Это зависит от того как оно закрывается...
Чем это достигнуто ?
Функция GuiDelete() имеет один опциональный параметр, это должен быть уникальный идентификатор, который возвращается функцией GuiCreate().
Соответственно, если имеем 2 ГУИ:
$Gui_1 = GuiCreate("Первый ГУИ")
$Gui_2 = GuiCreate("Второй ГУИ")
То для закрытия второго (предполагается что они оба уже видны), задаём как первый параметр команды GuiDelete() его идентификатор:
GuiDelete($Gui_2)
Также можно и спрятать окно:
GuiSetState(@SW_HIDE, $Gui_2)
Для показа обратно:
GuiSetState(@SW_SHOW, $Gui_2)
зачем там RegExp?
Я тоже в начале не хотел это использовать, но дело в том, что в отличие от приведённого мной примера, иногда есть необходимость для каждой замены задавать Patern (кстати, как оно по русский? :) ), чтобы по нему делать замену.
Вобщем спасибо, идея с созданием массива вне функции мне понравилась, это позволяет более удобно задавать Patern и соответственно замену.
А также...
- нет проблем с форматными символами (речь о "|");
:)
Вот немного переделал, добавил проверку ошибочности и возврат общего числа сделанных замен (@Extended):
$String = 'file://localhost/%22c:/my%20test/test.zip%22'
Dim $Pattern[4] = ['/', '%20', '%22', 'file:\\localhost\']
Dim $Replace[4] = ['\', ' ', '"', '']
$String = _StringMultiReplace($String, $Pattern, $Replace)
MsgBox (64, "Results", $String & @LF & "Число замен: " & @extended)
;На выходе имеем это:
;"c:\my test\test.zip"
;Число замен: 9
Func _StringMultiReplace($String, $Pattern, $Replace)
If Not IsArray($Pattern) Or Not IsArray($Replace) Then Return SetError(1, 0, $String)
Local $Extended = 0
ReDim $Replace[UBound($Pattern)]
For $i = 0 To UBound($Pattern)-1
$String = StringReplace($String, $Pattern[$i], $Replace[$i])
$Extended += @extended
Next
Return SetError(0, $Extended, $String)
EndFunc
gregaz
При закрытии дочернего окна GUI у меня обычно закрывается и родительсое окно.
Это зависит от того как оно закрывается...
Чем это достигнуто ?
Функция GuiDelete() имеет один опциональный параметр, это должен быть уникальный идентификатор, который возвращается функцией GuiCreate().
Соответственно, если имеем 2 ГУИ:
$Gui_1 = GuiCreate("Первый ГУИ")
$Gui_2 = GuiCreate("Второй ГУИ")
То для закрытия второго (предполагается что они оба уже видны), задаём как первый параметр команды GuiDelete() его идентификатор:
GuiDelete($Gui_2)
Также можно и спрятать окно:
GuiSetState(@SW_HIDE, $Gui_2)
Для показа обратно:
GuiSetState(@SW_SHOW, $Gui_2)