powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / DBF. oem/ansi converter
25 сообщений из 51, страница 1 из 3
DBF. oem/ansi converter
    #34031005
Slice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как средствами вижал бэйсика конвртнуть дбэфину из оем в анси? с помошью библиотеки
Код: plaintext
1.
Public Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
приходится писать CUI, так как она отлетает после одного выполнения. приходится переоткрывать программу
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34031094
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на hiprog.com был готовый класс который работает с DBF файлами без никаких дополнительных бибилиотек напрямую работает
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34031191
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Легко.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
'в модуль.
Option Explicit

Enum idCodePage
    Win =  1251 
    Dos =  866 
    Koi =  20866 
    Iso =  28595 
End Enum

Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, _
        ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, _
        ByVal cchWideChar As Long) As Long
Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, _
        ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As String, _
        ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long

Public Function ConvertCodePage(SourseString As String, inPage As idCodePage, outPage As idCodePage) As String
  Dim LenSourseString As Long
  Dim strFirst As String
  Dim strSecond As String
  Dim RetStrLong As Long
  LenSourseString = Len(SourseString)
  strFirst = String(LenSourseString *  2 , Chr( 0 ))
  strSecond = String(LenSourseString *  2 , Chr( 0 ))
  RetStrLong = MultiByteToWideChar(inPage, &H1, SourseString, LenSourseString, StrPtr(strFirst), LenSourseString)
  RetStrLong = WideCharToMultiByte(outPage,  0 , StrPtr(strFirst), RetStrLong, strSecond, LenSourseString *  2 , ByVal  0 ,  0 )
  ConvertCodePage = Left(strSecond, RetStrLong)
End Function
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34031323
Slice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34031361
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всегда рад помочь. К тому же на таком (не подлизываясь к модерам) уважаемом форуме! (сам админ, но на менее уважаемом сайте. На своем собственном.) :))
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34032648
Slice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оказывается, что еще не совсем спасибо))))))))))))))))
Дело в том, что мне приходит файлик в OEM, мне надо его залить на SQL.
есть процедурка, о которой говорил я в самом начале (которая отлетает), так вот, она переписывает один байт и поидее этот файл становится с виндовой кодировкой. А ваша процедура, Уважаемый AndreyMp , уже работает с содержимым. С содержимым мне по выбранному пути вообще работать не надо, если только на SQL сервере, так как содержимое заливается все через DTS. Так вот, нет ли способа изменить кодировку самого файла?
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34033366
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Говорил же вам на hiprog.com есть класс для работы с DBF-файлами Кривцова А.
вот выложил пример конвертации с помощью этого класса.
класс был взят с сайта hiprog.com.
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34033367
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примерчик чуть-чуть кривоватый, но отшлифовать не составит труда
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34034130
Slice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, порадовало
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34152138
Rustygold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orunbekГоворил же вам на hiprog.com есть класс для работы с DBF-файлами Кривцова А.
вот выложил пример конвертации с помощью этого класса.
класс был взят с сайта hiprog.com.

А никто не сталкивался с проблемой, что этот класс при создании нового файла названия всех столбцов добивает до 11 знаков пробелами? В итоге столбец "ID" в файле выглядит как "ID " со всеми вытикающими.
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34152536
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rustygold orunbekГоворил же вам на hiprog.com есть класс для работы с DBF-файлами Кривцова А.
вот выложил пример конвертации с помощью этого класса.
класс был взят с сайта hiprog.com.

А никто не сталкивался с проблемой, что этот класс при создании нового файла названия всех столбцов добивает до 11 знаков пробелами? В итоге столбец "ID" в файле выглядит как "ID " со всеми вытикающими.
не знаю, базы я еще не создавал, тока читал и экспорт в mdb и т.д.
насчет этого не знаю, автору не пробовали обратиться?
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34152682
Rustygold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не пробовал. Честно говоря, я не нашел на hiprog.com этого кода.

Попробую еще сам код поковырять - может чего откопаю...
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34637637
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня таблица, переконвертированная с помощью Кривцова А., ничем не читается. :(
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34637647
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле: не открывается. "Объект не найден ядром..."
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34637690
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уменьши длину названия таблицы до 8 символов и называй только латинскими буквами.
С уважением, Николай.
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34637971
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я бы не занимался никакой конвертацией ибо в DBF-ках проще правильно выставить 29-ый байтик. И ничего конвертить не нужно будет по определению.
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34637981
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ааа, всё равно ошибка.
Да и я вытащил ту функцию - работает неправильно, как и OemToChar и др. ботва того же плана.
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34638223
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2AndrF а что произойдет если данные в таблице будут хранится в DOS кодировке, а Вы поставите 29 байт соответствующий Win? Помнится я ставил такие опыты... ничего хорошего из этого не вышло.

С уважением, Николай.
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34638280
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gjghjc2AndrF а что произойдет если данные в таблице будут хранится в DOS кодировке, а Вы поставите 29 байт соответствующий Win? Помнится я ставил такие опыты... ничего хорошего из этого не вышло.

С уважением, Николай.

И у меня тоже не вышло :(
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34638366
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я решил проблему следующим образом.
Файлообмен у нас осуществялся при помощи dbf - файликов. Головная контора требовала WIN1251. Чтобы сильно не иметь себе и окружающим мозг я формировал и проверял файлики в DOS866, а перед отправкой конвертил их в Win при помощи програмки DbfToWin (DbfToDos обратный конвертер). Поскольку я так и не нашел как через VB корректно работать с файлами в кодировке Win1251.
Есть еще пара конвертеров DosToWin и WinToDos, но они работают медленнее и ругаются на файлы у которых длина имени не равна 8-ми символам и начинающихся не с букв а с цифр.
У DbfToDos и DbfToWin есть грабля такого рода что если файл данные в котором хранятся в Dos кодировке повторно сконвертировать в Dos то буква Х (ха) мифическим образом меняется на скобку :)

С уважением, Николай.
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34638500
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gjghjc2AndrF а что произойдет если данные в таблице будут хранится в DOS кодировке, а Вы поставите 29 байт соответствующий Win? Помнится я ставил такие опыты... ничего хорошего из этого не вышло.

И нафига это нужно? Должен стоять байт соответствующий кодировке. Обычно так все и стоит. Но дюже редко бывают случаи, когда этот байтик установлен неверно (может злые хакеры покопались, чтобы жизнь чайникам усложнить) - его надо просто выставить соответственно кодировке (возможно еще переиндексировать таблички придется). И все - таблички будут нормально читаться. Безо всяких извратов.
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34638513
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gjghjcПоскольку я так и не нашел как через VB корректно работать с файлами в кодировке Win1251.

DBF-ка должна быть создана с 29-ым байтиком указывающим на Win-кодировку. И все.
Конкретного значения не помню - оно легко находится в интернете.
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34638920
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создавал таблички при помощи DAO и Create Table.
в 29 байте был 0.... :(

С уважением, Николай.
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34639126
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gjghjcСоздавал таблички при помощи DAO и Create Table.
в 29 байте был 0.... :(

С уважением, Николай.

А можно поподробней?
Какие там параметры хитрые?
...
Рейтинг: 0 / 0
DBF. oem/ansi converter
    #34639189
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гугли по "Структура DBF"

С уважением, Николай.
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 1 из 3
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / DBF. oem/ansi converter
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]