Стоит задача выдирать инфу из бинарных файлов. Скажите, существующий функционал AutoIt v3.2.12.1 достаточен для этого, или даже не пытаться разбираться?
» AutoIT
Цитата:
или даже не пытаться разбираться?
Ну почему же, используй функцию FileOpen() с бинарным режимом 16
Код:
FileOpen("test.exe", 16)
Maza Faka
Спасибо. Еще вопрос - вроде простой, да чего-то не соображу Имею массив
Код: Dim $TeamsCoeff [6][18] = [[1.4473, 2.7075, 0.4507, 6.0076, 45.741, 0.5684, 105.0674, 1.725, 2.0765, 1.412, 0.7404, 0.1481, 0.0001, 0, 0.1667, 20.4267, 7.6133, 0.6942],[1.3948, 2.6626, 0.4524, 5.885, 45.7443, 0.5686, 104.9644, 1.7249, 2.0753, 1.4096, 0.7328, 0.1481, 0.0001, 0, 0.1667, 20.2735, 7.6133, 0.6913],[1.5283, 2.777, 0.4477, 6.2032, 45.7304, 0.5681, 105.2266, 1.7248, 2.0782, 1.4157, 0.7522, 0.1481, 0.0001, 0, 0.165, 20.6769, 7.6133, 0.6992],[1.3068, 2.5877, 0.4551, 5.6858, 45.7453, 0.5688, 104.7925, 1.7247, 2.0734, 1.3576, 0.72, 0.1481, 0.0001, 0, 0.1683, 20.0291, 7.6133, 0.6867],[0.8328, 2.1866, 0.4664, 4.6886, 45.6967, 0.5691, 103.8754, 1.7216, 2.0634, 1.3367, 0.6521, 0.1481, 0.0001, 0, 0.1733, 18.8615, 7.6133, 0.6667],[0.1768, 1.6465, 0.4704, 3.5005, 45.4317, 0.5672, 102.6325, 1.7101, 2.0497, 1.2623, 0.56, 0.1481, 0.0001, 0, 0.175, 17.6818, 7.6133, 0.6534]]
_arrayDisplay ($TeamsCoeff)
Спасибо. Еще вопрос - вроде простой, да чего-то не соображу Имею массив
Код: Dim $TeamsCoeff [6][18] = [[1.4473, 2.7075, 0.4507, 6.0076, 45.741, 0.5684, 105.0674, 1.725, 2.0765, 1.412, 0.7404, 0.1481, 0.0001, 0, 0.1667, 20.4267, 7.6133, 0.6942],[1.3948, 2.6626, 0.4524, 5.885, 45.7443, 0.5686, 104.9644, 1.7249, 2.0753, 1.4096, 0.7328, 0.1481, 0.0001, 0, 0.1667, 20.2735, 7.6133, 0.6913],[1.5283, 2.777, 0.4477, 6.2032, 45.7304, 0.5681, 105.2266, 1.7248, 2.0782, 1.4157, 0.7522, 0.1481, 0.0001, 0, 0.165, 20.6769, 7.6133, 0.6992],[1.3068, 2.5877, 0.4551, 5.6858, 45.7453, 0.5688, 104.7925, 1.7247, 2.0734, 1.3576, 0.72, 0.1481, 0.0001, 0, 0.1683, 20.0291, 7.6133, 0.6867],[0.8328, 2.1866, 0.4664, 4.6886, 45.6967, 0.5691, 103.8754, 1.7216, 2.0634, 1.3367, 0.6521, 0.1481, 0.0001, 0, 0.1733, 18.8615, 7.6133, 0.6667],[0.1768, 1.6465, 0.4704, 3.5005, 45.4317, 0.5672, 102.6325, 1.7101, 2.0497, 1.2623, 0.56, 0.1481, 0.0001, 0, 0.175, 17.6818, 7.6133, 0.6534]]
_arrayDisplay ($TeamsCoeff)
Интересно, можно ли на AutoIt сделать такой твикер, как Neo Utilities. Или игра не стоит свеч? В настройке системы пользуюсь целым набором скриптов, в т.ч. и твикером – хотелось бы объединить всё в одном фейсе, но никак эту мечту не реализую... XP Tweaker, например, на sourceforge.net есть в cpp исходниках, Remote Administration Suite тоже вроде интересный проект (хотя его уже больше года никто не толкает дальше), но фейса лично мне больше нравится у Neo Utilities.
Tipulatoid
Цитата:
Можно так:
Код:
#include <Array.au3>
Dim $TeamsCoeff[6][18] = [[1.4473, 2.7075, 0.4507, 6.0076, 45.741, 0.5684, 105.0674, 1.725, 2.0765, 1.412, 0.7404, 0.1481, 0.0001, 0, 0.1667, 20.4267, 7.6133, 0.6942],[1.3948, 2.6626, 0.4524, 5.885, 45.7443, 0.5686, 104.9644, 1.7249, 2.0753, 1.4096, 0.7328, 0.1481, 0.0001, 0, 0.1667, 20.2735, 7.6133, 0.6913],[1.5283, 2.777, 0.4477, 6.2032, 45.7304, 0.5681, 105.2266, 1.7248, 2.0782, 1.4157, 0.7522, 0.1481, 0.0001, 0, 0.165, 20.6769, 7.6133, 0.6992],[1.3068, 2.5877, 0.4551, 5.6858, 45.7453, 0.5688, 104.7925, 1.7247, 2.0734, 1.3576, 0.72, 0.1481, 0.0001, 0, 0.1683, 20.0291, 7.6133, 0.6867],[0.8328, 2.1866, 0.4664, 4.6886, 45.6967, 0.5691, 103.8754, 1.7216, 2.0634, 1.3367, 0.6521, 0.1481, 0.0001, 0, 0.1733, 18.8615, 7.6133, 0.6667],[0.1768, 1.6465, 0.4704, 3.5005, 45.4317, 0.5672, 102.6325, 1.7101, 2.0497, 1.2623, 0.56, 0.1481, 0.0001, 0, 0.175, 17.6818, 7.6133, 0.6534]]
Dim $TeamsCoeffMax[1][18]
For $i = 0 To UBound($TeamsCoeff, 2) - 1
$iMax = 0
For $j = 0 To UBound($TeamsCoeff, 1) - 1
If $TeamsCoeff[$j][$i] > $iMax Then $iMax = $TeamsCoeff[$j][$i]
$TeamsCoeffMax[0][$i] = $iMax
Next
ConsoleWrite("!> Max value vor column #" & $i + 1 & ": " & $iMax & @LF)
Next
_ArrayDisplay($TeamsCoeffMax)
Цитата:
Требуется по каждой колонке выбрать максимальное значение, записать их в массив $TeamsCoeffMax[1][18]
Можно так:
Код:
#include <Array.au3>
Dim $TeamsCoeff[6][18] = [[1.4473, 2.7075, 0.4507, 6.0076, 45.741, 0.5684, 105.0674, 1.725, 2.0765, 1.412, 0.7404, 0.1481, 0.0001, 0, 0.1667, 20.4267, 7.6133, 0.6942],[1.3948, 2.6626, 0.4524, 5.885, 45.7443, 0.5686, 104.9644, 1.7249, 2.0753, 1.4096, 0.7328, 0.1481, 0.0001, 0, 0.1667, 20.2735, 7.6133, 0.6913],[1.5283, 2.777, 0.4477, 6.2032, 45.7304, 0.5681, 105.2266, 1.7248, 2.0782, 1.4157, 0.7522, 0.1481, 0.0001, 0, 0.165, 20.6769, 7.6133, 0.6992],[1.3068, 2.5877, 0.4551, 5.6858, 45.7453, 0.5688, 104.7925, 1.7247, 2.0734, 1.3576, 0.72, 0.1481, 0.0001, 0, 0.1683, 20.0291, 7.6133, 0.6867],[0.8328, 2.1866, 0.4664, 4.6886, 45.6967, 0.5691, 103.8754, 1.7216, 2.0634, 1.3367, 0.6521, 0.1481, 0.0001, 0, 0.1733, 18.8615, 7.6133, 0.6667],[0.1768, 1.6465, 0.4704, 3.5005, 45.4317, 0.5672, 102.6325, 1.7101, 2.0497, 1.2623, 0.56, 0.1481, 0.0001, 0, 0.175, 17.6818, 7.6133, 0.6534]]
Dim $TeamsCoeffMax[1][18]
For $i = 0 To UBound($TeamsCoeff, 2) - 1
$iMax = 0
For $j = 0 To UBound($TeamsCoeff, 1) - 1
If $TeamsCoeff[$j][$i] > $iMax Then $iMax = $TeamsCoeff[$j][$i]
$TeamsCoeffMax[0][$i] = $iMax
Next
ConsoleWrite("!> Max value vor column #" & $i + 1 & ": " & $iMax & @LF)
Next
_ArrayDisplay($TeamsCoeffMax)
Maza Faka
Цитата:
Требуется теперь создать массив $TeamsCoeffDeviation[6][18], где рассчитать:
в нулевой колонке
1,5283 (макс. значение нулевой колонки) - 1,4473
1,5283-1,3948
1,5283-1,5283
1,5283-1,3068
1,5283-0,8328
1,5283-0,1768
в первой колонке
2,777(макс. значение первой колонки)-2,7075
2,777-2,6626
2,777-2,777
2,777-2,5877
2,777-2,1866
2,777-1,6465
и т.д.
Цитата:
Не понял.
Требуется теперь создать массив $TeamsCoeffDeviation[6][18], где рассчитать:
в нулевой колонке
1,5283 (макс. значение нулевой колонки) - 1,4473
1,5283-1,3948
1,5283-1,5283
1,5283-1,3068
1,5283-0,8328
1,5283-0,1768
в первой колонке
2,777(макс. значение первой колонки)-2,7075
2,777-2,6626
2,777-2,777
2,777-2,5877
2,777-2,1866
2,777-1,6465
и т.д.
Tipulatoid
Просто добавь ещё один цикл:
Код:
#include <Array.au3>
Dim $TeamsCoeff[6][18] = [[1.4473, 2.7075, 0.4507, 6.0076, 45.741, 0.5684, 105.0674, 1.725, 2.0765, 1.412, 0.7404, 0.1481, 0.0001, 0, 0.1667, 20.4267, 7.6133, 0.6942],[1.3948, 2.6626, 0.4524, 5.885, 45.7443, 0.5686, 104.9644, 1.7249, 2.0753, 1.4096, 0.7328, 0.1481, 0.0001, 0, 0.1667, 20.2735, 7.6133, 0.6913],[1.5283, 2.777, 0.4477, 6.2032, 45.7304, 0.5681, 105.2266, 1.7248, 2.0782, 1.4157, 0.7522, 0.1481, 0.0001, 0, 0.165, 20.6769, 7.6133, 0.6992],[1.3068, 2.5877, 0.4551, 5.6858, 45.7453, 0.5688, 104.7925, 1.7247, 2.0734, 1.3576, 0.72, 0.1481, 0.0001, 0, 0.1683, 20.0291, 7.6133, 0.6867],[0.8328, 2.1866, 0.4664, 4.6886, 45.6967, 0.5691, 103.8754, 1.7216, 2.0634, 1.3367, 0.6521, 0.1481, 0.0001, 0, 0.1733, 18.8615, 7.6133, 0.6667],[0.1768, 1.6465, 0.4704, 3.5005, 45.4317, 0.5672, 102.6325, 1.7101, 2.0497, 1.2623, 0.56, 0.1481, 0.0001, 0, 0.175, 17.6818, 7.6133, 0.6534]]
Dim $TeamsCoeffMax[1][18]
Dim $TeamsCoeffDeviation[6][18]
For $i = 0 To UBound($TeamsCoeff, 2) - 1
$iMax = 0
For $j = 0 To UBound($TeamsCoeff, 1) - 1
If $TeamsCoeff[$j][$i] > $iMax Then $iMax = $TeamsCoeff[$j][$i]
$TeamsCoeffMax[0][$i] = $iMax
Next
ConsoleWrite("!> Max value vor column #" & $i + 1 & ": " & $iMax & @LF)
For $j = 0 To UBound($TeamsCoeff, 1) - 1
$TeamsCoeffDeviation[$j][$i] = $iMax - $TeamsCoeff[$j][$i]
Next
Next
_ArrayDisplay($TeamsCoeffMax)
_ArrayDisplay($TeamsCoeffDeviation)
Просто добавь ещё один цикл:
Код:
#include <Array.au3>
Dim $TeamsCoeff[6][18] = [[1.4473, 2.7075, 0.4507, 6.0076, 45.741, 0.5684, 105.0674, 1.725, 2.0765, 1.412, 0.7404, 0.1481, 0.0001, 0, 0.1667, 20.4267, 7.6133, 0.6942],[1.3948, 2.6626, 0.4524, 5.885, 45.7443, 0.5686, 104.9644, 1.7249, 2.0753, 1.4096, 0.7328, 0.1481, 0.0001, 0, 0.1667, 20.2735, 7.6133, 0.6913],[1.5283, 2.777, 0.4477, 6.2032, 45.7304, 0.5681, 105.2266, 1.7248, 2.0782, 1.4157, 0.7522, 0.1481, 0.0001, 0, 0.165, 20.6769, 7.6133, 0.6992],[1.3068, 2.5877, 0.4551, 5.6858, 45.7453, 0.5688, 104.7925, 1.7247, 2.0734, 1.3576, 0.72, 0.1481, 0.0001, 0, 0.1683, 20.0291, 7.6133, 0.6867],[0.8328, 2.1866, 0.4664, 4.6886, 45.6967, 0.5691, 103.8754, 1.7216, 2.0634, 1.3367, 0.6521, 0.1481, 0.0001, 0, 0.1733, 18.8615, 7.6133, 0.6667],[0.1768, 1.6465, 0.4704, 3.5005, 45.4317, 0.5672, 102.6325, 1.7101, 2.0497, 1.2623, 0.56, 0.1481, 0.0001, 0, 0.175, 17.6818, 7.6133, 0.6534]]
Dim $TeamsCoeffMax[1][18]
Dim $TeamsCoeffDeviation[6][18]
For $i = 0 To UBound($TeamsCoeff, 2) - 1
$iMax = 0
For $j = 0 To UBound($TeamsCoeff, 1) - 1
If $TeamsCoeff[$j][$i] > $iMax Then $iMax = $TeamsCoeff[$j][$i]
$TeamsCoeffMax[0][$i] = $iMax
Next
ConsoleWrite("!> Max value vor column #" & $i + 1 & ": " & $iMax & @LF)
For $j = 0 To UBound($TeamsCoeff, 1) - 1
$TeamsCoeffDeviation[$j][$i] = $iMax - $TeamsCoeff[$j][$i]
Next
Next
_ArrayDisplay($TeamsCoeffMax)
_ArrayDisplay($TeamsCoeffDeviation)
Maza Faka - где можно почитать интересные вещи про WMI? (Это на тему серийника HDD)
Я нарыл программу WMICodeCreator, ей можно получить нужный код на VB, а его уже поправить в au3, но там столько всего...
Я нарыл программу WMICodeCreator, ей можно получить нужный код на VB, а его уже поправить в au3, но там столько всего...
Hackproof 13:46 28-09-2008
Цитата:
Вот неплохое описание (кстати там-же есть отличная статья по использованию AutoItX), а также тема тут на руборде: Что такое WMI, как писать сценарии WMI.
Цитата:
Нечто подобное на AutoIt'е: WMI ScriptOMatic tool for AutoIt
Цитата:
где можно почитать интересные вещи про WMI?
Вот неплохое описание (кстати там-же есть отличная статья по использованию AutoItX), а также тема тут на руборде: Что такое WMI, как писать сценарии WMI.
Цитата:
нарыл программу WMICodeCreator, ей можно получить нужный код на VB
Нечто подобное на AutoIt'е: WMI ScriptOMatic tool for AutoIt
Maza Faka
еще раз спасибо. А как можно у всех элеметов массива, например такого Dim $arr[3] = [1#3, 2#4, 5#6] заменить все символы # на . (точку)
еще раз спасибо. А как можно у всех элеметов массива, например такого Dim $arr[3] = [1#3, 2#4, 5#6] заменить все символы # на . (точку)
ViSiToR
Цитата:
Спасибо!
Добавлено:
Tipulatoid
Цитата:
Наверное только перебирая все элементы в цикле:
Код: Dim $arr[3] = ["1#3", "2#4", "5#6"]
For $i = 0 To UBound($arr) - 1
$arr[$i] = StringReplace($arr[$i], "#", ".")
Next
Цитата:
Вот неплохое описание
Спасибо!
Добавлено:
Tipulatoid
Цитата:
заменить все символы # на . (точку)
Наверное только перебирая все элементы в цикле:
Код: Dim $arr[3] = ["1#3", "2#4", "5#6"]
For $i = 0 To UBound($arr) - 1
$arr[$i] = StringReplace($arr[$i], "#", ".")
Next
Подскажите , пожалуйста , оптимальный код преобразования текста массива :
Имеется массив с текстовыми строками .
Требуется изменить написание всех слов , длиной > 2 символов , с заглавной буквы
Имеется массив с текстовыми строками .
Требуется изменить написание всех слов , длиной > 2 символов , с заглавной буквы
ViSiToR
Цитата:
Разобрался. Дело было в том, что та софтина запускала от имени другого юзера в винде
Спасибо за помощь!
Цитата:
Если я правильно понял, _IEAttach всего лишь возвращает объект окна по заданному свойству (hWnd в нашем случае) ?
Тогда можно попробовать ещё так:
Код:#include <IE.au3>
$sUniqueTitle = "~ _____ My Title _____ ~"
$hwnd = WinGetHandle($sUniqueTitle)
$account = _IEAttach($hwnd, 'hwnd')
If @error Then
$hwnd = WinGetHandle("[CLASS:IEFrame;REGEXPTITLE:.*?" & $sUniqueTitle & ".*?]")
$account = _IEAttach($hwnd, 'hwnd')
If @error Then
$hwnd = ControlGetHandle("[CLASS:IEFrame; REGEXPTITLE:.*?" & $sUniqueTitle & ".*?]", "", "Internet Explorer_Server1")
$account = _IEAttach($hwnd, 'hwnd')
EndIf
EndIf
Select
Case @error = 5
MsgBox (16,'Invalid Value', 'Can not access CL window!')
Case @error = 7
MsgBox (16,'No Match', 'Can not access CL window!' & @CRLF & "hwnd (Title) = " & WinGetTitle($hwnd))
EndSelect
MsgBox (64,'','OK?')
Разобрался. Дело было в том, что та софтина запускала от имени другого юзера в винде
Спасибо за помощь!
gregaz 20:42 29-09-2008
Цитата:
Так:
Код: #include <Array.au3>
$aWords_Arr = StringSplit("some word or other words", " ")
For $i = 1 To $aWords_Arr[0]
If StringLen($aWords_Arr[$i]) > 2 Then _
$aWords_Arr[$i] = StringUpper(StringLeft($aWords_Arr[$i], 1)) & StringTrimLeft($aWords_Arr[$i], 1)
Next
_ArrayDisplay($aWords_Arr)
Цитата:
Требуется изменить написание всех слов , длиной > 2 символов , с заглавной буквы
Так:
Код: #include <Array.au3>
$aWords_Arr = StringSplit("some word or other words", " ")
For $i = 1 To $aWords_Arr[0]
If StringLen($aWords_Arr[$i]) > 2 Then _
$aWords_Arr[$i] = StringUpper(StringLeft($aWords_Arr[$i], 1)) & StringTrimLeft($aWords_Arr[$i], 1)
Next
_ArrayDisplay($aWords_Arr)
ViSiToR
Это действительно оптимум.
Мне как-то в голову не пришло разбитие на слова.
По- другому получалось сложновато.
Если можно , то с результатом в виде исходного массива строк (прошу для получения оптимума)
Наверное в цикле по строкам массива с исползованием _ArrayToString ??
Код: #include <Array.au3>
Dim $ar[2]=["some word or other words",'the elements of an array into a single string']
_ArrayDisplay($ar,'$ar')
For $ii=0 To UBound($ar)-1
$aWords_Arr = StringSplit($ar[$ii],' ')
For $i = 1 To $aWords_Arr[0]
If StringLen($aWords_Arr[$i]) > 2 Then _
$aWords_Arr[$i] = StringUpper(StringLeft($aWords_Arr[$i], 1)) & StringTrimLeft($aWords_Arr[$i], 1)
Next
$ar[$ii]=_ArrayToString($aWords_Arr, ' ' ,1 )
Next
_ArrayDisplay($ar,'$ar')
Это действительно оптимум.
Мне как-то в голову не пришло разбитие на слова.
По- другому получалось сложновато.
Если можно , то с результатом в виде исходного массива строк (прошу для получения оптимума)
Наверное в цикле по строкам массива с исползованием _ArrayToString ??
Код: #include <Array.au3>
Dim $ar[2]=["some word or other words",'the elements of an array into a single string']
_ArrayDisplay($ar,'$ar')
For $ii=0 To UBound($ar)-1
$aWords_Arr = StringSplit($ar[$ii],' ')
For $i = 1 To $aWords_Arr[0]
If StringLen($aWords_Arr[$i]) > 2 Then _
$aWords_Arr[$i] = StringUpper(StringLeft($aWords_Arr[$i], 1)) & StringTrimLeft($aWords_Arr[$i], 1)
Next
$ar[$ii]=_ArrayToString($aWords_Arr, ' ' ,1 )
Next
_ArrayDisplay($ar,'$ar')
gregaz
Можно и так, во всяком случае будет быстрее:
Код: #include <Array.au3> ;Only for _ArrayDisplay
Dim $ar[2]=["some word or other words",'the elements of an array into a single string']
_ArrayDisplay($ar,'$ar')
For $i = 0 To UBound($ar) - 1
$aWords_Arr = StringSplit($ar[$i],' ')
$sString = ""
For $j = 1 To $aWords_Arr[0]
If StringLen($aWords_Arr[$j]) > 2 Then _
$sString &= StringUpper(StringLeft($aWords_Arr[$j], 1)) & StringTrimLeft($aWords_Arr[$j], 1) & Chr(32)
Next
$ar[$i] = StringTrimRight($sString, 1)
Next
_ArrayDisplay($ar, '$ar')
Можно и так, во всяком случае будет быстрее:
Код: #include <Array.au3> ;Only for _ArrayDisplay
Dim $ar[2]=["some word or other words",'the elements of an array into a single string']
_ArrayDisplay($ar,'$ar')
For $i = 0 To UBound($ar) - 1
$aWords_Arr = StringSplit($ar[$i],' ')
$sString = ""
For $j = 1 To $aWords_Arr[0]
If StringLen($aWords_Arr[$j]) > 2 Then _
$sString &= StringUpper(StringLeft($aWords_Arr[$j], 1)) & StringTrimLeft($aWords_Arr[$j], 1) & Chr(32)
Next
$ar[$i] = StringTrimRight($sString, 1)
Next
_ArrayDisplay($ar, '$ar')
Укороченный пример из справки, оставлено только существенное.
Сервер.
Код: $Mainsocket=TCPListen($addr,$port)
Do
$ConnectedSocket = TCPAccept($Mainsocket)
Until $ConnectedSocket <> -1
$recv = TCPRecv( $ConnectedSocket, 2048 )
Сервер.
Код: $Mainsocket=TCPListen($addr,$port)
Do
$ConnectedSocket = TCPAccept($Mainsocket)
Until $ConnectedSocket <> -1
$recv = TCPRecv( $ConnectedSocket, 2048 )
Цитата:
олучается по одному соединению двухсторонню связь не сделать
Нет, клиент отправляет - сервер принимает.
Не подскажите почему у меня никак не работает реакция на события в IE?
Нужно вызывать функцию в ответ на клик в окне браузера, никак этого не могу добиться. Пробую так например:
Код:
ObjEvent ($IE, "IEEvent_", "HTMLElementEvents")
Func IEEvent_onclick()
msgbox(0, 1, 1)
EndFunc
Нужно вызывать функцию в ответ на клик в окне браузера, никак этого не могу добиться. Пробую так например:
Код:
ObjEvent ($IE, "IEEvent_", "HTMLElementEvents")
Func IEEvent_onclick()
msgbox(0, 1, 1)
EndFunc
Maza Faka
Цитата:
Да , без использования функций массива будет быстрее .
И без лишних преобразований .
ViSiToR , Maza Faka , спасибо большое .
Цитата:
Можно и так, во всяком случае будет быстрее:
Да , без использования функций массива будет быстрее .
И без лишних преобразований .
ViSiToR , Maza Faka , спасибо большое .
Опять детский вопрос про массивы. Имею следуюший $arr[2] = [цена+рынок1+рынок2, продукт1+15,2+15,6]
Требуется вызвать функцию, которая бы поменяла все "+" на "!"
Код: #include <Array.au3>
Dim $arr[2] = ["цена+рынок1+рынок2", "продукт1+15,2+15,6"]
_ArrayDisplay($arr)
_ReplaceSymbols ($arr, "+", "!")
_ArrayDisplay($arr) ; здесь выясняется что массив $arr не обновился
Func _ReplaceSymbols ($vremArray, $oldsymbol, $newsymbol)
_ArrayDisplay($vremArray)
For $i = 0 To UBound($vremArray) - 1
$vremArray[$i] = StringReplace($vremArray[$i], $oldsymbol, $newsymbol)
Next
_ArrayDisplay($vremArray)
EndFunc
Требуется вызвать функцию, которая бы поменяла все "+" на "!"
Код: #include <Array.au3>
Dim $arr[2] = ["цена+рынок1+рынок2", "продукт1+15,2+15,6"]
_ArrayDisplay($arr)
_ReplaceSymbols ($arr, "+", "!")
_ArrayDisplay($arr) ; здесь выясняется что массив $arr не обновился
Func _ReplaceSymbols ($vremArray, $oldsymbol, $newsymbol)
_ArrayDisplay($vremArray)
For $i = 0 To UBound($vremArray) - 1
$vremArray[$i] = StringReplace($vremArray[$i], $oldsymbol, $newsymbol)
Next
_ArrayDisplay($vremArray)
EndFunc
Tipulatoid
Цитата:
И правильно делает, что не обновляется Что возвращает функция по умолчанию?
Цитата:
Другими словами, если ты специально не возвращаешь из функции никакого значения, то функция возвращает 0.
Цитата:
Код: #include <Array.au3>
Dim $arr[2] = ["цена+рынок1+рынок2", "продукт1+15,2+15,6"]
_ArrayDisplay($arr)
_ReplaceSymbols($arr, "+", "!")
_ArrayDisplay($arr)
Func _ReplaceSymbols(ByRef $vremArray, $oldsymbol, $newsymbol)
For $i = 0 To UBound($vremArray) - 1
$vremArray[$i] = StringReplace($vremArray[$i], $oldsymbol, $newsymbol)
Next
EndFunc
Цитата:
Итак, функция отрабатывает нормально, знаки меняет, но исходный массив $arr не обновляется
И правильно делает, что не обновляется Что возвращает функция по умолчанию?
Цитата:
Из справки:
Unlike built-in functions, user-defined functions return 0 unless another return value is specified
Другими словами, если ты специально не возвращаешь из функции никакого значения, то функция возвращает 0.
Цитата:
Из справки:
Arrays should be passed to user-defined functions using the ByRef keyword to avoid copying all the data in the array.
Код: #include <Array.au3>
Dim $arr[2] = ["цена+рынок1+рынок2", "продукт1+15,2+15,6"]
_ArrayDisplay($arr)
_ReplaceSymbols($arr, "+", "!")
_ArrayDisplay($arr)
Func _ReplaceSymbols(ByRef $vremArray, $oldsymbol, $newsymbol)
For $i = 0 To UBound($vremArray) - 1
$vremArray[$i] = StringReplace($vremArray[$i], $oldsymbol, $newsymbol)
Next
EndFunc
Maza Faka
Спасибо. Буду знать. Справка - она для людей разбирающихся или полуразбирающихся. В первый раз - сложновато. А второй вопрос? Тут, похоже рэгэкспы нужны, но тут для меня темный лес.
Спасибо. Буду знать. Справка - она для людей разбирающихся или полуразбирающихся. В первый раз - сложновато. А второй вопрос? Тут, похоже рэгэкспы нужны, но тут для меня темный лес.
Tipulatoid
Цитата:
Код: #include <Array.au3>
Dim $arr[2] = ["цена++рынок1+рынок2+++", "продукт1+15,2+++++15,6++"]
_ArrayDisplay($arr)
_ReplaceSymbols($arr, "+", "!")
_ArrayDisplay($arr)
Func _ReplaceSymbols(ByRef $vremArray, $oldsymbol, $newsymbol)
For $i = 0 To UBound($vremArray) - 1
$vremArray[$i] = StringRegExpReplace($vremArray[$i], "\++", "+")
Next
EndFunc
Цитата:
А второй вопрос?
Код: #include <Array.au3>
Dim $arr[2] = ["цена++рынок1+рынок2+++", "продукт1+15,2+++++15,6++"]
_ArrayDisplay($arr)
_ReplaceSymbols($arr, "+", "!")
_ArrayDisplay($arr)
Func _ReplaceSymbols(ByRef $vremArray, $oldsymbol, $newsymbol)
For $i = 0 To UBound($vremArray) - 1
$vremArray[$i] = StringRegExpReplace($vremArray[$i], "\++", "+")
Next
EndFunc
Maza Faka
Tipulatoid 07:46 01-10-2008
Цитата:
Поддерживаю, я когда только начинал, то в справке всё казалось тёмным лесом, это теперь я другим очень часто справку читать советую (не всегда при простых задач), забывая что не все могут по справке разобраться.
Но всё же лезть в неё стоит, так, чтобы привыкнуть, со временем оно дойдёт
Maza Faka 08:03 01-10-2008
Цитата:
Как ни странно, но тут бы больше подошло обратное, типа: “Даже для продвинутых заглядывание в справку бывает полезным занятием” .
Для начинающих она больше всего полезна, просто начинающие не видят этой пользы ...
Цитата:
Справка - она для людей разбирающихся или полуразбирающихся. В первый раз - сложновато
Поддерживаю, я когда только начинал, то в справке всё казалось тёмным лесом, это теперь я другим очень часто справку читать советую (не всегда при простых задач), забывая что не все могут по справке разобраться.
Но всё же лезть в неё стоит, так, чтобы привыкнуть, со временем оно дойдёт
Maza Faka 08:03 01-10-2008
Цитата:
Не только, для начинающих она тоже очень полезна
Как ни странно, но тут бы больше подошло обратное, типа: “Даже для продвинутых заглядывание в справку бывает полезным занятием” .
Для начинающих она больше всего полезна, просто начинающие не видят этой пользы ...
Опять массивы
Код: #include <Array.au3>
Dim $anim[6] = ["жираф", "кот", "собака", "бегемот", "тигр", "лиса"]
Dim $StringsToFormat[2] = [3,5]
_ArrayDisplay ($anim)
_ArrayDisplay ($StringsToFormat)
_FormatStrings ($anim, $StringsToFormat)
Func _FormatStrings (ByRef $tmpArray, $StringsNums)
_ArrayDisplay ($tmpArray)
_ArrayDisplay ($StringsNums)
EndFunc
Код: #include <Array.au3>
Dim $anim[6] = ["жираф", "кот", "собака", "бегемот", "тигр", "лиса"]
Dim $StringsToFormat[2] = [3,5]
_ArrayDisplay ($anim)
_ArrayDisplay ($StringsToFormat)
_FormatStrings ($anim, $StringsToFormat)
Func _FormatStrings (ByRef $tmpArray, $StringsNums)
_ArrayDisplay ($tmpArray)
_ArrayDisplay ($StringsNums)
EndFunc
Tipulatoid
Цитата:
Можно и без вложенного 2-го цикла:
Код: #include <Array.au3> ;Only for _ArrayDisplay()
Dim $anim[6] = ["girafe", "cat", "dog", "begemot", "tiger", "fox"]
Dim $StringsToFormat[3] = [1, 5, 3]
_ArrayDisplay ($anim, "Before")
_FormatStrings ($anim, $StringsToFormat)
_ArrayDisplay ($anim, "After")
Func _FormatStrings (ByRef $tmpArray, $StringsNums)
For $i = 0 to UBound ($StringsNums) - 1
$tmpArray[$StringsNums[$i]] &= "+"
Next
EndFunc
Цитата:
Требуется, чтобы функция _FormatStrings прошлась циклом по всем строкам массива $tmpArray и в те строки, чьи номера равны значениям из массива $StringsNums добавила знак "+" в конец
Можно и без вложенного 2-го цикла:
Код: #include <Array.au3> ;Only for _ArrayDisplay()
Dim $anim[6] = ["girafe", "cat", "dog", "begemot", "tiger", "fox"]
Dim $StringsToFormat[3] = [1, 5, 3]
_ArrayDisplay ($anim, "Before")
_FormatStrings ($anim, $StringsToFormat)
_ArrayDisplay ($anim, "After")
Func _FormatStrings (ByRef $tmpArray, $StringsNums)
For $i = 0 to UBound ($StringsNums) - 1
$tmpArray[$StringsNums[$i]] &= "+"
Next
EndFunc
Давайте же воздадим хвалу ему за неоценимую и безвозмездную помощь!
Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
Предыдущая тема: Quintura Search
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.