Что нового

[Сеть, интернет] чтение/редактирование txt файла из сети.

astati

Новичок
Сообщения
145
Репутация
4
Если такая тема была(что осень даже возможно дайте ссылки)
Есть txt файл лежащий в сети на моём хосте, с содержимым текстом.(текст разной длинны)
Код:
*****************;ххххххххххххххх
************;ххххххххххххххх

Нужно что бы при работе скрипта - он связывался с файлом брал первую строку. До ; задавал как первую переменную, а после как вторую. А к концу работы удалял из файла эту строку.
 
Автор
A

astati

Новичок
Сообщения
145
Репутация
4
Код:
#include <INet.au3>

$sServer_Page = 'http://********.net/r****ts'
	$silk = _INetGetSource($sServer_Page)
	If Not @error Then
         
    EndIf


$aText = StringSplit(StringStripCR($silk), @LF)
For $i = 1 To $aText[0]
    $sBefore = StringRegExpReplace($aText[$i], ';.*$', '')
    $sAfter = StringRegExpReplace($aText[$i], '^.*;', '')
    MsgBox(64, 'Info', 'String Num:' & $i & ' (' & $aText[0] & ')' & @TAB & $aText[$i] & @LF & 'Before ";"' & _
            @TAB & $sBefore & @LF & 'After ";"' & @TAB & $sAfter)
		Next

так кое что нацарапал.
Минус, мне надо чтоб выбиралась только первая строка.
Когда использую дальше переменные то вместо значений ставится 0 почему?

P.S. Спасибо МНЕ :laugh: :laugh: :laugh: :rofl: :rofl: ;D ;D
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
astati [?]
Минус, мне надо чтоб выбиралась только первая строка.

Код:
#Include<Array.au3>
$sText = "*****************;ххххххххххххххх"  & @CRLF & _ 
"************;хххххх"  & @CRLF & _ 
"...................."

$sPatern = "(.*?);(.*?)\r"
$aResult = StringRegExp( $sText, $sPatern, 1 )
_ArrayDisplay($aResult, ' Test Result ')




Добавлено:
Сообщение автоматически объединено:

astati [?]
Когда использую дальше переменные то вместо значений ставится 0 почему?
Поставь _ArrayDisplay
и посмотри что представляют из себя следующие строчки. Значит там нет символа ";"
Код:
;...........................
$aText = StringSplit(StringStripCR($silk), @LF)
If @error Then MsgBox(48,'Error','')
_ArrayDisplay($aText, ' Test Result ')
;..........................


Еще надо проверять : @extended

Код:
For $i = 1 To $aText[0]
    $sBefore = StringRegExpReplace($aText[$i], ';.*$', '')
    $sAfter = StringRegExpReplace($aText[$i], '^.*;', '')
    If @extended=0 Then ContinueLoop;  *********************
	MsgBox(64, 'Info', 'String Num:' & $i & ' (' & $aText[0] & ')' & @TAB & $aText[$i] & @LF & 'Before ";"' & _
            @TAB & $sBefore & @LF & 'After ";"' & @TAB & $sAfter)
Next
 
Автор
A

astati

Новичок
Сообщения
145
Репутация
4
Спасиб за проверки. Оказывается у меня нулевая строка строка = 27 :smile: бред какой-то. - хотя в файле ничего такого нету.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
astati [?]
Оказывается у меня нулевая строка строка = 27
smiley.gif
бред какой-то. - хотя в файле ничего такого нету.

Функция : StringSplit

Возвращает массив, в котором по умолчанию первый элемент $array[0] содержит количество возвращённых строк, остальные элементы



Добавлено:
Сообщение автоматически объединено:

Используй StringSplit с флагом 2
flag = 2, отключить возвращение количества элементов в первый элемент массива (необходимо использовать UBound () чтобы получить размерность массива).
 
Верх