|
Основной форум Сюда все проблемы связанные с программированием. |
15.06.2011, 15:53
|
#1
|
AnyKey`щик
Регистрация: 15.12.2010
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Как создать словарь?
Всем привет! Я хочу создать словарь для моб.телефона,например,эсперанто-русский Вопрос к профи:как реализовать это на MP?
Типа вот этого:
|
(Offline)
|
|
15.06.2011, 15:56
|
#2
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Как создать словарь?
Скачать из интернета большой-большой словарь в txt(словари для взлома паролей подойдут) и читать оттуда слова?
|
(Offline)
|
|
15.06.2011, 16:15
|
#3
|
AnyKey`щик
Регистрация: 15.12.2010
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Как создать словарь?
Нет.Словарь для перевода с одного языка на другой.Пример я выложил)
|
(Offline)
|
|
15.06.2011, 16:28
|
#4
|
Знающий
Регистрация: 09.10.2009
Сообщений: 340
Написано 37 полезных сообщений (для 61 пользователей)
|
Ответ: Как создать словарь?
Как вариант создать масив(заполнять из файлла) в котором одно значение слово, другое перевод. Осущеествить поиск слова и вывести соответствующее значение.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
15.06.2011, 20:28
|
#5
|
ПроЭктировщик
Регистрация: 19.02.2011
Сообщений: 134
Написано 81 полезных сообщений (для 219 пользователей)
|
Ответ: Как создать словарь?
Для вашей информации, именно такая штука описана в справке MidletPascal 2 - Раздел Tutorial - Advanced Features. Последняя часть (Resources).
Если подгружать данные в память, то можно воспользоватся Lib_htable, который прилагается как пример тут. Hashtable позволяет хранить данные не по индексу, а по имени. То есть можно вносить в ключ с именем слова на одном языке слово (+описание?) на другом языке.
Если это помогает, кнопка "Полезно" находится в нижнем правом углу сообщений.
__________________
Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо YellowAfterlife за это полезное сообщение:
|
|
16.06.2011, 18:31
|
#6
|
Знающий
Регистрация: 21.07.2009
Адрес: Украина
Сообщений: 219
Написано 44 полезных сообщений (для 78 пользователей)
|
Ответ: Как создать словарь?
Создаешь на каждый язык 2 файла: в первом - слово, во втором - перевод. В программе загружаешь слова и их переводы в 2 массива, ищешь в 1 массиве нужное слово, выводишь перевод со второго массива по номеру элемента в первом массиве
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
16.06.2011, 19:44
|
#7
|
ПроЭктировщик
Регистрация: 21.06.2009
Адрес: Беларусь, Столбцы
Сообщений: 148
Написано 32 полезных сообщений (для 57 пользователей)
|
Ответ: Как создать словарь?
Если предварительно отсортировать по первой букве,затем отсортировать по второй букве (в отрезках с одинаковой первой буквой) и т д. (на компьютере конечно), то можно применить бинарный поиск, и находить искомое слово довольно быстро
+ сразу разбить все слова на файлы по первой букве, чтобы не грузить всё и сразу а только ту часть в которой мы будем осуществлять поиск
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
16.06.2011, 19:54
|
#8
|
AnyKey`щик
Регистрация: 15.12.2010
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Как создать словарь?
Я в программировании совсем новичок.
Пробовал использовать исходники программы PhoneBook,но там вылетает "Необработанное исключение" Out of Memory Error...
Если вам не сложно,то выложите,пожалуйста,рабочие исходники.
|
(Offline)
|
|
16.06.2011, 20:26
|
#9
|
AnyKey`щик
Регистрация: 15.12.2010
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Как создать словарь?
Сообщение от _Nox_
Если предварительно отсортировать по первой букве,затем отсортировать по второй букве (в отрезках с одинаковой первой буквой) и т д. (на компьютере конечно), то можно применить бинарный поиск, и находить искомое слово довольно быстро
+ сразу разбить все слова на файлы по первой букве, чтобы не грузить всё и сразу а только ту часть в которой мы будем осуществлять поиск
|
Это для меня пока сложновато Мне пример нужен,исходники...
__________________
Кто не был новичком,пусть тот первым бросит в меня камень!
|
(Offline)
|
|
24.06.2011, 16:20
|
#10
|
AnyKey`щик
Регистрация: 15.12.2010
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Как создать словарь?
import java.io.*;
import java.util.Hashtable;
public class ResourcesUTF8
{
public ResourcesUTF8(String s, String s1, String s2)
{
buffer = new StringBuffer();
endFile = false;
fileName = null;
extenssion = "";
load = false;
error = false;
extenssion = s2;
load = false;
name = s1;
directory = '/' + (s != null && s.trim().length() != 0 ? s + '/' : "");
}
public String get(String s)
{
if(!load && !load())
return "";
String s1 = (String)hashtable.get(s);
if(s1 == null)
return "";
else
return s1;
}
public void unload()
{
hashtable = null;
if(fileName != null)
{
name = null;
extenssion = null;
directory = null;
}
load = false;
endFile = true;
buffer = null;
}
public boolean load()
{
InputStream inputstream;
if(error)
return false;
inputstream = null;
InputStream inputstream1;
boolean flag;
inputstream1 = getInputStream();
if(inputstream1 != null)
break MISSING_BLOCK_LABEL_37;
flag = false;
if(inputstream != null)
try
{
inputstream.close();
}
catch(IOException ioexception) { }
return flag;
boolean flag1;
inputstream = new DataInputStream(inputstream1);
hashtable = new Hashtable();
endFile = false;
buffer = new StringBuffer();
for(String s = readKey(inputstream); s != null; s = readKey(inputstream))
{
String s1 = s.trim();
if(s1.length() > 0)
{
String s2 = readValue(inputstream);
if(s2 != null)
hashtable.put(s1, s2.trim());
}
}
inputstream.close();
load = true;
flag1 = true;
if(inputstream != null)
try
{
inputstream.close();
}
catch(IOException ioexception1) { }
try
{
return flag1;
}
catch(Exception exception)
{
error = true;
}
unload();
flag = false;
if(inputstream != null)
try
{
inputstream.close();
}
catch(IOException ioexception2) { }
return flag;
Exception exception1;
exception1;
if(inputstream != null)
try
{
inputstream.close();
}
catch(IOException ioexception3) { }
throw exception1;
}
private InputStream getInputStream()
{
if(error)
return null;
if(fileName == null)
{
InputStream inputstream = null;
String s = System.getProperty("microedition.locale");
if(s != null)
{
s = s.replace('-', '_');
fileName = directory + name + "_" + s + "." + extenssion;
inputstream = getClass().getResourceAsStream(fileName);
if(inputstream != null)
return inputstream;
int i = s.indexOf('_');
if(i != -1)
{
s = s.substring(0, i);
fileName = directory + name + "_" + s + "." + extenssion;
inputstream = getClass().getResourceAsStream(fileName);
if(inputstream != null)
return inputstream;
}
}
fileName = directory + name + "." + extenssion;
inputstream = getClass().getResourceAsStream(fileName);
if(inputstream == null)
{
error = true;
unload();
return null;
} else
{
return inputstream;
}
} else
{
return getClass().getResourceAsStream(fileName);
}
}
private String readKey(DataInputStream datainputstream)
throws IOException
{
if(endFile)
return null;
buffer.setLength(0);
int i;
for(i = -1; (i = datainputstream.read()) > 0 && i != 10 && i != 61;)
{
char c = (char)i;
buffer.append(c);
}
if(i == -1)
{
endFile = true;
return null;
} else
{
return buffer.toString();
}
}
private String readValue(InputStream inputstream)
throws IOException
{
if(endFile)
return null;
buffer.setLength(0);
for(int i1 = 0; (i1 = inputstream.read()) > 0 && i1 != 10;)
{
int i = i1 & 0xff;
switch(i >> 4)
{
case 0: // '\0'
case 1: // '\001'
case 2: // '\002'
case 3: // '\003'
case 4: // '\004'
case 5: // '\005'
case 6: // '\006'
case 7: // '\007'
buffer.append((char)i);
break;
case 12: // '\f'
case 13: // '\r'
int j = getByte(inputstream);
if((j & 0xc0) != 128)
throw new UTFDataFormatException();
buffer.append((char)((i & 0x1f) << 6 | j & 0x3f));
break;
case 14: // '\016'
int k = getByte(inputstream);
int l = getByte(inputstream);
if((k & 0xc0) != 128 || (l & 0xc0) != 128)
throw new UTFDataFormatException();
buffer.append((char)((i & 0xf) << 12 | (k & 0x3f) << 6 | (l & 0x3f) << 0));
break;
case 8: // '\b'
case 9: // '\t'
case 10: // '\n'
case 11: // '\013'
default:
throw new UTFDataFormatException();
}
}
return buffer.toString();
}
private int getByte(InputStream inputstream)
throws IOException, UTFDataFormatException
{
int i = inputstream.read();
if(i < 0 || i == 10)
{
endFile = true;
throw new UTFDataFormatException();
} else
{
return i;
}
}
public static final char DELIMITER = 61;
private Hashtable hashtable;
private StringBuffer buffer;
private boolean endFile;
private String fileName;
private String directory;
private String extenssion;
private String name;
private boolean load;
private boolean error;
}
import java.io.*;
import java.util.Hashtable;
public class ResourcesUTF8
{
public ResourcesUTF8(String s, String s1, String s2)
{
buffer = new StringBuffer();
endFile = false;
fileName = null;
extenssion = "";
load = false;
error = false;
extenssion = s2;
load = false;
name = s1;
directory = '/' + (s != null && s.trim().length() != 0 ? s + '/' : "");
}
public String get(String s)
{
if(!load && !load())
return "";
String s1 = (String)hashtable.get(s);
if(s1 == null)
return "";
else
return s1;
}
public void unload()
{
hashtable = null;
if(fileName != null)
{
name = null;
extenssion = null;
directory = null;
}
load = false;
endFile = true;
buffer = null;
}
public boolean load()
{
InputStream inputstream;
if(error)
return false;
inputstream = null;
InputStream inputstream1;
boolean flag;
inputstream1 = getInputStream();
if(inputstream1 != null)
break MISSING_BLOCK_LABEL_37;
flag = false;
if(inputstream != null)
try
{
inputstream.close();
}
catch(IOException ioexception) { }
return flag;
boolean flag1;
inputstream = new DataInputStream(inputstream1);
hashtable = new Hashtable();
endFile = false;
buffer = new StringBuffer();
for(String s = readKey(inputstream); s != null; s = readKey(inputstream))
{
String s1 = s.trim();
if(s1.length() > 0)
{
String s2 = readValue(inputstream);
if(s2 != null)
hashtable.put(s1, s2.trim());
}
}
И соответсвенно,word.txt и tran.txt Это Mobilelexicon.
__________________
Кто не был новичком,пусть тот первым бросит в меня камень!
|
(Offline)
|
|
24.06.2011, 21:17
|
#11
|
Знающий
Регистрация: 25.10.2009
Сообщений: 338
Написано 53 полезных сообщений (для 61 пользователей)
|
Ответ: Как создать словарь?
Оо как тут все сложно..
Program ReTranslit;
var
itemId,i,id : integer;
cmdNext : command;
cmdQuit : command;
name : string;
slovo1,slovo2:array [0..9] of string;
procedure loading;//процедура загрузки слов в словарь, это сделаешь сам я пока вручную пропишу 10ть слов
begin
i:=0;
slovo1[i]:='Привет';slovo2[i]:='Hello'; i:=i+1;
slovo1[i]:='My';slovo2[i]:='Myqw'; i:=i+1;
slovo1[i]:='Имя';slovo2[i]:='Name'; i:=i+1;
slovo1[i]:='Начало';slovo2[i]:='Begin'; i:=i+1;
slovo1[i]:='Конец';slovo2[i]:='End'; i:=i+1;
slovo1[i]:=' и т.д.';slovo2[i]:='и т.д.'; i:=i+1;
slovo1[i]:='';slovo2[i]:=''; i:=i+1;
slovo1[i]:='';slovo2[i]:=''; i:=i+1;
slovo1[i]:='';slovo2[i]:=''; i:=i+1;
slovo1[i]:='';slovo2[i]:=''; i:=0;
end;
begin
loading;
ShowForm;
itemId := FormAddTextField('Введите слово', '', 20, TF_ANY);
cmdNext := CreateCommand('ОК', CM_OK, 1);
AddCommand(cmdNext);
repeat until GetClickedCommand = cmdNext;
name := FormGetText(itemId);
for i:=0 to 9 do if slovo1[i]=name then begin id:=i; break; end;
ShowCanvas;
DrawText(slovo2[id], 0, 0);
Repaint;
cmdQuit := CreateCommand('Quit', CM_EXIT, 1);
AddCommand(cmdQuit);
repeat until GetClickedCommand = cmdQuit;
end.
Потом если захочешь добавишь авторегистр слова которое пишет пользователь, загрузку из тхт сделай сам.. я с тела этот пример писал(если что не работает простите..), так же советую добавить перевод с русского на английский и наоборот, делается это с помощью dolang:boolean додумаешься тоже сам))))
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.06.2011, 21:19
|
#12
|
Знающий
Регистрация: 25.10.2009
Сообщений: 338
Написано 53 полезных сообщений (для 61 пользователей)
|
Ответ: Как создать словарь?
__________________
Кто не был новичком,пусть тот первым бросит в меня камень!
|
Лови
|
(Offline)
|
|
24.06.2011, 23:52
|
#13
|
AnyKey`щик
Регистрация: 15.12.2010
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Как создать словарь?
Написал,откомпилировал(mp2.02by odd ).
"Необработанное исключение"No Class Def Found Error
java.lang.NoClass.DefFoundError
M
Где здесь ошибка?
__________________
Кто не был новичком,пусть тот первым бросит в меня камень!
|
(Offline)
|
|
27.06.2011, 14:36
|
#14
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Как создать словарь?
Отсутствует M.class - это самый главный класс с кодом твоего приложения. Проверь тщательно исходник почему он может не компилироваться, например одна и та же переменная объявлена дважды.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
27.06.2011, 17:36
|
#15
|
AnyKey`щик
Регистрация: 15.12.2010
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Как создать словарь?
Это мой антивирь не любит M.class))) Сейчас во время компиляции отключил его и прога заработала
__________________
Кто не был новичком,пусть тот первым бросит в меня камень!
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:15.
|