данные в программе

Предыдущая тема Следующая тема Перейти вниз

данные в программе

Сообщение  Eric-S в Вт Окт 07, 2008 10:39 am

Привет!

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

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

В библиотеку нужно засунуть информацию о разных национальных символах.
Причём с возможностью расширения набора.
Подгрузка из конфигурационных файлов исключаеться.
Все наборы должны быть доступны одновременно.
И при этом в каком-то более или менее удобном виде.

Незнаю, возможно если ничего умного не будет я всё же вынесу во внешние файлы, но делать это не очень желательно.

Нужно хранить следующие таблицы:

заглавные буквы
малые буквы
символы в середине слова
символы в начале слова
символы в конце слова
символы не входящие в слово
подстановочные или заменяемые символы (напр "е" и "ё")
смысловое соответствие букв с латинскими
визуальное соответствие букв с латинскими
фонетическое соответствие букв с латинскими


Возможно ещё что-то, непрешедшее мне пока в голову.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: данные в программе

Сообщение  justar в Вт Окт 07, 2008 12:23 pm

Eric-S пишет:Привет!
Подгрузка из конфигурационных файлов исключаеться.
Если наборы зашиваются в программу намертво - без возможности редактирования/дополнения пользователем, то можно воспользоваться операторами DATA/READ


Все наборы должны быть доступны одновременно.
Дык, это требование не исключает возможность использования файлов даных - просто сразу загружаешь все доступные наборы.

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 43
Откуда : Кишинёв, Республика Молдоа

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: данные в программе

Сообщение  Eric-S в Вт Окт 07, 2008 1:09 pm

Не знаю, data read накладывает линейную или матричную структуру, которая здесь явно не подходит.

Я сейчас серьёзно думаю на счёт подгрузки из внешних файлов. Но тут тоже много вопросов.

А в памяти, наверное удобнее всего будет список.

Потому, что для ассоциаций символов могут потребоваться несколько ячеек и матрица явно не подходит.

Но как это всё ещё оформить в файле, тоже не очень понятно.

Вероятно, я где-то перемудрил и можно сделать всё проще. Вот я и думаю, что может кто чего подскажет.

Если набор малых и больших букв можно просто вбить в строки
"АБВГДЕЁЖЗ"
"абвгдеёжз"
То смысловое соответствие, лучше указывать в лоб
"Ёё"
"ее"
здесь строки подходят.


Но вот пойдём дальше, нужна таблица транслитерации
"a" = "а"
"j" = "дж"
"x" ="кс"
"ch" = "ч"
"ya" = "я"
"ja" = "я"
Вот как всё хитро-то!
И значит мне для каждой таблици нужен будет один массив?

Ладно, допустим будет так. А как дальше мне сделать чтобы можно было переключаться между стандартами?
В массиве резервировать место (дополнительное измерение) для языков?

Это конечно всё можно сделать.
Но в случае с загрузкой данных из файла могут быть проблемы.
А в случае зашивания в код, будут трудности с добавлением новых.

Я смотрел, как нечто похожее реализовано в mysql, там вообще просто кошмар. Они используют файлы для простых случаев, а для сложных зашивают в код, но это всё неудобно.

А вот если реализовывать деревья, можно ли их как-то сохранить в файл в бинарном виде, чтобы можно было востановить прямо в память?

Делать разбор ini или xml файла может быть весьма накладно.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: данные в программе

Сообщение  electrik в Вт Окт 07, 2008 8:36 pm

привет. можно попробовать на встроенном ассемблере. вот так можно выводитьстроку.
dim a as zstring ptr
asm
mov eax, offset m
mov dword ptr [a],eax
end asm
print *a
sleep
end
asm

m: .ascii "test mess\0"
end asm
вот только есть одна проблема, все текстовые метки сделанные самим FreeBasic, находятся вне процедуры маин, а наши метки в ней. может можно как-то обойти, я как-то видел на их форуме, какие-то макросы с ассемблером, вроде что-то с секциями и т.д. короче надо найти синтаксис ассемблера as.exe, там и можно будет по мудрить. кстати, может данные пехать в какие-нибудь ресурсы, можно будет изменять прямо в бинарнике, каким-нибудь exescope. как-то бывало, когда я рылся в программах exescopом, мне попадались ресурсы с данными типа "binary, или еще с какими -нибудь, а там всякая чепуха типа:
1876395686485193756352755436125354
хотя, как создавать такие ресурсы, и к чему их крепить- не понятно. ладно ресурсы типа:
dialog, меню, акселератор, картинка, rcData, тут все ясно, крепится к окнам. еще я встречал ресурсы типа:
wave, music, и там лежали обычные вавники, береш из бинарника хап, и в коллекцию.

electrik

Сообщения : 391
Дата регистрации : 2008-09-02
Возраст : 36
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: данные в программе

Сообщение  Eric-S в Пт Дек 26, 2008 1:59 pm

Я вчера разговаривал с Tux'ом. И всплыл вопрос.

Есть две записи, для забивки данных в массив. И вот спрашиваеться, какой лучше, какой предпочесть. И в чём собственно между ними суть?

Код:

dim a(0 to 9) as integer
data 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
read a(0), a(1), a(2), a(3), a(4), a(5), a(6), a(7), a(8), a(9)

Или

Код:

dim a(0 to 9) as integer
a(0) = 0
a(1) = 1
a(2) = 2
a(3) = 3
a(4) = 4
a(5) = 5
a(6) = 6
a(7) = 7
a(8) = 8
a(9) = 9

Кстати, есть ли другие способы? Мне нужно внедрить в программу несколько массивов, чтобы доступ был по индексам. Но потом содержимое не меняеться. По сути это константы.

И ещё вопрос. Как правильно сделать и юзать указатель на массив?

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: данные в программе

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения