Войти

Показать полную графическую версию : [архив - Часть 2] AutoIt скрипты


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 [49] 50

Creat0R
13-01-2008, 16:41
Vikma19, можно ли объединить Autoit и VB
Кроме метода использования который привёл Maza Faka (более разумный метод), можно ещё запускать сам vbs код из под AutoIt'а... но мне почему то кажется что речь не про vbs, а про Visual Basic? хотя всё что можно на нём сделать, на AutoIt тоже можно ;)

а как с SubItem и с вводом новых данных в пустую ячейку?
на оф. форуме это сделали (Edit In Place Listview (multi-column) (http://www.autoitscript.com/forum/index.php?showtopic=44132)), правда есть иногда проблемы с использованием многих колонок, а также если использовать иконки/чекбоксы для элементов..

rimm, кто может помочь с английским переводом описаний функций
Учить скриптинг без знании (понимании) английского (хотябы базового) довольно сложно, если конечно не учить язык вроде глагола :biggrin:

Попробуй обратиться к Валере.

Vikma19
13-01-2008, 16:58
Creat0R,Кроме метода использования который привёл Maza Faka (более разумный метод), можно ещё запускать сам vbs код из под AutoIt'а... но мне почему то кажется что речь не про vbs, а про Visual Basic? хотя всё что можно на нём сделать, на AutoIt тоже можно »

спасибо, речь действительно идет о Visual Basic. Попробую реализовать в Autoit, хотя все что связано со строками и сортировкой и поиском, как мне кажется проще на V B. Сейчас почитаю - (Edit In Place Listview (multi-column)

Creat0R
13-01-2008, 17:13
Vikma19,
хотя все что связано со строками и сортировкой и поиском, как мне кажется проще на V B

Я особо не знаком с синтаксисом VB, но знаю что проще сделать именно там, где это возможно для вас сделать :) (это как с выбором дороги по которой нужно идти - короче будет всегда та дорогоа, которая нам известна ;) ). Но на AutoIt работать со строками, поиском, довольно не сложно, хотя вот сортировка немного сомнительна (в некоторых случаях), тот же List View, приходится подключать внешние вызовы API, и тоже не всегда идеально.

Vikma19
13-01-2008, 18:07
Creat0R, (Edit In Place Listview (multi-column)) »

Извините, а какую версию использовать - я поставил последнюю и скрипт по этой ссылке не работает...

Creat0R
13-01-2008, 23:29
Vikma19,
какую версию использовать
Скорее всего 3.2.8.1, т.к скрипт был написан ещё раньше выпуска 3.2.10.0...

Vikma19
14-01-2008, 11:16
Скорее всего 3.2.8.1, т.к скрипт был написан ещё раньше выпуска 3.2.10.0... »

к сожалению с 3.2.8.1 тоже не работает- а по всему видно -это то что надо.
пробовал исправлять - но ошибки так и сыпятся.

Creat0R
14-01-2008, 11:34
Vikma19,
к сожалению с 3.2.8.1 тоже не работает
У меня работает :dont-know

пробовал исправлять - но ошибки так и сыпятся
Я исправил все ошибки (для 3.2.10.0), но некоторые функции изменились в синтаксисе, поэтому работоспособность скрипта нарушена :( - если у меня получится исправить, то выложу рабочий вариант.

Vikma19
14-01-2008, 12:36
если у меня получится исправить, то выложу рабочий вариант. »

большое спасибо

Timurko
14-01-2008, 12:44
Помогите решить проблему. Есть исходный файл "source1.txt" там лежит ТВ-Программа без форматирования данного рода.

05:00, 22:30 Малхолланд Драйв
07:30 Евротрип
09:00 Свадьба на Рождество
11:00 Без ума от любви
13:00 Брюс Всемогущий
15:00 Красная шапочка
16:30 Нечего декларировать
18:30 Ze фильм
20:30 Львиное сердце
01:00 Увеселительница
03:00 Обучение Клэр

Я забабашил скрипт который бы брал от туда числа отдельно определял название канала и заменял на шаблонный текст

#include <file.au3>
#include <Array.au3>

Dim $strArray, $file

$chanels = 'TV1000|РБК|Дамский клуб|Детский мир\r|Школьник ТВ|Eurosport2|Eurosport|Explorer|Discovery\r|Animal Planet|Viasat History|365\r|КиноСоюз|Наше Новое Кино|Дом Кино|Авто плюс|Боец\r|Звезда\r|MTV-Россия|Муз ТВ|STYLE\r|Теленяня'

$file = "source.txt"

_FileReadToArray( $file , $strArray)

_ArrayInsert( $strArray,1,"<br>")
_ArrayInsert( $strArray,2,"<br>")

For $i = 0 To UBound($strArray)-2
$strArray[$i] = StringRegExpReplace($strArray[$i], $chanels, '<br>' & @LF & 'канал \0')
Next

_FileWriteFromArray("temporary.txt",$strArray,1)


Этот скрипт вроде работает нормально, пишу еще один скрипт который бы определял сколько сейчас времени и взависимости от последнего убирал бы передачи которые уже прошли или будут дольше чем через 2 часа:

#include <file.au3>
Dim $strArray

$file = "temporary.txt"

_FileReadToArray( $file , $strArray)
MsgBox(0, "", UBound($strArray)-2)
For $i = 1 To UBound($strArray)
$arraytext = StringRegExp($strArray[$i], '(\d\d):(\d\d).+',2)
if (@Error=1) then ContinueLoop;
$prgtime=$arraytext[1]+($arraytext[2]/60)
;Если время в передаче меньше 4 часов утра то прибавляем 24 часа чтобы он не подумал что время после полуночи меньше реального и не удалил
if ($prgtime<=4) then $prgtime=$prgtime+24
;Также навсякий случай и с реальным временем
$curtime=@HOUR+@MIN/60
if ($curtime<=4) then $curtime=$curtime+24
;Если передача уже прошла то удалять ее
if (($prgtime)<=($curtime)) then
_FileWriteToLine($file, $i, "", 1)
_FileReadToArray( $file , $strArray)
endif
;Вот тут я хотел чтобы еще удалялись программы которые будут больше через 2 часа
if (($prgtime)>=($curtime+2)) then
_FileWriteToLine($file, $i, "", 1)
_FileReadToArray( $file , $strArray)
endif
Next
FileClose($file)

http://forum.oszone.net/attachment.php?attachmentid=7921&stc=1&d=1200305273
Но Выскакивает ошибка... Что неправильный тут массив(Или регэкспы), хотя часть работы при этом программа делает.

И еще: Пожалуйста помогите еще, как сделать так чтобы например есть строка:

05:00, 22:30 Малхолланд Драйв
07:30 Евротрип
09:00 Свадьба на Рождество
11:00 Без ума от любви
13:00 Брюс Всемогущий
15:00 Красная шапочка
16:30 Нечего декларировать
18:30 Ze фильм
20:30 Львиное сердце
01:00 Увеселительница
03:00 Обучение Клэр
И время через запятую выставлялось бы в верное время вот так:

05:00 Малхолланд Драйв
07:30 Евротрип
09:00 Свадьба на Рождество
11:00 Без ума от любви
13:00 Брюс Всемогущий
15:00 Красная шапочка
16:30 Нечего декларировать
18:30 Ze фильм
20:30 Львиное сердце
22:30 Малхолланд Драйв
01:00 Увеселительница
03:00 Обучение Клэр

Creat0R
14-01-2008, 14:13
Timurko,
С массивом я вижу одну проблему - нужно к Ubound() добавить -1...

For $i = 1 To UBound($strArray)-1

время через запятую выставлялось бы в верное время
Через RegExp сложновато (хотя мне кажется вовсе не реально :) ), но вот через массив...

#include <Array.au3>

$String = _
"05:00, 22:30 Малхолланд Драйв" & @CRLF & _
"07:30 Евротрип" & @CRLF & _
"09:00 Свадьба на Рождество" & @CRLF & _
"11:00 Без ума от любви" & @CRLF & _
"13:00 Брюс Всемогущий" & @CRLF & _
"15:00 Красная шапочка" & @CRLF & _
"16:30 Нечего декларировать" & @CRLF & _
"18:30 Ze фильм" & @CRLF & _
"20:30 Львиное сердце" & @CRLF & _
"01:00 Увеселительница" & @CRLF & _
"03:00 Обучение Клэр"

Dim $aStrArray = StringSplit(StringStripCR($String), @LF)
Dim $aNewArray[1]

For $i = 1 To $aStrArray[0]
If StringRegExp($aStrArray[$i], ", \d\d:\d\d") Then
$aNewArray[0] += 2
ReDim $aNewArray[$aNewArray[0] + 1]
$aNewArray[$aNewArray[0]-1] = StringRegExpReplace($aStrArray[$i], ", \d\d:\d\d", "")
$aNewArray[$aNewArray[0]] = StringRegExpReplace($aStrArray[$i], ".*, (\d\d:\d\d.*$)", "\1")
Else
$aNewArray[0] += 1
ReDim $aNewArray[$aNewArray[0] + 1]
$aNewArray[$aNewArray[0]] = $aStrArray[$i]
EndIf
Next

_ArraySort($aNewArray, 0, 1)
_ArrayDisplay($aNewArray)

Совсем другое дело ;)

Maza Faka
14-01-2008, 16:39
Timurko
Привет! Так сказать быстрый бета вариант, так, как ухожу домой :) Если заинтересует красивый вариант стукни в ПМ. ;)
#include <Array.au3>
#include <File.au3>

Dim $aStrings

_FileReadToArray("c:\source.txt", $aStrings)

$aMaxIndex = _ArrayMaxIndex($aStrings, 1, 1)

For $i = 1 To $aMaxIndex
$arrayText = StringRegExp($aStrings[$i], "\d*:\d*", 3)
$pTime = StringRegExpReplace($arrayText[0], ":", "")
If $pTime > @HOUR & @MIN Then FileWriteLine("c:\temp.txt", $aStrings[$i])
Next

For $i = $aMaxIndex To $aStrings[0]
$arrayText = StringRegExp($aStrings[$i], "\d*:\d*", 3)
$pTime = StringRegExpReplace($arrayText[0], ":", "")
If $pTime < 0200 Then FileWriteLine("c:\temp.txt", $aStrings[$i])
Next

Timurko
14-01-2008, 16:44
Афигеть вы просто гении... Весь день голову ломал!

Даже спасибо забыл сказать от радости! Спасибо огромное Мазафака и Креатор =)

Vikma19
14-01-2008, 20:04
Creat0R, У меня работает »

У меня такое впечатление, то я что-то не так делаю

1. Поставил версию 3.2.8.1
2. Я взял из зипа по адресу (Edit In Place Listview (multi-column)) два файла
а) _EipListView ;b) ListViewEIP

Какова последовательность действий в дальнейшем.

Подскажите пожалуйста.

Creat0R
14-01-2008, 20:35
Vikma19,
Какова последовательность действий в дальнейшем.
Поместить их в одну папку, и просто запустить ListViewEIP.au3 :)

Vikma19
14-01-2008, 21:12
Creat0R, Поместить их в одну папку, и просто запустить ListViewEIP.au3 »

Поместил, запустил - ошибка!(так я уже делал)



C:\Documents and Settings\user\Desktop\EIPListView\ListViewEIP.au3 (3) : ==> Error opening the file.:
#include <user\_EIPListView.au3>

Creat0R
14-01-2008, 21:29
Vikma19,
Error opening the file.:
#include <user\_EIPListView.au3>
Упс, забыл про это :shuffle: , там нужно user\ заменить на .\ (или вовсе убрать).

Vikma19
14-01-2008, 22:08
Creat0R, Упс, забыл про это , там нужно user\ заменить на .\ (или вовсе убрать). »

Тот же эффект.

Error opening the file.:
#include <_EIPListView.au3>

Creat0R
14-01-2008, 23:47
Vikma19,
А если так:

#include '_EIPListView.au3'

Или ещё полный путь добавить к файлу.

Vikma19
15-01-2008, 00:16
Creat0R, Или ещё полный путь добавить к файлу. »

Ой! Спасибо!

Перенес один файл. А _EIPListView.au3 оставил в папке и указал полный путь к нему(С: documents.... ит.д.)

Заработало! Извини за доставучесть. Спасибо! Завтра буду разбираться дальше.

Почему не работало, когда оба файла были объединены - не понял.

gregaz
15-01-2008, 05:34
Ну как в Excel вряд ли, но в справке есть примеры редактирования Item-ов, вот немного изменённый пример из справки: »
А как быть при наличии 2-х окон List_View ?
Func WM_NOTIFY должна определить какое окно послало вызов или нужна отдельная ф-я ?




© OSzone.net 2001-2012