#post-id: 4514-18-02 #original-date: 4.12.2012 Tue #original-time: 6:02 PM #original-day: 4514 #original-host: WinXP Prof SP3 (Build 2600) Давно я что-то не использовала Type в VB. А тут подвернулась возможность попробовать. И мне понравилось OO > Type FILE_DATA > Success As Boolean > Text As BStr > Encoding As FileEncodingConst > FileBOM As FileBOMConst > InvertBytes As InvertBytesConst > End Type > > '==================================================================== > Private Sub DoIt() > Dim FileData As FILE_DATA > > FileData = ReadInFile() > If Not FileData.Success Then Exit Sub > > '... > > WriteOutFile FileData > If Not FileData.Success Then Exit Sub > End Sub > > '==================================================================== > Private Function ReadInFile() As FILE_DATA > On Error Resume Next > > ReadInFile.Text = ajpFSO.GetFile2(SET_InFileName, True, , , , _ > ReadInFile.Encoding, _ > ReadInFile.FileBOM, _ > ReadInFile.InvertBytes) > If Err.Number <> 0 Then > ajpErr.ErrorDisplay Err, , , SET_InFileName & CRLFCRLF & "Can't read input file." > ReadInFile.Success = False > Exit Function > End If > > ReadInFile.Success = True > End Function > > Private Sub WriteOutFile(ByRef FileData As FILE_DATA) > On Error Resume Next > > ajpFSO.PutFile2 SET_OutFileName, FileData.Text, True, _ > ReadInFile.Encoding, _ > ReadInFile.FileBOM, _ > ReadInFile.InvertBytes > If Err.Number <> 0 Then > ajpErr.ErrorDisplay Err, , , SET_OutFileName & CRLFCRLF & "Can't write output file." > FileData.Success = False > Exit Sub > End If > > FileData.Success = True > End Sub Две функции по чтению и записи файла используют общие данные и сведения о кодировке файла. Тоесть на выходе должен получиться преобразованный файл в той же кодировке. Попутно присобачила код возврата для контроля ошибок. Это чтобы не принять пустой файл за ошибку чтения. Тут важно что я обычно использовала кучу ByRef параметров, а тут одной структурой обошлась. Мелочь, а приятно ^^