Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Запись русского текста в файл

Поиск:
Есть такой код:
Код
Private Sub Command1_Click()
Open "e:\test.txt" For Binary Access Write As #1
Put #1, , "Привет, Vingrad'овцы!"
Close #1
End Sub

Вы пробовали когда-нибудь такое сделать?
Дело в том, что текстовой файл иногда может не читаться.

--Resize_Images_Alt_Text--

Я столкнулся с такой проблемой и не мог прочитать в Norton Commander написанный мной в него текст. Я решил эту проблему так как показано ниже. Я не говорю, что это единственный выход из положения, но в нем есть свои плюсы. :thumbs-up

В модуль:
Код
Option Explicit

Private InitStatus As Boolean
Private CodeTab(255) As Byte

Public Function PutRInit()
CodeTab(0) = &H0: CodeTab(1) = &H0: CodeTab(2) = &H0: CodeTab(3) = &H0: CodeTab(4) = &H0
CodeTab(5) = &H0: CodeTab(6) = &H0: CodeTab(7) = &H0: CodeTab(8) = &H0: CodeTab(9) = &H0
CodeTab(10) = &H0: CodeTab(11) = &H0: CodeTab(12) = &H0: CodeTab(13) = &H0: CodeTab(14) = &H0
CodeTab(15) = &H0: CodeTab(16) = &H0: CodeTab(17) = &H0: CodeTab(18) = &H0: CodeTab(19) = &H0
CodeTab(20) = &H0: CodeTab(21) = &H0: CodeTab(22) = &H0: CodeTab(23) = &H0: CodeTab(24) = &H0
CodeTab(25) = &H0: CodeTab(26) = &H0: CodeTab(27) = &H0: CodeTab(28) = &H0: CodeTab(29) = &H0
CodeTab(30) = &H0: CodeTab(31) = &H0
CodeTab(32) = &H20: CodeTab(33) = &H21 ' !
CodeTab(34) = &H22 ' "
CodeTab(35) = &H23 ' #
CodeTab(36) = &H24 ' $
CodeTab(37) = &H25 ' %
CodeTab(38) = &H26 ' &
CodeTab(39) = &H27 ' '
CodeTab(40) = &H28 ' (
CodeTab(41) = &H29 ' )
CodeTab(42) = &H2A ' *
CodeTab(43) = &H2B ' +
CodeTab(44) = &H2C ' ,
CodeTab(45) = &H2D ' -
CodeTab(46) = &H2E ' .
CodeTab(47) = &H2F ' /
CodeTab(48) = &H30 ' 0
CodeTab(49) = &H31 ' 1
CodeTab(50) = &H32 ' 2
CodeTab(51) = &H33 ' 3
CodeTab(52) = &H34 ' 4
CodeTab(53) = &H35 ' 5
CodeTab(54) = &H36 ' 6
CodeTab(55) = &H37 ' 7
CodeTab(56) = &H38 ' 8
CodeTab(57) = &H39 ' 9
CodeTab(58) = &H3A ' :
CodeTab(59) = &H3B ';
CodeTab(60) = &H3C ' <
CodeTab(61) = &H3D ' =
CodeTab(62) = &H3E ' >
CodeTab(63) = &H3F ' ?
CodeTab(64) = &H40 ' @
CodeTab(65) = &H41 ' A
CodeTab(66) = &H42 ' B
CodeTab(67) = &H43 ' C
CodeTab(68) = &H44 ' D
CodeTab(69) = &H45 ' E
CodeTab(70) = &H46 ' F
CodeTab(71) = &H47 ' G
CodeTab(72) = &H48 ' H
CodeTab(73) = &H49 ' I
CodeTab(74) = &H4A ' J
CodeTab(75) = &H4B ' K
CodeTab(76) = &H4C ' L
CodeTab(77) = &H4D ' M
CodeTab(78) = &H4E ' N
CodeTab(79) = &H4F ' O
CodeTab(80) = &H50 ' P
CodeTab(81) = &H51 ' Q
CodeTab(82) = &H52 ' R
CodeTab(83) = &H53 ' S
CodeTab(84) = &H54 ' T
CodeTab(85) = &H55 ' U
CodeTab(86) = &H56 ' V
CodeTab(87) = &H57 ' W
CodeTab(88) = &H58 ' X
CodeTab(89) = &H59 ' Y
CodeTab(90) = &H5A ' Z
CodeTab(91) = &H5B ' [
CodeTab(92) = &H5C ' \
CodeTab(93) = &H5D ' ]
CodeTab(94) = &H5E ' ^
CodeTab(95) = &H5F ' _ '
CodeTab(96) = &H60 ' `
CodeTab(97) = &H61 ' a
CodeTab(98) = &H62 ' b
CodeTab(99) = &H63 ' c
CodeTab(100) = &H64 ' d
CodeTab(101) = &H65 ' e
CodeTab(102) = &H66 ' f
CodeTab(103) = &H67 ' g
CodeTab(104) = &H68 ' h
CodeTab(105) = &H69 ' i
CodeTab(106) = &H6A ' j
CodeTab(107) = &H6B ' k
CodeTab(108) = &H6C ' l
CodeTab(109) = &H6D ' m
CodeTab(110) = &H6E ' n
CodeTab(111) = &H6F ' o
CodeTab(112) = &H70 ' p
CodeTab(113) = &H71 ' q
CodeTab(114) = &H72 ' r
CodeTab(115) = &H73 ' s
CodeTab(116) = &H74 ' t
CodeTab(117) = &H75 ' u
CodeTab(118) = &H76 ' v
CodeTab(119) = &H77 ' w
CodeTab(120) = &H78 ' x
CodeTab(121) = &H79 ' y
CodeTab(122) = &H7A ' z
CodeTab(123) = &H7B ' {
CodeTab(124) = &H7C ' |
CodeTab(125) = &H7D ' }
CodeTab(126) = &H7E ' ~
CodeTab(127) = &H0: CodeTab(128) = &H0: CodeTab(129) = &H0: CodeTab(130) = &H0: CodeTab(131) = &H0
CodeTab(132) = &H0: CodeTab(133) = &H0: CodeTab(134) = &H0: CodeTab(135) = &H0: CodeTab(136) = &H0
CodeTab(137) = &H0: CodeTab(138) = &H0: CodeTab(139) = &H0: CodeTab(140) = &H0: CodeTab(141) = &H0
CodeTab(142) = &H0: CodeTab(143) = &H0: CodeTab(144) = &H0: CodeTab(145) = &H0: CodeTab(146) = &H0
CodeTab(147) = &H0: CodeTab(148) = &H0: CodeTab(149) = &H0: CodeTab(150) = &H0: CodeTab(151) = &H0
CodeTab(152) = &H0: CodeTab(153) = &H0: CodeTab(154) = &H0: CodeTab(155) = &H0: CodeTab(156) = &H0
CodeTab(157) = &H0: CodeTab(158) = &H0: CodeTab(159) = &H0: CodeTab(160) = &H0: CodeTab(161) = &H0
CodeTab(162) = &H0: CodeTab(163) = &H0: CodeTab(164) = &H0: CodeTab(165) = &H0: CodeTab(166) = &H0
CodeTab(167) = &H0
CodeTab(168) = &HF0 ' Ё
CodeTab(169) = &H0: CodeTab(170) = &H0: CodeTab(171) = &H0: CodeTab(172) = &H0: CodeTab(173) = &H0
CodeTab(174) = &H0: CodeTab(175) = &H0: CodeTab(176) = &H0: CodeTab(177) = &H0: CodeTab(178) = &H0
CodeTab(179) = &H0: CodeTab(180) = &H0: CodeTab(181) = &H0: CodeTab(182) = &H0: CodeTab(183) = &H0
CodeTab(184) = &HF1 ' ё
CodeTab(185) = &H0: CodeTab(186) = &H0: CodeTab(187) = &H0: CodeTab(188) = &H0: CodeTab(189) = &H0
CodeTab(190) = &H0: CodeTab(191) = &H0
CodeTab(192) = &H80 ' А
CodeTab(193) = &H81 ' Б
CodeTab(194) = &H82 ' В
CodeTab(195) = &H83 ' Г
CodeTab(196) = &H84 ' Д
CodeTab(197) = &H85 ' Е
CodeTab(198) = &H86 ' Ж
CodeTab(199) = &H87 ' З
CodeTab(200) = &H88 ' И
CodeTab(201) = &H89 ' Й
CodeTab(202) = &H8A ' К
CodeTab(203) = &H8B ' Л
CodeTab(204) = &H8C ' М
CodeTab(205) = &H8D ' Н
CodeTab(206) = &H8E ' О
CodeTab(207) = &H8F ' П
CodeTab(208) = &H90 ' Р
CodeTab(209) = &H91 ' С
CodeTab(210) = &H92 ' Т
CodeTab(211) = &H93 ' У
CodeTab(212) = &H94 ' Ф
CodeTab(213) = &H95 ' Х
CodeTab(214) = &H96 ' Ц
CodeTab(215) = &H97 ' Ч
CodeTab(216) = &H98 ' Ш
CodeTab(217) = &H99 ' Щ
CodeTab(218) = &H9A ' Ь
CodeTab(219) = &H9B ' Ы
CodeTab(220) = &H9C ' Ъ
CodeTab(221) = &H9D ' Э
CodeTab(222) = &H9E ' Ю
CodeTab(223) = &H9F ' Я
CodeTab(224) = &HA0 ' а
CodeTab(225) = &HA1 ' б
CodeTab(226) = &HA2 ' в
CodeTab(227) = &HA3 ' г
CodeTab(228) = &HA4 ' д
CodeTab(229) = &HA5 ' е
CodeTab(230) = &HA6 ' ж
CodeTab(231) = &HA7 ' з
CodeTab(232) = &HA8 ' и
CodeTab(233) = &HA9 ' й
CodeTab(234) = &HAA ' к
CodeTab(235) = &HAB ' л
CodeTab(236) = &HAC ' м
CodeTab(237) = &HAD ' н
CodeTab(238) = &HAE ' о
CodeTab(239) = &HAF ' п
CodeTab(240) = &HE0 ' р
CodeTab(241) = &HE1 ' с
CodeTab(242) = &HE2 ' т
CodeTab(243) = &HE3 ' у
CodeTab(244) = &HE4 ' ф
CodeTab(245) = &HE5 ' х
CodeTab(246) = &HE6 ' ц
CodeTab(247) = &HE7 ' ч
CodeTab(248) = &HE8 ' ш
CodeTab(249) = &HE9 ' щ
CodeTab(250) = &HEA ' ъ
CodeTab(251) = &HEB ' ы
CodeTab(252) = &HEC ' ь
CodeTab(253) = &HED ' э
CodeTab(254) = &HEE ' ю
CodeTab(255) = &HEF ' я
InitStatus = True
End Function

Public Function PutR(FileNumber As Integer, Position As Double, Text As String)
Dim i As Integer
If InitStatus = False Then PutRInit
If Position = 0 Then
   If Text = "" Then
        Put #FileNumber, , CByte(&HD)
        Put #FileNumber, , CByte(&HA)
   Else
       For i = 0 To Len(Text) - 1
           Put #FileNumber, , CodeTab(Asc(Left(Text, 1)))
           Text = Right(Text, Len(Text) - 1)
       Next
   End If
Else
   If Text = "" Then
        Put #FileNumber, Position, CByte(&HD)
        Put #FileNumber, Position, CByte(&HA)
   Else
       For i = 1 To Len(Text)
            Put #FileNumber, Position + i, CodeTab(Asc(Mid(Text, i, 1)))
       Next
   End If
End If
End Function

Пример использования:
Код
Private Sub Command1_Click()
Open "e:\test.txt" For Binary Access Write As #1
PutR 1, 0, "Привет, Vingrad'овцы!"
Close #1
End Sub

Если написать:
Код
PutR 1, 0, ""

то в файл запишется 0x0d, 0x0a.

Если дополнить таблицу CodeTab и написать пару дополнительных функций, то можно также рисовать таблицы в текстовых файлах.

Автор ответа: cardinal

Вместо извращений с самостоятельным перекодированием строки лучше воспользоваться стандартными API-функциями CharToOEM и OEMToChar

Автор ответа: Akina
Автор: cardinal, Akina






Просмотров: 2998

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную