Regnits
Новичок
- Сообщения
- 3
- Репутация
- 0
Имеется файл со следующим текстом
1 бла бла бла бла
2 бла бла бла бла ("0х232323") бла бла бла ("0х434353") бла бла
3 бла б2 бла бла бла бла ("0х232323") бла бла бла ("0х434353") бла блала бла бла ("0х232323") бла бла бла ("0х434353") бла бла
........
Нужно. Открыть файл.
И тут самое главное начинается. Берем первую строку и находим первое вхождение соответсвующее(\b[\d]\w+), записываем его в поле, конвертируем. Если найденное вхождение после конвертации менять не нужно, нажимаем кнопку 1 и берем следующее вхождение в строке. Если найденное вхождение после конвертации менять нужно, то нажимаем кнопку 2, заменяем и ищем следующее вхождение. И так до конца файла. Полученный файл сохраняем под другим именем.
Для одной строки и первого и второго вхождения вроде так. Но ручной перебор переменной, как-то не айс :'(
Так получается с файлом, но переписывает только первое вхождение(( :stars: :'(
Народ, у мня вроде получилось!!!!. Но я не уверен
1 бла бла бла бла
2 бла бла бла бла ("0х232323") бла бла бла ("0х434353") бла бла
3 бла б2 бла бла бла бла ("0х232323") бла бла бла ("0х434353") бла блала бла бла ("0х232323") бла бла бла ("0х434353") бла бла
........
Нужно. Открыть файл.
И тут самое главное начинается. Берем первую строку и находим первое вхождение соответсвующее(\b[\d]\w+), записываем его в поле, конвертируем. Если найденное вхождение после конвертации менять не нужно, нажимаем кнопку 1 и берем следующее вхождение в строке. Если найденное вхождение после конвертации менять нужно, то нажимаем кнопку 2, заменяем и ищем следующее вхождение. И так до конца файла. Полученный файл сохраняем под другим именем.
Для одной строки и первого и второго вхождения вроде так. Но ручной перебор переменной, как-то не айс :'(
Код:
#include <file.au3> ;подключить библиотеку file.au3
#include <String.au3>
$sString = 'бла бла бла бла ("0x232323") бла бла бла ("0х434353") бла бла'
$x = StringRegExp($sString, "\b\d\w+" , 3)
GUICreate("String Converter", 500, 300)
$title = GUICtrlCreateLabel("Hex To String", 220, 10) ; метки
$text_label = GUICtrlCreateLabel("Hex String:", 15, 31)
$result_label = GUICtrlCreateLabel ("Result:", 30, 61)
$text = GUICtrlCreateInput($x[0], 75, 30, 400, 20) ; передача вхождения. Прочитали первое вхождение, как потом прочитать второе и т. д. ?
$result = GUICtrlCreateInput("", 75, 60, 400, 20)
$convert = GUICtrlCreateButton("конверт", 35, 230, 50, 20) ;кнопки
$copy = GUICtrlCreateButton("Normal", 95, 230, 60, 20)
$replace = GUICtrlCreateButton("Заменить", 155, 230, 60, 20)
$next = GUICtrlCreateButton("След", 225, 230,80, 20)
$converter = ""
GUISetState()
While 1
$msg = GUIGetMsg()
If $msg = -3 Then Exit
Select
Case $msg = $convert
$read = GUICtrlRead($text)
$converter = _HexToString($read) ;перевод с 16 го в строку
GUICtrlSetData($result, $converter)
Case $msg = $replace
$Str3 = "\b" & $read & "\b"
$sString = StringRegExpReplace($sString, $Str3, $converter)
$text = GUICtrlCreateInput($x[1], 75, 30, 400, 20)
Case $msg = $next
$text = GUICtrlCreateInput($x[1], 75, 30, 400, 20)
Case $msg = $copy
ClipPut($converter)
EndSelect
WEnd
Код:
#include <file.au3>
#include <String.au3>
#include <Array.au3>
$sFilePath = "Test_.txt"
$sFilePathOut = "Test_out.txt"
$hFileIn = FileOpen($sFilePath, 0)
$hFileOut = FileOpen($sFilePathOut, 2)
$bShift = False
$line = FileReadLine($hFileIn)
While not @error = -1
$searchvhog = StringRegExp($line, "\b[\d]\w+", 1)
If $searchvhog = 0 Then
FileWriteLine($hFileOut, $line)
Else
$searchvhog = StringRegExp($line, "\b[\d]\w+", 3)
GUICreate("String Converter", 500, 300)
$title = GUICtrlCreateLabel("Hex To String", 220, 10)
$text_label = GUICtrlCreateLabel("Hex String:", 15, 31)
$result_label = GUICtrlCreateLabel ("Result:", 30, 61)
For $r = 0 to UBound($searchvhog) - 1
$text = GUICtrlCreateInput($searchvhog[$r], 75, 30, 400, 20)
$result = GUICtrlCreateInput("", 75, 60, 400, 20)
$convert = GUICtrlCreateButton("convert", 35, 230, 50, 20)
$copy = GUICtrlCreateButton("Normal", 95, 230, 60, 20)
$replace = GUICtrlCreateButton("replace", 155, 230, 60, 20)
$next = GUICtrlCreateButton("next", 225, 230,80, 20)
$converter = ""
$Str = ""
GUISetState()
While 1
$msg = GUIGetMsg()
If $msg = -3 Then Exit
Select
Case $msg = $convert
$read = GUICtrlRead($text)
$converter = _HexToString($read)
GUICtrlSetData($result, $converter)
Case $msg = $replace
$Str = $read
MsgBox(0, "", $line)
$Str3 = "\b" & $read & "\b"
$line = StringRegExpReplace($line, $Str3, $converter)
FileWriteLine($hFileOut, $line)
Case $msg = $next
ExitLoop
EndSelect
WEnd
Next
EndIf
$line = FileReadLine($hFileIn)
Wend
FileClose($hFileIn)
FileClose($hFileOut)
Народ, у мня вроде получилось!!!!. Но я не уверен