Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R
Цитата:
Дело вот в чём, браузер не всегда затирает нужные закладки, иногда, если были удалены заглавы (#URL) двух закладок (блоков) идущих подряд, то он удаляет иногда и ту закладку которая идёт выше этих двух. Может всё же как то можно чтобы уже сразу весь блок удалять?
Сказал же, другого не будет ... Лучше воспользоваться твоим утверждением о фиксированном формате блока и чуть переделать существующий:
1. перенес IF в код функции - это необязательно, но оптимизирует поиск дублей,
2. добавил удаление остальных строк блока (в обратном порядке!).
Код: Выделить весь код
#include <File.au3>

$File = "c:\test.txt"

Dim $FileLines
_FileReadToArray ($file, $FileLines)
; Возвращаем массив из дублирующихся записей
$DupLines = _DupURLsInArray ($FileLines)
; Страховка от пустого массива если дублей нет
If $DupLines [0][0] >0 Then
	For $i=$DupLines [0][0] To 1 Step -1
		_FileWriteToLine ($File, $DupLines [$i][0] +3, "", 1)
		_FileWriteToLine ($File, $DupLines [$i][0] +2, "", 1)
		_FileWriteToLine ($File, $DupLines [$i][0] +1, "", 1)
		_FileWriteToLine ($File, $DupLines [$i][0]   , "", 1)
		_FileWriteToLine ($File, $DupLines [$i][0] -1, "", 1)
		_FileWriteToLine ($File, $DupLines [$i][0] -2, "", 1)
		_FileWriteToLine ($File, $DupLines [$i][0] -3, "", 1)
		_FileWriteToLine ($File, $DupLines [$i][0] -4, "", 1)
	Next
EndIf

; Возвращает двумерный массив со счетчиком, содержащий только дубли
Func _DupURLsInArray (ByRef $array)
	Local $i, $i, $res [1][2] = [[0,0]]
	; рабочий массив для отметки обработанных дублей
	Local $flags [$array [0] +1]
	For $i=1 To $array [0]
		If StringLeft ($array [$i],5) = @TAB & "URL=" Then
			For $j=$i+1 To $array [0]
				If $flags [$j] <> 1 Then
					If $array [$i] = $array [$j] Then
						ReDim $res [$res [0][0]+2][2]
						$res [0][0] = $res [0][0] +1
						$res [$res [0][0]][0] = $j
						$res [$res [0][0]][1] = $array [$j]
						$flags [$j] = 1
					EndIf
				EndIf
			Next
		EndIf
	Next
	Return $res
	_ArraySort ($res, 0, 1, 0, 2)
EndFunc
Цитата:
чтобы за каждое твоё оставленное сообщение (пусть даже по всему форуму), автоматом оно обозначалось бы как “Полезное сообщение” - оно так и есть
не переживай - это пройдет...

Последний раз редактировалось amel27, 10-11-2006 в 08:03.

Это сообщение посчитали полезным следующие участники:

Отправлено: 03:54, 09-11-2006 | #457