Ru-Board.club
← Вернуться в раздел «Программы»

» AutoIT

Автор: zero1632
Дата сообщения: 17.09.2008 22:41
Помогите понять...

Есть замечательная программа Commview for WiFi , она умеет писать "снятые" пакеты в специальный файл своего собственного формата - ncf. Формат этот открытый и хорошо описанный на сайте разработчика. Мне надо написать простой конвертировщик в файл формата pcap, формат которого тоже можно найти. Можно ли это сделать средствами autoit?

Я спрашивал пару месяцев назад про то, можно ли в устанавливаемой средствами autoit программе после ее установке поправить пару байтиков - получил ответ, что лучше пользоваться сторонними прогами, на том и успокоился.
Так что, получается, autoit не может считать байт в файле по определенному адресу или записать в определенное место?

p.s. самое печальное что даже на официальном форуме успешно тыкают packet.dll и дергают устройства, но в файл не пишут
Автор: timsky
Дата сообщения: 17.09.2008 23:25

Цитата:
Есть замечательная программа Commview for WiFi , она умеет писать "снятые" пакеты в специальный файл своего собственного формата - ncf. Формат этот открытый и хорошо описанный на сайте разработчика. Мне надо написать простой конвертировщик в файл формата pcap, формат которого тоже можно найти. Можно ли это сделать средствами autoit?

Можно.

Цитата:
Я спрашивал пару месяцев назад про то, можно ли в устанавливаемой средствами autoit программе после ее установке поправить пару байтиков - получил ответ, что лучше пользоваться сторонними прогами, на том и успокоился.

Правильно говорят. Пощупай CodeFusion - классная и предельно простая штука.
Хотя может быть и есть какой-нить НЕХ.UDF ... хз
Автор: ViSiToR
Дата сообщения: 18.09.2008 00:48
timsky 00:25 18-09-2008
Цитата:
Хотя может быть и есть какой-нить НЕХ.UDF

Есть вроде на оф форуме, найти правда не смог . Есть также Memory UDF, может оно пригодится.

Добавлено:
Tipulatoid 17:58 17-09-2008
Цитата:
На всякий случай http://www.delta-greit.narod.ru/wizard.rar

Очень сложно отлаживать подобные скрипты, мой совет, лучше изначально скрипты приводить в читабельное состояние, как для себя (в первую очередь!), так и для других.

Вот изменённая версия, она глючит, но этот скрипт только для чтобы понять принцип того, как подобное можно сделать.

P.S
Я бы многое ещё изменил, например чтение перевода, это лучше делать при запуске скрипта (в массив), и с файла со структурой ini-файла (IniRead() и т.д).
Автор: Tipulatoid
Дата сообщения: 18.09.2008 04:03
ViSiToR

Цитата:
Вот изменённая версия

"Работай, хлопче, стамеской; старшой придет - топором поправит" Спасибо

Цитата:
скрипты приводить в читабельное состояние

Нуб я в программировании - обучаюсь вот с твоей помощью.
Автор: telyakov
Дата сообщения: 18.09.2008 16:13
Хочу сказать "Спасибо" Александру Нароцкому!,
хотя может и ошибаюсь в Фамилии за помощь
со скриптом установки Pragma 5.0!
Скрипт написан очень профессионально
и я многое из него почерпнул! Супер!

Из письма Sanja Alone:


Цитата:
Можете использовать:
http://sanjaalone.h15.ru/files/autoit-pragma.zip

Скрипт мультиязычный и оттестирован на WinXP SP3 ru и SP2 en.


И уже есть новый вопрос?
Как красиво вызывать окна из трея,
типа Pragma, FlashGet, не пользуясь
правой кнопкой мыши
с позиционированием
по координатам?
Заранее благодарен...

С уважением Алик Теляков
Автор: NORIO
Дата сообщения: 18.09.2008 18:42
как вести обратный поиск начиная с конца строки по направлению к началу
например если нужно найти .jpg
$extension = StringRegExp( "http://www-cache.daz3d.com/store/item_file/460/image_large.jpg" , "\z\.[[:alpha:]]*" , 1)
Автор: Hackproof
Дата сообщения: 18.09.2008 20:21
По сети вопрос - на одном компе стоит программа, которая при запущенной другой программе ждет подключений на порт. И скрипт с моего компьютера раз в пять секунд проверяет состояние этого порта. Если открыт - зеленый квадратик, закрыт - красный.
Клиент выглядит так:

Код: $socketmon=TCPListen($localaddres,$port)
$check=TCPAccept($socketmon)
If $check>=0 then
TCPClose($check)
TCPClose($socketmon) ; Не понял, что из этого правильно, сначала ставил одно, потом другое, сейчас обе строки.
EndIf
Автор: timsky
Дата сообщения: 18.09.2008 22:53
NORIO

Цитата:
$extension = StringRegExp( "http://www-cache.daz3d.com/store/item_file/460/image_large.jpg" , "(?i).*\.(...)" , 1)

Я так делаю.
Резалт будет в $extension[0]
Автор: Maza Faka
Дата сообщения: 19.09.2008 07:30
Hackproof
Попробуй так:

Код:
$socketmon = TCPListen($localaddres, $port)
If @error Then Exit

Do
    $check = TCPAccept($socketmon)
Until $check = -1

TCPCloseSocket($socketmon)
Автор: NORIO
Дата сообщения: 19.09.2008 08:26
timsky
Maza Faka
Спасибо.

Что значит это:
(?U) Invert greediness of quantifiers.

Чё то непонял описания, что он делает?
Автор: Hackproof
Дата сообщения: 19.09.2008 08:39
Maza Faka Не получится так сделать, слежение за портом - это одна из семи задач, которые выполняет программа, и они выполняются с разным интервалом. Соответственно, выходов из цикла тоже несколько.
Главное, что правильной переменной для закрытия соединения будет $socketmon. Спасибо.
Автор: Maza Faka
Дата сообщения: 19.09.2008 09:06
NORIO
Что значит это:
(?U) Invert greediness of quantifiers.
Info:
Что такое жадность кванификаторов
Жадность (регулярные выражения)
О "жадности" квантификаторов

Добавлено:
Подробный пример:

Код: $string = "Hello [good] world [morning] test"

$sResult = StringRegExpReplace($string, "\[.+\]", "") ;Нам нужно удалить текст в квадратных скобках

MsgBox(0, "", $sResult) ;Однако в результате мы видим, что удалился весь текст между первыми открывающими скобками _
;и последними закрывающими (это и есть жадность квантификатора '+')


$sResult = StringRegExpReplace($string, "\[.+?\]", "") ;Повторяем операцию, удаляем текст находящийся между квадратными _
;скобками, но прекращаем после первых же закрывающих квадратных _
;скобок с помощью метасимвола (?)


MsgBox(0, "", $sResult)
Автор: Tipulatoid
Дата сообщения: 19.09.2008 12:27
ViSiToR привел очень хорошую функцию проверки валидности e-mail-а

Код: Func _IsVailidEmail($sEmail)
    Return StringRegExp($sEmail, "^([a-zA-Z0-9_\-])([a-zA-Z0-9_\-\.]*)@(\[((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|" & "[0-9])\.){3}|((([a-zA-Z0-9\-]+)\.)+))([a-zA-Z]{2,}|(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\])$")
EndFunc ;==>_IsVailidEmail
Автор: ViSiToR
Дата сообщения: 19.09.2008 17:03
Tipulatoid 13:27 19-09-2008
Цитата:
Можно ли написать нечто похожее на проверку строки из нескольких (кол-во заранее неизвестно) мыл разделенных запятой и (необязательно) пробелом

Можно, но легче это сделать разделив строку в массив:


Код:
$sEmail = "sample@unknown.ru,sample2@unknown.ru, sample3@unknown.net"

$iIsVailid = _IsVailidEmail($sEmail, ",")
ConsoleWrite($iIsVailid)

Func _IsVailidEmail($sEmail, $sDelim="")
If $sDelim <> "" And StringInStr($sEmail, $sDelim) Then
Local
$aSplit = StringSplit($sEmail, $sDelim, 1)

For $i = 1 To UBound($aSplit)-1
If Not _IsVailidEmail(StringStripWS($aSplit[$i], 3)) Then Return 0
Next

Return
1
Else
Return
StringRegExp($sEmail, "^([a-zA-Z0-9_\-])([a-zA-Z0-9_\-\.]*)@(\[((25[0-5]|2[0-4][0-9]|" & _
"1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}|((([a-zA-Z0-9\-]+)\.)+))" & _
"([a-zA-Z]{2,}|(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\])$")
EndIf
EndFunc
Автор: 4kusnik
Дата сообщения: 19.09.2008 22:26
Подскажите пожалуйста следущее, после команды Send ("!y"), что нужно прописать, чтобы указать место сохранения файла, имя файла и тип файла.
Автор: ViSiToR
Дата сообщения: 20.09.2008 00:03
4kusnik 23:26 19-09-2008
Цитата:
после команды Send ("!y"), что нужно прописать, чтобы указать место сохранения файла, имя файла и тип файла.

Не вижу связи, почему после Send("!y") нужно указывать место сохранения и т.п.?
Возможно требуется просто вывести диалог сохранения файла?


Код:
$sDataToSave = "Some Data"
$sFilePath = FileSaveDialog("Сохранить как...", @ScriptDir, "Text File (*.txt)", 18, "MyFile")
If Not @error Then FileWrite($sFilePath, $sDataToSave)
Автор: timsky
Дата сообщения: 20.09.2008 02:27
ViSiToR
Он видимо в меню какой-то проги выбирает пункт "Save"
Я скачал твою УДФку перехвата ошибок. Симпотная штука, но не совсем то, что мне нужно.
Вот если исполняешь скрипт в формате au3, то окно ошибки информативно, т.е. указана строка и т.д.., а если в ЕХЕ, то жопа получается, пока отловишь баг.
Приходится практически после каждой операции ставить обработчик ошибки типа @error, возвращенной переменной (кстати RunWait зачастую возвращает 0 даже тогда, когда все прошло успешно) или логи писать.
Есть какая-нибудь возможность сделать так, чтобы при выполнении ЕХЕ были такие же информативные мессаги ошибок.
И еще есть какой-нибудь синтакс чекер? А то бывает, скомпилишь, вроде все ОК, а тут бац и ошибка, причем явная, синтаксическая, но при компиляции была тишина


4kusnik
Если так, то просто тем же сендом шли нужно кол-во ТАБов и текст, в котором будет путь и имя файла с расширением. А еще можно попробовать слать на "control" ... то поле, куда вписывется все это.

Добавлено:
Да... и что такое CUI?
Автор: ViSiToR
Дата сообщения: 20.09.2008 03:33
timsky 03:27 20-09-2008
Цитата:
Приходится практически после каждой операции ставить обработчик ошибки типа @error

На то он и существует . UDF что я выкладывал не предназначен для отлова ошибок, это средство для более приятной интеракции программы с пользователем


Цитата:
Есть какая-нибудь возможность сделать так, чтобы при выполнении ЕХЕ были такие же информативные мессаги ошибок.

Нет. Это не предусмотрено самим аутоитом, хотя в более ранних версиях было больше информации.


Цитата:
есть какой-нибудь синтакс чекер?

Он в SciTE'е есть, а просто интересно, в чём набираешь код?

P.S
Самый лучши способ отлаживать ошибки, это их предотвращение - Нужно так писать код, чтобы критичных ошибок небыло, а тут уже нужен опыт, знания, и т.п.


Цитата:
что такое CUI?

«Common User Interface» или «Command User Interface», программа работает как обработчик командной строки.
Автор: timsky
Дата сообщения: 20.09.2008 05:27

Цитата:
Он в SciTE'е есть, а просто интересно, в чём набираешь код?

Notepad++ - Рулезный блохнот!

Есть Windows Server 2003 R2, на нем стоит IE 7.
Иногда не могу приаттачить окно ИЕ7 по хендлу, вернее не могу тогда, когда это нужно
Вобщем, программа огромная, весь код выкладывать не буду, но баг появился и не знаю, как его обойти:

$account = _IECreate ('https://accounts.site.com', 0, $debug) ; открывается сайт

...здесь тупо заполняются всякие формы, жмутся кнопки... ничего особенного...
Функции, котрые отрабатывают прекрасно:

_IENavigate
_IEFormGetObjByName
_IEFormElementGetObjByName
_IEFormElementSetValue
_IEFormSubmit
_IELoadWait
_IEBodyReadText

... вобщем ничего сверхъестественного.

Дальше происходит это:

Цитата:
$hwnd = _IEPropertyGet ($account, 'hwnd')
$title = WinGetTitle ($hwnd)
$title = WinSetTitle ($hwnd,'', $title & ' # ' & $CmdLineRaw)


и дальше RunWait'ом заускается другая аппликуха... не моя, которая в свою очередь потом запускает мою следующую и тоже ждет ее завершения, т.е. мой первый скрипт работает в то время, как по цепочке запускается второй. Что делает второй:

$hwnd = WinGetHandle ($CmdLineRaw) ;$CmdLineRaw тут такой же как и у предыдущего.
$account = _IEAttach ($hwnd, 'HWND')

И вот нихрена не аттачится, дает @error 7 ($_IEStatus_NoMatch) = No Match
Хоть тресни. Написал короткие тестовые скрипты, пробовал закрывать всю цепочку при возникновении ошибки и аттачить уже тестовый скрипт по тайтлу, хендлу, тайтлу окна - без толку.
Закрываю Эксплорер и снова отркываю - тестовый скрипт начинает работать. В чем ошибка? Может как-то деаттачить нужно сперва?
Автор: ViSiToR
Дата сообщения: 20.09.2008 06:46
timsky 06:27 20-09-2008
Цитата:
Notepad++

- SciTE для аутоита специально заточен, я не представляю как можно писать код в блокноте (даже с «++»'ом ).


Цитата:
Написал короткие тестовые скрипты

Кидай их сюда... хотя у меня нет IE7, пока только 6, но проверить думаю можно и там.

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

У тебя же проблема в функции «_IEAttach», вот с неё и нужно исходить, проверять всё что её касается; переменные, параметры, функции перед ней и после, при каких обстоятельствах вызывается функция, проверять вобщем нужно всё, проблема обязательно всплывёт!


Цитата:
Закрываю Эксплорер и снова отркываю - тестовый скрипт начинает работать. В чем ошибка?

Возможно хендл уже не тот (при вызове скрипта), и при новом окне IE скрипт его "подхватывает".
Автор: Tipulatoid
Дата сообщения: 20.09.2008 07:20
ViSiToRThnx
Добавлено
Записываю в массив секцию ini-файла

Код: $IniGeneral = IniReadSection("champ.ini", "General")
Автор: timsky
Дата сообщения: 20.09.2008 14:35

Цитата:
SciTE для аутоита специально заточен, я не представляю как можно писать код в блокноте

Счупал я этот SciTE. Заточен - это хорошо, но в нем нет всех мелочей, которые N++ изначально поддерживает без всяких заточек.
Это как Опера в свое время... вроде бы ничего особенного, но когда привыкнешь - все остальное уже не то. Плюс он изначально понимает АУ3 файлы.
Вот недавно у товарища был, он в SciTE пишет. Пока ковырялся в его скриптах заметил, что нет того, к чему так привык: двойной щелчок по слову/переменной просто выделяет слово. В N++ при этом выделяются все такие переменные/слова в тексте... очень удобно... да вообще куча наворотов в нем, есть консоль, правда я ее не юзаю... н знаю, чего в нем нет, что есть в SciTE.


Цитата:
А вообще, уменее находить проблему в скрипте желательно приобрести как можно раньше, это поможет в дальнейшем писать скрипты.
Я всегда пытаюсь свести скрипт к минимому, проверяю как будет отрабатывать без того или инного куска кода, и постепенно дохожу до корня проблемы.


Я если пишу код, который еще не опробовал - делаю отдельный пробный скрипт, обкатываю его и обработку ощибок, а потом уже втыкаю в основной код. Так вот это все работало по отдельности, но в реале такой вот затык.
вот при затыке тестовый скрипт выдает правильный хендл, тайтл, все нормально вплоть до _IEAttach, на этом месте выдает @error 7 и все тут. Как только закрываю IE и пробую снова, но уже на тестовых скриптах - все ок.
SetTitle.au3

Цитата:
#include <IE.au3>
AutoitSetOption ('WinTitleMatchMode', 2)

$login = 'ЗДЕСЬ ЛОГИН'
$pass = 'ЗДЕСЬ ПАРОЛЬ'

$account = _IECreate ('https://accounts.craigslist.org', 0, 1)

$form = _IEFormGetObjByName ($account, 'login')

$loginBox = _IEFormElementGetObjByName ($form, 'inputEmailHandle')
$passBox = _IEFormElementGetObjByName ($form, 'inputPassword')
_IEFormElementSetValue ($loginBox, $login)
_IEFormElementSetValue ($passBox, $pass)

_IEFormSubmit ($form)

_IELoadWait ($account)


$hwnd = _IEPropertyGet ($account, 'hwnd')
MsgBox (64, '$hwnd', $hwnd)

$title = WinGetTitle ($hwnd)
MsgBox (64, 'Old Title', $title)

$title = WinSetTitle ($hwnd,'', $title & ' - ' & $CmdLineRaw)

$title = WinGetTitle ($hwnd)
MsgBox (64, 'New Title', $title)


GetTitle.au3

Цитата:
#include <IE.au3>
AutoitSetOption ('WinTitleMatchMode', 2)

$hwnd = WinGetHandle ($CmdLineRaw)

$account = _IEAttach ($hwnd, 'HWND')

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!')
EndSelect

MsgBox (64,'','OK?')
Автор: Maza Faka
Дата сообщения: 20.09.2008 15:27
Tipulatoid

Цитата:
Это правильно, или есть более прямой способ?

Не совсем понял, что именно ты хочешь сделать, это?

Код:
$IniGeneral = IniReadSection("champ.ini", "General")

MsgBox(0, "", $IniGeneral[3][1])
Автор: ViSiToR
Дата сообщения: 20.09.2008 16:51
timsky 15:35 20-09-2008
Цитата:
н знаю, чего в нем нет, что есть в SciTE

Syntax Checker?


Цитата:
SetTitle.au3
.....
GetTitle.au3

Зачем так сложно? и зачем командная строка используется?
И как они между собой общаются?
Мне их запускать вместе, или как?

Тут...

Код: $hwnd = WinGetHandle ($CmdLineRaw)
Автор: timsky
Дата сообщения: 20.09.2008 17:15

Цитата:
Подробнеее опиши, что тут из этих скриптов должно получится.

Эти оба скрипта работают в виде ЕХЕ и командная строка 100% передается обоим одна и та же. Первый скрипт устанавливает в тайтл IE метку, по которой 2-й скрипт это окно среди возможных нескольких с одинаковым тайтлом находит. IE 7 работает в режиме окон, не вкладок.

Смысл таков, что первый скрипт открывает этот сайт, логинится, производит определенные действия (переходит по сслыкам, заполняет формы... все функции _IE...), меняет тайтл окна и затем запускает через RunWait стороннее приложение, которое в результате работы запускает 2-й скрипт... тоже ожидая его завершения.
Т.е. выстраивается цепочка, где 1-й скрипт ждет завершения стороннего приложения (которое никак не взаимодействует с IE), а то в свою очередь ждет завершения работы 2-го скрипта.
Это все работает, (в том числе и на IE 7 на Win 2003) проверено уже мною несколько раз. Второй скрипт берет Хэндл тот, что нужно, не срабатывает только IEAttach
Если я закрываю 1-й скрипт, стороннее приложение и пытаюсь приаттачиться к окну IE - все равно не срабатывает. Я могу делатьс окном что угодно Win... , только IEAttach не срабатывает
Если закрываю окно IE и тут же запускаю тестовые скрипты, выполняющие то же самое, то работает.

Выложенные тестовые скрипты нужно просто запустить сперва SetTitle (с параметром ком строки) ... это сокращенный вариант 1-гомоего скрипта, стороннее приложение, ессно опускаем, т.к. это сложный лиц. софт, который просто так не заработает.
Далее запустить GetTitle (с таким же параметром ком строки) - это тоже сокращенный вариант 2-го скрипта, но начинается тот точно так же.
Тестовые отрабатывают нормально, а вот в реале не могу понять, в чем трабля... думал может это баг какой-то известный кому-нибудь...
Автор: ViSiToR
Дата сообщения: 20.09.2008 18:30
timsky
Давай попробуем так - $CmdLineRaw использовать пока не будем (в целях отладки), вместо этого придумаем какой нибудь уникальный заголовок, чтобы исключить проблему с распознаванием заголовка.

В первом скрипте (SetTitle) используй это:


Код: $sUniqueTitle = "~ _____ My Title _____ ~"

$title = WinSetTitle($hwnd,'', $title & ' - ' & $sUniqueTitle)
Автор: timsky
Дата сообщения: 21.09.2008 00:29

Цитата:
Если будет таже ошибка, проверь что выводится во второй строке Msgbox'а, если ожидаемый заголовок окна, то проблема видимо в распознавании объекта в окне IE

Да, так и есть
В мессадж боксе был нужный заголовок.
Я проверил на реальном окне в боевых условиях. И адаптировал твой вариант второго скрипта:

Вот само окно:

Цитата:
>>>> Window <<<<
Title:    Telephone Account Verification - Windows Internet Explorer # 8174579140
Class:    IEFrame
Position:    132, 132
Size:    800, 600
Style:    0x14CF0000
ExStyle:    0x00000100
Handle:    0x001105B4

>>>> Control <<<<
Class:    
Instance:    
ClassnameNN:    
Advanced (Class):    
ID:    
Text:    
Position:    
Size:    
ControlClick Coords:    
Style:    
ExStyle:    
Handle:    0x000B06DA

>>>> Mouse <<<<
Position:    631, 145
Cursor ID:    0
Color:    0xAAAAAA

>>>> StatusBar <<<<
1:    
2:    
3:    
4:    
5:    
6:    
7:    
8:    
9:    
10:    

>>>> Visible Text <<<<
Command Bar
Favorites Command Bar
Navigation Bar
Page Control
https://accounts.craigslist.org/login/phnact?rt=P&rp=//B/fns/#
https://accounts.craigslist.org/login/phnact?rt=P&rp=//B/fns/#
Live Search
Search Control
Telephone Account Verification - Windows Internet Explorer
Zoom Level
ITBarHost
Menu Bar


>>>> Hidden Text <<<<
Live Search


Вот окно контрола Internet Explorer_Server1... ну то что рендерится движкомм ИЕ.. ты меня понял :

Цитата:
>>>> Window <<<<
Title:    Telephone Account Verification - Windows Internet Explorer # 8174579140
Class:    IEFrame
Position:    132, 132
Size:    800, 600
Style:    0x14CF0000
ExStyle:    0x00000100
Handle:    0x001105B4

>>>> Control <<<<
Class:    Internet Explorer_Server
Instance:    1
ClassnameNN:    Internet Explorer_Server1
Advanced (Class):    [CLASS:Internet Explorer_Server; INSTANCE:1]
ID:    
Text:    
Position:    0, 60
Size:    792, 493
ControlClick Coords:    530, 33
Style:    0x56000000
ExStyle:    0x00000000
Handle:    0x001505AE

>>>> Mouse <<<<
Position:    666, 248
Cursor ID:    0
Color:    0xFFFFFF

>>>> StatusBar <<<<
1:    
2:    
3:    
4:    
5:    
6:    
7:    
8:    
9:    
10:    

>>>> Visible Text <<<<
Command Bar
Favorites Command Bar
Navigation Bar
Page Control
https://accounts.craigslist.org/login/phnact?rt=P&rp=//B/fns/#
https://accounts.craigslist.org/login/phnact?rt=P&rp=//B/fns/#
Live Search
Search Control
Telephone Account Verification - Windows Internet Explorer
Zoom Level
ITBarHost
Menu Bar


>>>> Hidden Text <<<<
Live Search



Цитата:
Цитата:if the window contains a control called "Internet Explorer_Server1" then you can attach to it with this function, if it does not it is a standard window and traditional AutoIt windows functions must be used to control it.



Т.е есть возможность что IE создаёт окно с не стандартными элементами, для какой цели, или при каких обстоятельствах пока не ясно...

А вот тут немного не понял текст из справки. Есть решение?
И где ты эту цитату взял?

Автор: Tipulatoid
Дата сообщения: 21.09.2008 01:06
ViSiToR
Maza Faka
Ребят, спасибо за ответы. Наверное, стоит сформулировать задачу наиболее полно.
Итак, требуется сохранять в ini - файл и затем работать со следующими данными:
1. Общие настройки: (привожу не все для кратости)
а) Число периодов в игре
б) Число групп команд в игре (от этого числа зависит кол-во секций [Group№] далее в ini - файле; может быть от 1 до 36)
2. Информация по каждой группе команд:
a) Электронный адрес, с которого высылать отчеты командам
6) его пароль
в) его логин
г) его POP3 - сервер
д) его SMTP - сервер
е) Путь где лежат файлы группы
ж) Число команд в группе (может быть от 2 до 6), по каждой команде нужна информация:
    ж1) ее название
    ж2) ее пароль доступа к отчетам
    ж3) ее электронный адрес куда высылать отчеты

Итак, эти данные сохраняю в ini - файл такой структуры (если структура неудачна, посоветуйте плиз как переделать)
champ.ini

Код: [General]
PeriodsQuan=20
GroupQuan=2
[Group1]
GroupEmail=1lalala@unknown.ru
GroupEmailPass=1qwertyuiop
GroupEmailLogin=1tototo
GroupEmailPOP=1poppopop
GroupEmailSMTP=1smtpsmtp
GroupPath=C:\Games\Delta001
GroupTeamsQuan=6
[Group1Teams]
Team1Name=Команда1-1
Team1Pass=pass1-1
Team1Email=team1-1@unknown.net,team1-1@unknown.ru
Team2Name=Команда1-2
Team2Pass=pass1-2
Team2Email=team1-2@unknown.net,team1-2@unknown.ru
Team3Name=Команда1-3
Team3Pass=pass1-3
Team3Email=team1-3@unknown.net,team1-1@unknown.ru
Team4Name=Команда1-4
Team4Pass=pass1-4
Team4Email=team1-4@unknown.net,team1-4@unknown.ru
Team5Name=Команда1-5
Team5Pass=pass1-5
Team5Email=team1-5@unknown.net,team1-5@unknown.ru
Team6Name=Команда1-6
Team6Pass=pass1-6
Team6Email=team1-6@unknown.net,team1-6@unknown.ru
[Group2]
GroupEmail=2lalala@unknown.ru
GroupEmailPass=2qwertyuiop
GroupEmailLogin=2tototo
GroupEmailPOP=2poppopop
GroupEmailSMTP=2smtpsmtp
GroupPath=C:\Games\Delta002
GroupTeamsQuan=5
[Group2Teams]
Team1Name=Команда2-1
Team1Pass=pass2-1
Team1Email=team2-1@unknown.net,team2-1@unknown.ru
Team2Name=Команда2-2
Team2Pass=pass2-2
Team2Email=team2-2@unknown.net,team2-2@unknown.ru
Team3Name=Команда2-3
Team3Pass=pass2-3
Team3Email=team2-3@unknown.net,team2-1@unknown.ru
Team4Name=Команда2-4
Team4Pass=pass2-4
Team4Email=team2-4@unknown.net,team2-4@unknown.ru
Team5Name=Команда2-5
Team5Pass=pass2-5
Team5Email=team2-5@unknown.net,team2-5@unknown.ru
Автор: Maza_Faka
Дата сообщения: 21.09.2008 08:19
Tipulatoid
Непонимаю, зачем тебе нужно создавать массив(ы) с содержимым этого ini-файла? Работай непосредственно с ini-файлом. Надо внести изменения в ini-файл - используй функцию IniWrite(), надо прочитать значение - используй функцию IniRead(), к чему весь этот геморрой с массивами?

P.S.
$Games[7][3]
Это не трёхмерный массив, а двухмерный.
Автор: Tipulatoid
Дата сообщения: 21.09.2008 08:30
Maza_Faka

Цитата:
к чему весь этот геморрой с массивами?

Большей частью потому, что ViSiToR так прокоментировал мой код

Цитата:
P.S
Я бы многое ещё изменил, например чтение перевода, это лучше делать при запуске скрипта (в массив), и с файла со структурой ini-файла (IniRead() и т.д).

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

Предыдущая тема: Quintura Search


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.