Вопрос
Данные вводятся в access, потом собирается текстовый файл и передается эл.почтой, на приеме старая фоксовая программа, получается конфликт кодировок. Как быть?
Ответ
Можно сразу переводить текстовые строки при записи в файл в нужную кодировку. Вот функции для этого:
Public Declare Function OemToChar Lib "user32" Alias "OemToCharA" _
(ByVal lpszSrc As String, ByVal lpszDst As String) As Long ' Из DOS в WIN
Public Declare Function CharToOem Lib "user32" Alias "CharToOemA" _
(ByVal lpszSrc As String, ByVal lpszDst As String) As Long ' Из WIN в DOS
В модуле формы объявляешь переменные:
Dim l_lReturn As Long
Dim strSource, strDestin As String
Пишешь преобразованные строки в файл:
Open "MyFile.txt" For Output As #1
MyStringVar = "Просто строка"
strSource = MyStringVar
strDestin = Space$(Len(strSource))
l_lReturn = CharToOem(strSource, strDestin)
Print #1, strDestin
Close #1
В итоге в файле MyFile.txt — текст в DOS-кодировке
Если использовать внешнюю программу вроде recoder.exe, то вызвать ее из бейсика можно оператором Shell («командная строка») Также можно использовать функцию API WinExec или (для крутых:-)) ShellExecute — они дают больше возможностей для управления запускаемой программой.
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd _
As Long) As Long
Public Const SW_SHOWNORMAL = 1
Public Const SW_SHOWMAXIMIZED = 3
Пример:
strDoc = "MyDocuments\MyDocFile.doc"
ShellExecute Me.hwnd, vbNullString, strDoc, vbNullString, _
"C:\", SW_SHOWMAXIMIZED
Copyright 2000-2004 Сообщество Чайников
Контактная информация