Hi, all!
Есть пока ещё только заготовка парсера: оная заготовка открывает текстовый файл, построчно считывает из него строки и ... поскольку это заготовка, то отображает эти строки -по очереди- на экране. Беда в том, что обрабатывается файл, созданный операционкой => в 866 кодовой странице. АвтоИт же желает видеть строки в 1251 кодировке. Как результат, прилично отображаются строки с английскими словами; русские же слова, разумеется, отображаются "калякой-малякой". Причина ясна — неясно, как победить. От слова "совсем".
В каталоге по адресу c:\tmp лежит файл net_user.txt следующего содержимого:
Ай нид хелп, плиз!
PS: "вручную" перевернуть, конечно, можно — но как-то странно, зная о вящей мощи AutoIt! :IL_AutoIt_1:
Есть пока ещё только заготовка парсера: оная заготовка открывает текстовый файл, построчно считывает из него строки и ... поскольку это заготовка, то отображает эти строки -по очереди- на экране. Беда в том, что обрабатывается файл, созданный операционкой => в 866 кодовой странице. АвтоИт же желает видеть строки в 1251 кодировке. Как результат, прилично отображаются строки с английскими словами; русские же слова, разумеется, отображаются "калякой-малякой". Причина ясна — неясно, как победить. От слова "совсем".
Код:
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>
#include <Array.au3>
#include <File.au3>
Global $Gde_hran_istok = "C:\tmp\"
Global $istok = "net_user.txt"
Global $stok = "net_user_output.txt"
Global $CountLines = 0; сколько строк? Default = 0
Local $sFilePath = $Gde_hran_istok&$istok
Local $sFilePathOut = $Gde_hran_istok&$stok
Global $hFileOpen = FileOpen($sFilePath, $FO_READ )
Global $Shtirlits = 0
If_are_FILES()
SkokaStrok(); скока строк, файл ИСТОК?
Local $i=1
While 1
Global $sFileRead = FileReadLine ($hFileOpen, $i)
Local $Tri_levih = StringTrimRight ($sFileRead,StringLen ($sFileRead)-3)
; MsgBox (0,"***",$Tri_levih ,2)
If $Tri_levih = "---" Then
$Shtirlits =1
Else
; них
EndIf
MsgBox (0,"XXX","Строка № " & $i & ", её значение: " & $sFileRead ,1.1)
If $Shtirlits =1 Then
; Writttte()
Else
EndIf
$i=$i+1
If $i=$CountLines+1 Then ExitLoop
WEnd
Exit
; Далее идут функции
Func If_are_FILES(); есть ли файлы ИСТОК и СТОК?
If $hFileOpen = -1 Then
MsgBox($MB_SYSTEMMODAL, "", "An error occurred when reading the ISTOK-file.")
Return False
EndIf
; Open the file for read/write access.
Global $hFileOpenOut = FileOpen($sFilePathOut, $FO_READ + $FO_APPEND)
;Local $hFileOpen = FileOpen($sFilePath, $FO_READ + $FO_OVERWRITE)
If $hFileOpenOut = -1 Then
MsgBox($MB_SYSTEMMODAL, "", "An error occurred when reading/writing the OUT-file.")
Return False
EndIf
EndFunc
Func SkokaStrok(); скока строк, файл ИСТОК? — _FileCountLines
$CountLines = _FileCountLines($sFilePath)
If @error Then
MsgBox(0, 'Ошибка', 'Не найден файл')
Else
MsgBox(64, "Результат", "В файле net_user.txt всего " & $CountLines & " строк.", 2)
EndIf
EndFunc
Func Writttte()
;$hFileOpen = FileOpen($sFilePathOut, $FO_READ + $FO_OVERWRITE)
FileWrite($hFileOpenOUT, $sFileRead & @CRLF)
;[optional] Mode to open the file in.
;Can be a combination of the following:
; $FO_READ (0) = Read mode (default)
; $FO_APPEND (1) = Write mode (append to end of file)
; $FO_OVERWRITE (2) = Write mode (erase previous contents)
; $FO_CREATEPATH (8) = Create directory structure if it doesn't exist (See Remarks).
; $FO_BINARY (16) = Force binary mode (See Remarks).
; $FO_UNICODE or $FO_UTF16_LE (32) = Use Unicode UTF16 Little Endian reading and writing mode.
; $FO_UTF16_BE (64) = Use Unicode UTF16 Big Endian reading and writing mode.
; $FO_UTF8 (128) = Use Unicode UTF8 (with BOM) reading and writing mode.
; $FO_UTF8_NOBOM (256) = Use Unicode UTF8 (without BOM) reading and writing mode.
; $FO_ANSI (512) = Use ANSI reading and writing mode.
; $FO_UTF16_LE_NOBOM (1024) = Use Unicode UTF16 Little Endian (without BOM) reading and writing mode.
; $FO_UTF16_BE_NOBOM (2048) = Use Unicode UTF16 Big Endian (without BOM) reading and writing mode.
; $FO_FULLFILE_DETECT (16384) = When opening for reading and no BOM is present, use the entire file to determine if it is UTF8 or UTF16. If this is not used then only the initial part of the file (up to 64KB) is checked for performance reasons.
;The folder path must already exist (except using $FO_CREATEPATH mode - See Remarks).
;
;Constants are defined in FileConstants.au3.
EndFunc
В каталоге по адресу c:\tmp лежит файл net_user.txt следующего содержимого:
Код:
Учетные записи пользователей для \\Один_комп
-------------------------------------------------------------------------------
ASPNET HelpAssistant SUPPORT_388945a0
Администратор Гость
Команда выполнена успешно.
D:\Documents and Settings\Один_user
Ай нид хелп, плиз!
PS: "вручную" перевернуть, конечно, можно — но как-то странно, зная о вящей мощи AutoIt! :IL_AutoIt_1: