forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Файловая система у Нокиа (http://forum.boolean.name/showthread.php?t=1541)

Dragonprof 22.09.2006 17:33

Файловая система у Нокиа
 
У меня Nokia 3230! Series 60!
очень хочеться иметь возможность доступ с файловой системой телефона!
Видел библиотеку для сименсов но я думаю она е подойдет для моего смарта!
Если есть какието соображения отпишитесь!
А если я чтото пропустил (если такое уже обсуждалось) то укажите где если не трудно!

Piligrim 23.09.2006 03:13

Re: Файловая система у Нокиа
 
скорее всего JSR75 и библиотека jsr75i

Dragonprof 23.09.2006 17:07

Re: Файловая система у Нокиа
 
Цитата:

Сообщение от pilgrim
скорее всего JSR75 и библиотека jsr75i


У меня теперь возник вопрос! Незнаю вроде все понял скопировал все в либы программы птом подключаю но как вызвать правильно функцию никак не могу понять!Если не трудно приведи пару маленьких примеров.. буду благодарен! А если библиотеки пишеш сам то хотябы манул небольшой накатал (З.Ы. это я так не указую а советую! Уважаю твой труд)...

Piligrim 24.09.2006 11:04

Re: Файловая система у Нокиа
 
Код:

program NewProject3;
uses jsr75, str;
var i: integer; s, f, r: String;
begin
        s:= read_file('root1/test.txt');
        drawText(s, 0, 30);
        s:= 'просто тетсовая stroka.';
        write_file('root1/test1.txt', s);
        if open_file('root1/test.txt')=1 then begin
                drawText('OK',0,40);
                s:= read_string;
                drawText(s, 0, 50);
        end;
        repaint;       
        delay(5000);
end.

это для моей библиотеки. у JSR75i больше функций и многие по другому вызываются, текстовый файл с описаниями

Dragonprof 24.09.2006 17:34

Re: Файловая система у Нокиа
 
Цитата:

Сообщение от pilgrim
Код:

program NewProject3;
uses jsr75, str;
var i: integer; s, f, r: String;
begin
        s:= read_file('root1/test.txt');
        drawText(s, 0, 30);
        s:= 'просто тетсовая stroka.';
        write_file('root1/test1.txt', s);
        if open_file('root1/test.txt')=1 then begin
                drawText('OK',0,40);
                s:= read_string;
                drawText(s, 0, 50);
        end;
        repaint;       
        delay(5000);
end.

это для моей библиотеки. у JSR75i больше функций и многие по другому вызываются, текстовый файл с описаниями


Незнаю почему но твой код ваще не прохавало!
Во первых так и не понял зачем ты сделал ( uses str )
И ваще он не хавает код грит не пойму read_file - что это значит
и так далее!
Счас опишу что у меня выдает:
---
При таком коде: (твой вариант примера):
Код:

program NewProject3;
uses jsr75,str;
var i: integer; s, f, r: String;
begin
        s:= read_file('root1/test.txt');
        drawText(s, 0, 30);
        s:= 'просто тетсовая stroka.';
        write_file('root1/test1.txt', s);
        if open_file('root1/test.txt')=1 then begin
        drawText('OK',0,40);
        s:= read_string;
        drawText(s, 0, 50);
        end;
        repaint;
        delay(5000);
end.

-- выдает такое:
...error, failed to load 'str' library/unit
...error, identifier 'read_file' is not constant, function or variable name.
2 error(s), 0 warning(s)
:''((

Ну думаю уберу из uses str - убрал:
Код:

program NewProject3;
uses jsr75;
var i: integer; s, f, r: String;
begin
        s:= read_file('root1/test.txt');
        drawText(s, 0, 30);
        s:= 'просто тетсовая stroka.';
        write_file('root1/test1.txt', s);
        if open_file('root1/test.txt')=1 then begin
        drawText('OK',0,40);
        s:= read_string;
        drawText(s, 0, 50);
        end;
        repaint;
        delay(5000);
end.

-- выдает такое:
...error, identifier 'read_file' is not constant, function or variable name.
1 error(s), 0 warning(s)
:''((
Потом вспомнил что гдето видел такое на форуме что писать нужно так
jsr75.read_file('root1/test.txt');

попробывал:
Код:

program NewProject3;
uses jsr75;
var i: integer; s, f, r: String;
begin
        s:= jsr75.read_file('root1/test.txt');
        drawText(s, 0, 30);
        s:= 'просто тетсовая stroka.';
        jsr75.write_file('root1/test1.txt', s);
        if jsr75.open_file('root1/test.txt')=1 then begin
        drawText('OK',0,40);
        s:= jsr75.read_string;
        drawText(s, 0, 50);
        end;
        repaint;
        delay(5000);
end.

-- выдает такое:
...error, error, library/unit does not constain function 'read_file'
...error, error, library/unit does not constain function 'write_file'
...error, error, library/unit does not constain function 'open_file'
... тут сказануло что нема ';' в drawText('OK',0,40);
...error, error, library/unit does not constain function 'read_string'
а тут еще сказало что нужна '.' а не ';' в
Код:

//...
end; // вот на это строке
repaint;
delay(5000);
end.

6 error(s), 0 warning(s)
опять :''((

Вот решил перечислить все либы что лежат у меня может в них трабл! :
MIDletPascal\Libs\..
Lib_jsr75.class
Lib_jsr75s.class
Lib_rsenum.class
Lib_jsr75is.class
Lib_rsenum.java
и все собсно больше ничего не кидал...
Может я чето пропустил или чтото не так делаю! Просьба помочь разобраться!
P.S. у меня MIDlet Pascal 2.01

Dragonprof 03.10.2006 19:26

Re: Файловая система у Нокиа
 
у меня начало пахать в мидл паскале все - разобрался (трабл был в версии паскаля)!
Вот привожу кусочек кода
Код:

program Test;
uses jsr75i;
var s:string;
begin
  showCanvas;
  s:=jsr75i.get_roots;
  drawtext(s,10,10);
  repaint;
  delay(2000);
end.

компилится не выдает ошибок!
Вот тока теперь такой вопрос!
На мобилке выдает ошибку!
Говорит: ошибка 91 java.lang.Error
что делать подскажите? :SOS:

shammy 29.10.2006 22:51

Re: Файловая система у Нокиа
 
Цитата:

Сообщение от Dragonprof
у меня начало пахать в мидл паскале все - разобрался (трабл был в версии паскаля)!


компилится не выдает ошибок!
Вот тока теперь такой вопрос!
На мобилке выдает ошибку!
Говорит: ошибка 91 java.lang.Error
что делать подскажите? :SOS:

У меня тоже 2.01 как решил проблему?
и на телефоне таже ошибка nokia 3230

Dragonprof 02.11.2006 00:40

Re: Файловая система у Нокиа
 
Цитата:

Сообщение от shammy
У меня тоже 2.01 как решил проблему?
и на телефоне таже ошибка nokia 3230

Ваще проблема осталась открытой! ТОесть ява с Нокиями работать отказуется (ИМХО...)! Вот наднях скачал себе SDK для мобилы своей ( S60 ),
вот юуду разбираться... На мидлет паскале писать легко....но я уже перешел на яву, уже есть проект по ходу выполнения учу язы и его подводные камни... Все равно если не знать Java то на мидлет паскале толком ничего не напишеш!
думаю изучаю SDK я найду способ связаться с файловой системой смарта.. как только справлюсь сразу же отпишусь...
--
З.Ы. Счас юзаю NetBeans 5.0 и NetBeans Mobility Pack. :super:

Fire_Phoenix 18.12.2007 17:50

Re: Файловая система у Нокиа
 
Решил получить доступ к файловой системе, попробвал разобраться с библиотекой jsr75. Програмка должна вывести текст на экран из файла, в случае отсутствия файла, создает его и записывает в него 5 строчек....как я думал:-D на самом деле в файле только последняя строчка оказывается(
Код:

program Tester_jsr75;
uses jsr75;
var
label_id: integer;
okCommand:command;
tmp:integer;
aa: String;
begin
showForm;
tmp:=file_exists('e:/lib.dat');//проверяем существование файла
if tmp=1 then
begin
tmp:=open_file('e:/lib.dat');//открываем файл, хотя вроде и без этого работает...
for tmp:=0 to 4 do //выводим 5 строчек из файла
begin
aa:=read_file('e:/lib.dat');
label_id := formAddString(integertostring(tmp)+' '+aa);
end;
tmp:=close_file('e:/lib.dat');//закрываем файл...тоже кажется не обязательно
end
else
begin//здесь создаю файл и записывю 5 строчек в него
write_file('e:/lib.dat','01'+chr(10));//chr(10), это вроде бы переход на новую строчку, если не ошибся)))
write_file('e:/lib.dat','02'+chr(10));
write_file('e:/lib.dat','03'+chr(10));
write_file('e:/lib.dat','04'+chr(10));
write_file('e:/lib.dat','05'+chr(10));
end;
//тут создается кнопочка для выхода из програмки...при использовании jsr75i до нее даже дело не доходит, прога где то будто виснет
//то же самое касается и чтения лишней строчки
okCommand := createCommand('OK', CM_OK, 1);
addCommand(okCommand);
while (getClickedCommand <> okCommand) do
delay(100);
end.

У меня Nokia 6125, хотелось бы в полную силу использовать внешнюю память.
Те функции что есть в библиотеке не достаточны, к примеру..
1 - мне нужна возможность как создать так и удалить файл
2 - мне нужна возможность использовать файл как для чтения так и для записи
3 - было бы неплохо определять сколько строк в файле, так как при чтении чего то лишнего опять все виснет
4 - было бы вообще супер, если б я мог получить доступ к произвольно выбранной строке(байту), а не читать весь файл по порядку, тоже самое и к записи относится
5 - ? запись в файл и чтение данных типа "запись"
Еще есть такой момент, при чтении из файла, у меня вылезает сообщение для каждой строки, может можно как то файл весь прочитать в какой нибудь буфер?
Возможно я что то делаю не правильно, или не так использую функции, буду рад любой помощи

Fire_Phoenix 18.12.2007 18:03

Re: Файловая система у Нокиа
 
Можно поинтересоваться, то что я выделил в коде, специально написано?(имя файла) И что означает "root1"? Это можно подставлять вместо названия диска? Или У каких то телефонов такая структура файловой системы?
Цитата:

Сообщение от pilgrim
Код:

program NewProject3;
uses jsr75, str;
var i: integer; s, f, r: String;
begin
    s:= read_file('root1/test.txt');
    drawText(s, 0, 30);
    s:= 'просто тетсовая stroka.';
    write_file('root1/test1.txt', s);
    if open_file('root1/test.txt')=1 then begin
        drawText('OK',0,40);
        s:= read_string;
        drawText(s, 0, 50);
    end;
    repaint;   
    delay(5000);
end.

это для моей библиотеки. у JSR75i больше функций и многие по другому вызываются, текстовый файл с описаниями


Piligrim 18.12.2007 21:45

Re: Файловая система у Нокиа
 
выделено потому что у разных производителей разные руты. у моторолы это a или b, у SE - nand и ms
а root1 по умолчанию используется в эмуляторах WTK Sun

Fire_Phoenix 18.12.2007 22:11

Re: Файловая система у Нокиа
 
А чем отличаются библиотеки jsr75, jsr75i, jsr75is, jsr75s
А еще что то подобное вроде бы делает mfs
Никаких справок и примеров нет по ним, может кто объяснит как их использовать?
//аха, кажется jrs75is и jsr75s расчитны на работу с Siemens
//осталось еще с остальным разобраться))
Каков порядок доступа к файлам при записи и чтении с использованием библиотек?
Поиск пути, файлов, формирование их списков меня не так сильно интересует, предпологается что файл всегда находится в одном и том же известном месте.

ViNT 18.12.2007 22:48

Re: Файловая система у Нокиа
 
Вложений: 2
Вот пример работы с mfs.
Кстати, mfs - это либа для доступа к ФС моторол.
Большинство функций помоемуназываются также, как и в jsr75(можно просто попробовать заменить либу в uses на jsr75).
Кстати, пытаться запускать не советую т.к. всеравно не сработает(заточено под моторолу), просто почитать и разобраться.
P.S. Корневые диски можно определить функцией get_roots.
P.P.S. С Nokia дел не имел, но возможно там нужно как-то разрешать приложению доступ к ФС.

Fire_Phoenix 18.12.2007 23:03

Re: Файловая система у Нокиа
 
Спасибо за примерчик, теперь все проясняется по тихонечку, единственное что я еще не понимаю, почему не получается записать в файл больше чем одну строку?

Ситуация у меня примерно следующая, сделал програмку для работы, там нечт вроде таблицы параметров для обработки продукции:
[тип продукции1]
параметр1
параметр2
параметр3
...
[тип продукции2]
...
Мне нужно сделать так, чтоб можно было добавлять или удалять новые типы продукции, и чтоб я мог выборочно загружать данные из файла для отображения в програмке. То есть заранее не известно сколько строк в файле, возможно у каждого типа продукции разное кол во параметров...вот сижу голову ломаю, ничего путного не получается. Файл прочитать построчно смог(заранее зная сколько строк), создать смог(только почему то в нем последняя запись сохраняется, файл получается однострочным)
А разрешение доступа я ставлю, да и сейчас подписываю используемые приложения пользовательским сертификатом, чтоб потом не париться с настройками

----------------------------------------------------------
Мои эксперименты принесли свои плоды)))
Оказывается при чтении файла функцией read_file('путь к файлу'), считывается ег полное содержание....интересно что это за тип данных такой? Ведь обычная строка 255 символов кажется, а как с этой строкой работать? В принципе. если обрабатывать ее посимфольно, ориентируяси по меткам как и при детектировании перечня дисков и файлов, то можно найти нужные мне строки. Теперь было бы еще неплохо узнать, как можно записатьв файл такую же гигантскую строку...
В справке написано
Строковый тип (string) используется для представления текста и содержит последовательности символов. В отличии от строк в других диалектах Паскаля, строки в MIDletPascal не являются массивами символов
К какому же типу данных отнести String?
Это уже получается как поток данных, какова максимальная длинна такого буфера? Я смог извлечь из файла одной строкой 5кб данных (запихнул туда какую то статью))))

Код:


for tmp:=0 to 5 do //чтение 5 строчек из файла
  begin
  aaa:=read_file('e:/lib.dat');
  label_id := formAddString('строка:'+integertostring(tmp)+' '+aaa+chr(10));
  end;

результат вывода:

строка:1 ....здесь вывелся весь файл....
строка:2 //здесь и далее пусто...
строка:3
строка:4
строка:5

Со строкой такого типа получается можно работать уже без обращения к файловой системе задействовав скажем стандартную функцию паскаля function getChar(str: string; pos:integer): char;
//ладненько, завтра рано на работу вставать, да и сил нет на эти эксперименты)

Piligrim 19.12.2007 10:58

Re: Файловая система у Нокиа
 
Строки в Ява, а соответственно и в МР ограничены только размером хипа.
Первой библиотекой была mfs, затем она была модифицирована под jsr75. Библиотека jsr75i расширение от OvZ. Остальные созданы на их базе, конечно лучше пользоваться последней версией от ViNT, т.к. по-моему у нее наиболее полный список функций.
Функция write_file стирает старое содержимое файла и записывает в него новое. Если не ошибаюсь (на работе сейчас) для последовательной записи нужно
open_file
write_line N раз
close_file

Считать файл построчно безусловно можно, просто нужно добавить такую функцию в библиотеку если ее там нет.

2Fire Phoenix пересмотрите свой подход к форматированию текста, не стоит использовать выделение к большей части текста.

ViNT 19.12.2007 16:14

Re: Файловая система у Нокиа
 
Цитата:

Сообщение от pilgrim
конечно лучше пользоваться последней версией от ViNT, т.к. по-моему у нее наиболее полный список функций.

Поправка : в моей библиотеке нет функций чтения/записи,
она делалась как дополнение к библиотеке jsr75 и рассчитана на совместное применение с ней.

Fire_Phoenix 19.12.2007 20:38

Re: Файловая система у Нокиа
 
Цитата:

Сообщение от pilgrim
2Fire Phoenix пересмотрите свой подход к форматированию текста, не стоит использовать выделение к большей части текста.

Прошу конечно прощения, но я не выделяю текст, просто привык писать текст шрифтом System, а код программ Courier New.
Функции записи строки в библиотеке я не нашел, а так как с Java и C+ я не дружу пока, то следовательно и не смогу пополнить библиотеку необходимыми функциями...

И так, подведу итог изучения работы библиотеки методом "тыка")
тут примерный порядок вызова процедур и функций библиотеки
Код:


uses jsr75i;
tmp:integer;
str, filename:string;

 
tmp:=open_file(filename);//открываем файл для чтения
str:=read_file;//читаем полностью все содержимое файла
tmp:=close_file(filename);//закрываем файл

 
//тут не знаю, нужно ли открывать файл для чтения, вроде бы и без этого работает
str:=read_string(filename);//чтение строчки из файла, при следующем обращении к функции будет читаться следующая строка

 
//открывать так же ничего не нужно
write_file(filename, str);//создание/перезапись файла содержимым str
создание строчек при записи файла я делаю так:
str:='';//обнуляю переменную
str:=srt+chr(10)+str1+chr(10)+str2+chr(10)+str3+chr(10)+str4...//сумма всех нужных строк в одну

 
tmp:=file_exists(filename);//проверка на существование файла


Piligrim 20.12.2007 00:20

Re: Файловая система у Нокиа
 
прошу прощения. у меня на странице библиотека jsr75i была выложена без описания. сейчас я это исправил, там полный список функций и их назначение.
добавил запись строки
Код:

        cr := chr(10)+chr(13);
        debug(get_roots);
        file_create('/root1/test1.txt');
        debug('open '+open_file('/root1/test1.txt'));
        write_string('test'+cr);
        write_string('test2'+cr);
        debug('close '+close_file(''));


Fire_Phoenix 22.12.2007 01:57

Re: Файловая система у Нокиа
 
Спасибо за новую функцию, теперь я и читаю и записываю файл построчно как и хотел.
Теперь есть новая проблемма.
В своей программе у меня следующий порядок

открытие файла
чтение по стркам
закрытие файла
обработка данных
открытие файла
запись по строкам
закрытие

теперь если я захочу открыть файл опять для чтения, уменя программа на телефоне виснет так же как и при попытке чтеня строк большихчем есть в файле, решил попробовать вставить reset и skip(0), ни одно ни второе не помогло...
Записывать повторно не пробовал, возможно там будет что то подобное, нужно проверять.

ViNT 22.12.2007 08:53

Re: Файловая система у Нокиа
 
Я бы посоветовал читать весь файл в массив строк(если памяти хватит), затем обработать данные, удалить файл и записать его заново.

Fire_Phoenix 22.12.2007 13:37

Re: Файловая система у Нокиа
 
В программе сделано так, что можно отказаться от записи изменений в файл, то есть запись в файл не производится, следовательно и удалять его нельзя, иначе останусь без параметров)
Так вот если я отказываюсь от сохранения в файл, то попадаю в главное меню,в котором могу заново войти в редактор библиотеки параметров, тут то телефон и виснет...
Конечно можно было бы создать резервное хрнилище данных и не читать файл заново, можно и прочесть его весь сразу а потом вручную разрезать на строки, но согласитесь, это не решение прблеммы, это ее обход.
Может быть я опять не так что то делаю, либо в библиотеке jsr75i есть недочет при повторном обращении к одному и тому же файлу.
------------------------------------------------
Проверил функцию read_file, эффект почти тот же, из файла не считываются строки, выводится пустая строка, но по крайней мере программа не виснет и можно управлять ее ходом..
Опять же функции reset и skip(0) не работают в сочетании с read_file.
Проблемма повторного чтения файла остается открытой

Piligrim 22.12.2007 17:57

Re: Файловая система у Нокиа
 
я посмотрю. возможно некорректно освобождается дескриптор файла.

ЗЫ: по поводу skip, он работает по-моему не на всех производителях. По крайней мере на моторолах skip(N) аналогично read_byte N раз
Добавил освобождение файлового дескриптора везде где можно. Пробуйте.

Xamil 25.12.2007 22:11

Re: Файловая система у Нокиа
 
Сколько было написано, и все ни о чем. На nokia 3230 операционка symbian os 7.0s, на которой доступ к файловой системе по jsr75 невозможен. Есть подозрения, что как-то можно сделать доступ наподобии, как у сименсов, но только подозрения..

ViNT 25.12.2007 23:19

Re: Файловая система у Нокиа
 
Не, com.siemens.io.file врядли пойдет, скорее всего всетаки jsr75, только может дело в вечной проблеме разрешения доступа?

Xamil 25.12.2007 23:48

Re: Файловая система у Нокиа
 
Да нет, доступа из явы нет точно, это общеизвестный факт у смартфонщиков. Что касается доступа к фс наподобии семеновского- не в прямом, разумеется, смысле, просто должен существовать сходный механизм, имхо.. Но легче уж смарт сменить, 7я ось устарела(хоть и у меня пока тоже на 7ке).

Fire_Phoenix 26.12.2007 00:16

Re: Файловая система у Нокиа
 
Эх, потерял свой телефон на выходных:(
Теперь взял себе N73, неужели придется программу свою переделывать под симбиан?

Piligrim 26.12.2007 00:25

Re: Файловая система у Нокиа
 
Цитата:

Сообщение от Xamil
Да нет, доступа из явы нет точно, это общеизвестный факт у смартфонщиков. Что касается доступа к фс наподобии семеновского- не в прямом, разумеется, смысле, просто должен существовать сходный механизм, имхо.. Но легче уж смарт сменить, 7я ось устарела(хоть и у меня пока тоже на 7ке).

По поводу доступа к ФС: JSR75 является стандартом, а нокиа своего ничего не придумывала в области ФС, значит если бы доступ был, он бы был JSR75.По поводу смартфонов: нет доступа только у нокии, у SE, на смартах спокойно работает JSR75 из явы

Fire_Phoenix 26.12.2007 00:32

Re: Файловая система у Нокиа
 
Хм, а где это утверждено что нет доступа?...
Я только что запустил у себя какой то Java файловфй менеджер, он очень даже спокойно все читает, даже имена дисков как на старом телефоне отображаются

Xamil 26.12.2007 09:56

Re: Файловая система у Нокиа
 
Fire_Phoenix, я ж написал, только на смартах symbian с 7й осью фс из явы недоступна. На н73 то ли 8.1, то ли 9, точно не помню. piligrim, понятно.. Значит мне тоже придется аппарат менять =)

beloff 26.12.2007 14:41

Re: Файловая система у Нокиа
 
А как работать с jsr75ex?
Не получается список дисков заполучить...

Piligrim 26.12.2007 15:24

Re: Файловая система у Нокиа
 
Цитата:

Сообщение от beloff
А как работать с jsr75ex?
Не получается список дисков заполучить...

Ее, по моему вместе с jsr75i надо использовать, там доп. функции

ViNT 26.12.2007 18:42

Re: Файловая система у Нокиа
 
Библиотеа jsr75ex является дополнением к библиотеке jsr75 и рассчитана на совместное использование с ней.
Все доступные в библиотеке функции описаны в файле Help.txt в архиве, а пример использования в папке Example. Для получения списка дисков и чтения/записи файлов надо использовать функции библиотеки jsr75. Из функций jsr75 есть только поиск файлов(более сходный с паскалевским).


Часовой пояс GMT +4, время: 18:28.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot