Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открыть dbf FoxPro 2 (DOS) в изначальной кодировке, DBGrid не должна преобразовывать DOS-Win 
:(
    Опции темы
Voldemar2004
  Дата 24.10.2005, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Я написал программу для преобразования выбранных столбцов таблицы из DOS-символов в Windows.

Суть проблемы такова: есть таблица в БД формата FoxPro 2 (dos) *.dbf. При открытии ее в Grid'е
- grid автоматически преобразует DOS - кодировку в Windows. Каким образом сделать так, чтобы
DBGrid не трогал кодировку?

Это сообщение отредактировал(а) Voldemar2004 - 24.10.2005, 11:13


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Exception
Дата 24.10.2005, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



э... никак наверное
PM   Вверх
Voldemar2004
Дата 24.10.2005, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Цитата(Run @ 24.10.2005, 13:34)
э... никак наверное
Неужели никто не сталкивался с такой проблемой? Читал в Сети, что есть такие свойства у грида как Column->Oem, а где конкретно они находятся - не понятно. smile


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Akina
Дата 24.10.2005, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Voldemar2004 @ 24.10.2005, 11:22)
Каким образом сделать так, чтобы DBGrid не трогал кодировку?

Да никаким.

Ты лучше скажи нахрена тебе это?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Kergan
Дата 24.10.2005, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 20.8.2005

Репутация: 3
Всего: 5



ОФТОПИК ИМХО вообще от FoxPro надо отходить! То, что может получиться после смены версий покруче DLL Hell. /ОФТОПИК
А по теме - Можешь пройтись по ячейкам и сам, ручками, перекодить... Только так. Если, конечно, нет бага с неправильным чтением структуры.
--------------------
Была у меня дурацкая подпись...Я ее убрал, а новую еще не придумал. :(
PM MAIL ICQ   Вверх
Voldemar2004
Дата 25.10.2005, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Цитата(Akina @ 24.10.2005, 14:58)
Ты лучше скажи нахрена тебе это?
Мне это вообще не надо - просто дали задание. Есть долбанный FoxPro и такой же dbf с дос-кодировкой, вот прога, которую я написал: по идее все должно работать.
Код

Option Explicit    
Dim i As Long    
' From DOS to WIN:    
Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long    
' From Win to DOS:    
Private Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long    
Private Sub Command1_Click()    
Dim OemStr As String, CharStr As String    
'----------------------------------------------------------------------------------    
Dim j As Long    
For j = 0 To Data1.Recordset.RecordCount - 1    
Data1.Recordset.MoveLast    
    TDBGrid2.EditActive = True    
Next j    
MsgBox "Число полей (строк) = " & Data1.Recordset.RecordCount    
Data1.Recordset.MoveFirst ' переход на следующую строчку    
'----------------------------------------------------------------------------------    
For i = 0 To Data1.Recordset.RecordCount - 1    
    
'-------------------------------------------------------    
OemStr = TDBGrid1.SelText    
CharStr = Space(Len(OemStr))    
OemToChar OemStr, CharStr    
'-------------------------------------------------------    
    Data2.Recordset.AddNew    
        Data2.Recordset.Fields(0) = CharStr    
    Data2.Recordset.Update    

ProgressBar1.Min = 0    
ProgressBar1.Max = Data1.Recordset.RecordCount    
ProgressBar1.Value = i    

Data1.Recordset.MoveNext    

Next i    
TDBGrid2.Refresh    
End Sub    
Private Sub Form_Load()    
Data1.RecordSource = "SELECT FM FROM DELO"    
Data1.Refresh    
TDBGrid1.Refresh    

End Sub
А надо, как я понял это, чтобы нормально отображались шрифты в каких-то сторонних программах, тоже работающих с форматом dbf.


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0676 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.