Не получается прога

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
AniGiLator
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 18.05.2004 (Вт) 14:52
Откуда: Екатеринбург

Не получается прога

Сообщение AniGiLator » 18.05.2004 (Вт) 15:03

:oops: Не могу сделать прогу для курсовой (в эту пятницу уже сдавать)
Надо сделать программу которая будет открывать текстовый файл, определять какая кодовая таблица 866(dos) или 1251(win), а затем если надо перекодировала dos->Win b Win->dos :shock:
Помогите хоть как нибудь :!: :!: :!: :cry:

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 18.05.2004 (Вт) 15:17

Ну, перекодировка делается
Код: Выделить всё
Public Declare Function OemToCharBuff Lib "user32" Alias "OemToCharBuffA" (ByVal lpszSrc As String, ByVal lpszDst As String, ByVal cchDstLength As Long) As Long
Public Declare Function CharToOemBuff Lib "user32" Alias "CharToOemBuffA" (ByVal lpszSrc As String, ByVal lpszDst As String, ByVal cchDstLength As Long) As Long




OEM это DOS, a Char - Windows. А вот насчет того, как определить это я не в курсе :(

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 18.05.2004 (Вт) 15:26

Определять статистикой.
Берешь фрагмент текста (например, первые 600 символов) и считаешь, сколько раз какой символ попадается.
Для среднестатистического текста имеется определенное распределение (скажем, буква "р" - 30%, буква "о" - 33% и т.п.)
Считаешь процентное отношение в анализируемом тексте, учитывая, что в кодировке CP866 буква "р" это &hE0 (224), а в CP1251 - &hF0 (240), и анализируешь результаты, после чего получаешь вероятности того, что данный текст в кодировке CP866 или CP1251.
Lasciate ogni speranza, voi ch'entrate.

Aqualung
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 27.02.2004 (Пт) 23:56

Сообщение Aqualung » 18.05.2004 (Вт) 20:04

Еще один похожий вариант: поиск в тексте частоупотребимых слов ("это", "есть", "быть", "самый"...), соответственно, в одной и в другой кодировке. :D

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 19.05.2004 (Ср) 16:28

Ну а может быть сразу составить весь алфавит в одной какой-нибуть кодеровке, и искать такие буквы в тексте, если есть, то значит кодеровка совпала и это Win или DOS в зависимости какой алфовит был!

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 19.05.2004 (Ср) 19:07

Я бы предложил ещё один способ:
1) Ищем коды, которые есть в тексте на Win и нет в DOSю Если нашли- значит кодировка Win.
2) меняем всё с точностью до наоборот


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27

    TopList