powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как лучше хранить 2Mb слов в переводчике?
19 сообщений из 19, страница 1 из 1
Как лучше хранить 2Mb слов в переводчике?
    #34088459
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, гуру.
Я пишу электронный англо-русский словарь на Visual Studio 2005, C++ , для Smart Device, Pocket PC 2003 (ARMV4), Use MFC in a Static Library
Помогите пожалуйста советами.
На Pocket PC мало памяти. Как мне лучше организовать доступ к словам?
Как-то прицепить .mdb?
Или сделать 26 файлов:
a.txt для всех слов начинающихся с a
b.txt для всех слов начинающихся с b
и т. д.
и попробовать открывать их с помощью CFile?

Буду черезвычайно признателен
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34088479
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел Sql Server Mobile 2005
http://www.hpc.ru/soft/data/14143/SqlServerMobile2005.zip

Никогда не соединялся с БД из C++ с MFC. Не могут ли спецы мне подсказать?
Есть опыт работы с БД на ASP, PHP, Delphi 4.
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34088581
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделать бор - структуру ( то же что и многомерный 27*27*27...) массив, для экономии памяти по первым 2-4 буквам.
поиск будет очень быстрым.
на жестком так же хранить и не парится.

аффтопитезь
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34090007
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вполне можно в dll засунуть

/topic/275636&hl=%ea%ee%ed%f1%f2%f0%f3%ea%f2%ee%f0
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34091299
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы создал массив указателей, сортированый по алфавиту, а в другом массиве лежали бы слова и дефиниции. Если словарь не слово-дефиниция, а слово - слово[,слово], то можно русские слова организовать в массив. При этом произойдёт экономия за счёт того, что дублироваться будут только ссылки.

typedef struct Dictionary{
char *eng;
char *ru;
}Dictionary;
vecor<Dictionary> dictOrderedByEng;
vector<char> EnglishWords; // Т.е. они лежат одной динной строкой с 0 в массиве символов.
vector<char*> RussianReferences;
vector<char> RussianWords;

Дальнейшая упаковка возможна за счёт того, что в английском алфавите 26 символов, т.е. их можно паковать в 5 бит, а в русском - 33 - 6 бит.

При этом 0 - один из символов этого же алфавита.
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34092457
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня лежит как

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
struct word_t
{
     __int64 hash_crc64;
    const whcar_t *ptr_word;
}

struct word_t lst_eng[] = 
{
   { 21738217321 , L"hello"}
};
struct word_t lst_rus[] = 
{
   { 32432409304 , L"превед"},
   { 63464453434 , L"здорово"}
};

и переводы

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
struct word_pare_t
{
     __int64 hash_crc64_1252;
     __int64 hash_crc64_1251;
}

struct word_pare_t rus_eng[] = 
{
   { 21738217321 ,  32432409304 },
   { 21738217321 ,  63464453434 }
};

поиск в массиве идет по хэшу - скорость достаточно высокая особенно на x64 платформе
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34092487
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
8 байтный хэш длинне ссылки и думаю, длиннее, чем среднее английское слово. Поиск можно и нужно использовать двоичный, так что максимальное количество хитов будет где-то Log2(кол-во слов) +1? что явно не много.
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34092596
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikname8 байтный хэш длинне ссылки и думаю, длиннее, чем среднее английское слово.

не мелочитесь ШУра (С)

стындно батенька в наш век петобайтов на биты размениваться :)
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34092612
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Admin_Vlad...


1. Откуда цифра - 2 Мб? Это размер словаря в виде чистого текста? Будет-ли словарь расти?

2. Как вообще организован диск на PocketPC ? Там есть деление на опертивную память и хранилище, или всё вместе?

Спасибо.
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34093364
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lepsik nikname8 байтный хэш длинне ссылки и думаю, длиннее, чем среднее английское слово.

не мелочитесь ШУра (С)

стындно батенька в наш век петобайтов на биты размениваться :)
Вроде речь шла о КПК?

Кстати, интересно - у кого-нибудь были сравнения эффективности хэша и двоичного поиска на одном и том же наборе данных? Меня терзают смутные сомнения. Дело в том, что сейчас словарь действительно запросто поместится в оперативную память.
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34093720
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niknameДело в том, что сейчас словарь действительно запросто поместится в оперативную память.а если добавить acrobat reader, wmp и оперу?
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34093802
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каталоги и карты памяти в iPAQ

В "My Device" находятся
\Application Data\
\ConnMgr\
\iPAQ File Store\
\iPAQ ROM\
\Mini-SD\
\My Documents\
\Ozi Explorer\
\profiles\
\Program Files\
\SD Card\
\Temp\
\Windows\

У меня есть текстовый файл на 2Mb в котором нечетыми идут английские слова, четными их перевод на русском.
Есть такие же файлы для испанского, итальянского, немецкого, французкого, но размер их поменьше.

Начать думаю только с английского словарика с жестко заданным количеством слов, а затем развить в мультиязычный с добавлением новых слов.
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34093852
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Памяти для программ свободно 8,65Mb
Максимальный размер для object store 256MB

Но меня терзают смутные сомнения, что если я загружу в структуру 2Mb текстовых данных полученный 2Mb exe'шник будет запускаться под WinCE
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34096817
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Admin_VladПамяти для программ свободно 8,65Mb
Максимальный размер для object store 256MB

Но меня терзают смутные сомнения, что если я загружу в структуру 2Mb текстовых данных полученный 2Mb exe'шник будет запускаться под WinCE

Я думаю, учитывая характер работы пользователя со "словарем" (редкие операции поиска, еще реже - вставки), можно вполне использовать текстовые файлы. Т.е. - ваш второй вариант (26 файлов с доступом через CFile). Если надо будет чуть-чуть ускорить поиск, можно сделать 26 каталогов (по первой букве) и в каждом 26 файлов (по второй букве).

Если ваша задача будет расти до "переводчика", то тогда стоит подумать о базе.
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34096870
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
молодой человек, вы все мучаетесь сомнениями? да за истекшие 5 суток уже можно было бы попробывать:)
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34277472
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При помещении 99850-ти слов словаря в строковый массив программа вызывает "Out of memory" может подскажите как соединяться с .cdb в C#?
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34281252
Piterskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Admin_VladПри помещении 99850-ти слов словаря в строковый массив программа вызывает "Out of memory" может подскажите как соединяться с .cdb в C#?
В cdb при количестве записей >10 000 тоже тормоза начнутся и при том ба-а-льшие. Кроме того, не известно будут ли в m$ поддерживать этот стандарт в будущем, хотя для win mobile 2005 его все таки вернули.. 8-) Искренние рекомендации - делай на SQL CE server 2005. Гемора в будущем будет меньше, да и он гораздо мощнее и быстрее работает чем pocket access aka cdb
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34281828
Den_di
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklinсделать бор - структуру ( то же что и многомерный 27*27*27...) массив, для экономии памяти по первым 2-4 буквам.
поиск будет очень быстрым.
на жестком так же хранить и не парится.

Так только память бесполезно терять. Если мы емеем словать, то его всегда можно прилично пожать. И всегда делали словари независимо а файл-переводчик вида rus_word -> eng_word ввиде их индекса id_rus -> id_eng в словарях. Для быстроты поиска слова в памяти можно храниь как упорядоченный массив и применять простой бинарный поиск.Или сначала равномерный hash а потом досравнивание. Уж тут можно и 10 mb за секунду перевести. Притом зачем словарю большая скорость. Притом словарь обычно работает как : вводишь слово, по мере ввода где-то внизу отображается список слов. тут напрашивается последовательный бинарный поиск по буквам слова. А так как слова всегда заканчиваются чем-то недопустимым '\0', то даше проверку делать ненадо на длинну. А нсли лень что-то самому писать всегда есть STL c её контейнерами, multimap's И прочей шушурой. А про MFC вообше помолчу .
...
Рейтинг: 0 / 0
Как лучше хранить 2Mb слов в переводчике?
    #34282720
Фотография Admin_Vlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!

Но появились вопросы.
C Visual Studio встал укороченный MS SQL Server. С его помощью можно сделать репликацию базы данных со словами на SQL server mobile?
Как бы пропарсить тектовый файл что-бы он добавился в SQL server mobile без ПК?
Потом мне непонятно, как конечный пользователь будет ставить словарь.
Ин6сталлировать SQL server, добавлять базу данных, копировать запускной файл программы. Или это легко делается инсталллятором?
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как лучше хранить 2Mb слов в переводчике?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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