Показать полную графическую версию : [архив - Часть 2] AutoIt скрипты
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:
Попробуй обратиться к Валере.
Creat0R,Кроме метода использования который привёл Maza Faka (более разумный метод), можно ещё запускать сам vbs код из под AutoIt'а... но мне почему то кажется что речь не про vbs, а про Visual Basic? хотя всё что можно на нём сделать, на AutoIt тоже можно »
спасибо, речь действительно идет о Visual Basic. Попробую реализовать в Autoit, хотя все что связано со строками и сортировкой и поиском, как мне кажется проще на V B. Сейчас почитаю - (Edit In Place Listview (multi-column)
Vikma19,
хотя все что связано со строками и сортировкой и поиском, как мне кажется проще на V B
Я особо не знаком с синтаксисом VB, но знаю что проще сделать именно там, где это возможно для вас сделать :) (это как с выбором дороги по которой нужно идти - короче будет всегда та дорогоа, которая нам известна ;) ). Но на AutoIt работать со строками, поиском, довольно не сложно, хотя вот сортировка немного сомнительна (в некоторых случаях), тот же List View, приходится подключать внешние вызовы API, и тоже не всегда идеально.
Creat0R, (Edit In Place Listview (multi-column)) »
Извините, а какую версию использовать - я поставил последнюю и скрипт по этой ссылке не работает...
Vikma19,
какую версию использовать
Скорее всего 3.2.8.1, т.к скрипт был написан ещё раньше выпуска 3.2.10.0...
Скорее всего 3.2.8.1, т.к скрипт был написан ещё раньше выпуска 3.2.10.0... »
к сожалению с 3.2.8.1 тоже не работает- а по всему видно -это то что надо.
пробовал исправлять - но ошибки так и сыпятся.
Vikma19,
к сожалению с 3.2.8.1 тоже не работает
У меня работает :dont-know
пробовал исправлять - но ошибки так и сыпятся
Я исправил все ошибки (для 3.2.10.0), но некоторые функции изменились в синтаксисе, поэтому работоспособность скрипта нарушена :( - если у меня получится исправить, то выложу рабочий вариант.
если у меня получится исправить, то выложу рабочий вариант. »
большое спасибо
Помогите решить проблему. Есть исходный файл "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 Обучение Клэр
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
Афигеть вы просто гении... Весь день голову ломал!
Даже спасибо забыл сказать от радости! Спасибо огромное Мазафака и Креатор =)
Creat0R, У меня работает »
У меня такое впечатление, то я что-то не так делаю
1. Поставил версию 3.2.8.1
2. Я взял из зипа по адресу (Edit In Place Listview (multi-column)) два файла
а) _EipListView ;b) ListViewEIP
Какова последовательность действий в дальнейшем.
Подскажите пожалуйста.
Vikma19,
Какова последовательность действий в дальнейшем.
Поместить их в одну папку, и просто запустить ListViewEIP.au3 :)
Creat0R, Поместить их в одну папку, и просто запустить ListViewEIP.au3 »
Поместил, запустил - ошибка!(так я уже делал)
C:\Documents and Settings\user\Desktop\EIPListView\ListViewEIP.au3 (3) : ==> Error opening the file.:
#include <user\_EIPListView.au3>
Vikma19,
Error opening the file.:
#include <user\_EIPListView.au3>
Упс, забыл про это :shuffle: , там нужно user\ заменить на .\ (или вовсе убрать).
Creat0R, Упс, забыл про это , там нужно user\ заменить на .\ (или вовсе убрать). »
Тот же эффект.
Error opening the file.:
#include <_EIPListView.au3>
Vikma19,
А если так:
#include '_EIPListView.au3'
Или ещё полный путь добавить к файлу.
Creat0R, Или ещё полный путь добавить к файлу. »
Ой! Спасибо!
Перенес один файл. А _EIPListView.au3 оставил в папке и указал полный путь к нему(С: documents.... ит.д.)
Заработало! Извини за доставучесть. Спасибо! Завтра буду разбираться дальше.
Почему не работало, когда оба файла были объединены - не понял.
Ну как в Excel вряд ли, но в справке есть примеры редактирования Item-ов, вот немного изменённый пример из справки: »
А как быть при наличии 2-х окон List_View ?
Func WM_NOTIFY должна определить какое окно послало вызов или нужна отдельная ф-я ?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.