Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];

Вниз

MIDlet Pascal — вопли и жалобы   Найти похожие ветки 

 
Джо ©   (2006-08-09 20:55) [0]

Как за эту поделку можно требовать денег? Совсем совести нету у разработчиков :)

Понадобилось мелкую программку "для себя" сделать.

Дин. массивов нету. Ладно, делаем обычный, благо, задача позволяет.
Нужно было создать тип, список строк.
type
 TStringArray = array [0.. MaxListItemIndex] of string;

 TStringList = record
   ItemCount: Integer;
   Items: TStringArray;
 end;

Отлуп: arrays is not supported in records. Весело.

Ладно, благо массив нужен по задаче всего один на всю программу и глобальный, памятуя, что "модуль" это тоже еденица инкапсуляции, создаю юнит в секции implementation делаю FItemCount и массив строк, в секции interface публикую функции для работы с массивом. Выкрутился, все отлично :)

Добавляю функцию AddItem, возвращающую индекс добавленного элемента, а в случае ошибки возвращающую код ошибки. Так-с. Объявляю
const
 ERR_LIST_LIMIT_EXEEDS = -1;

Получаю: "error, constant expected", не понимает, собака, отрицательных констант.

Ужос. Ну как можно за это требовать денег, скажите мне, есть совесть? 8-|

Спасибо за внимание, извините за беспокойство.


 
Der Nechk@ssoff ©   (2006-08-09 20:58) [1]

Кто требует? Седня скачал халявно,ещё не юзал. Как оно?


 
Джо ©   (2006-08-09 21:01) [2]

> [1] Der Nechk@ssoff ©   (09.08.06 20:58)
> Кто требует?

Условия лицензии. Для некоммерческого использования бесплатно, для коммерческого — плати денежку.


 
Джо ©   (2006-08-09 21:03) [3]

> [1] Der Nechk@ssoff ©   (09.08.06 20:58)
> Как оно?

Ужасно.


 
Der Nechk@ssoff ©   (2006-08-09 21:06) [4]

Ясно. Я все же попробую, ибо - интерес, но, от беглого взгляда, впечатление тоже не очень.


 
Джо ©   (2006-08-09 21:07) [5]

Еще один ужос: variable parameters not supported and will be ignored. Идиотизмь.


 
TUser ©   (2006-08-09 21:11) [6]

Динмассивов и в Delphi долгое время не было. И в фрипаскале доступно при -Mdelphi, а просто так - ни-ни. Ну и вообще - другой язык, свои особенности. Гнупаскаль тоже от D сильно отличается.


 
Джо ©   (2006-08-09 21:20) [7]

Да бог с ними, с дин. массивами, это цветочки...


 
TUser ©   (2006-08-09 21:25) [8]

А дополнительные какие-нибудь возможности есть? По сравнению с Delphi. Если да - то надо туда смотреть, а приведенные "вредности" можно обойти.


 
Джо ©   (2006-08-09 21:35) [9]

> [8] TUser ©   (09.08.06 21:25)
> А дополнительные какие-нибудь возможности есть? По сравнению
> с Delphi.

Это компилятор, который генерирует J2ME-код для мобильных устройств. Поэтому с Делфи его сравнивать не представляется возможным :)


 
TUser ©   (2006-08-09 21:41) [10]

Ну, так delphi-код на мобиле не запускается. А своеобразности языка везде есть, какие из вышеперечисленных непреодолимы?


 
VirEx ©   (2006-08-09 21:43) [11]


> Дин. массивов нету.

так их в j2me их нету, потому и в мидлет паскале невозможно их сделать, поэтому и юзают объект Vector


 
Pazitron_Brain ©   (2006-08-09 21:48) [12]

По-моему предчувствию он создан для создания игр и клиентов для мастаков :).


 
Petr V. Abramov ©   (2006-08-09 21:52) [13]

> Ну как можно за это требовать денег, скажите мне, есть совесть?
 Но хочется ж поюзать-то, хочется... :) вот и бабы так же... :) и не совсем совершенные на этом зарабатывают :)


 
Джо ©   (2006-08-09 22:11) [14]

Да меня не печалит отсутствии дин. массивов, бог с ними :) А вот другие ограничения синтаксиса (см. выше) печалят.

Дайджест из наболевшего:

const
 A = -1; // нельза отриц. константы
---
procedure A (var Par); // нельзя var-параметры
---
type
 Rec = record
   A: array [0..1] of string; // нельзя массивы в записях
 end;


 
Furyz ©   (2006-08-09 23:55) [15]

меня тоже кумарят , но я юзаю
А вот с сокетами проблемы есть
> Джо


А почему ты честный?
Платиш им деньги?
Ты ж из Украины\России


 
Германн ©   (2006-08-10 02:22) [16]


> Джо ©   (09.08.06 20:55)

Не печалься Серёга. Бывает и хуже! Я уже плакался тут как-то про некий компиллятор паскаля для MC51. Тебе то компиллятор хоть говорит, что именно нельзя! А в моем случае всё компиллировалось без сообщений об ошибках, но работало не всегда. Например конструкция if not MyPerem компиллировалась правильно, а конструкция if MyPerem - не правильно. И понадобилось потратить дни, чтобы найти все подобные ошибки в компилляторе.
А на десерт - сей компиллятор, как выяснилось, иногда перед вызовом процедуры ставит один оператор PUSH, а иногда два. Ну и соответственно после выполнения процедуры либо один оператор POP, либо два! С чем это связано - установить я это так и не смог. :-( Перевёл часть процедур на ASM и произвожу "ручную" линковку. Точнее последнюю её часть, т.е. формирование выходного файла.


 
Джо ©   (2006-08-10 02:30) [17]

> [16] Германн ©   (10.08.06 02:22)

Спасибо, немного утешил :о) Эх, "кому на Руси жить хорошо?"...


 
Германн ©   (2006-08-10 02:40) [18]


> Джо ©   (10.08.06 02:30) [17]
>
> > [16] Германн ©   (10.08.06 02:22)
>
> Спасибо, немного утешил :о)

Не за что. :-)
Могу и ещё более "утешить". Я свои вышеописанные "бодания" с компиллятором паскаля для MC51 производил совершенно бесплатно! Просто человек хороший! (Для которого я делал всю эту тягомотину)


 
Джо ©   (2006-08-10 02:43) [19]

Да я тоже "совершенно бесплатно", то есть, просто для себя хотел утилитку состряпать. Теперь мне что-то уже совсем не хочется этой утилитки, ну его в болото! Не хочется лепить уродливого "крокодила" :)


 
Германн ©   (2006-08-10 02:53) [20]


> Джо ©   (10.08.06 02:43) [19]

И мне тоже "не хочется". Тут мы тоже "тёзки"! :-)


 
VictorT ©   (2006-08-10 10:44) [21]

Ну так берись за J2ME.
З.Ы. То же самое я сказал после мидлет-паскаля сам себе пару месяцев назад, но воз и ныне сам :D


 
iZEN ©   (2006-08-10 18:03) [22]


> VirEx ©   (09.08.06 21:43) [11]
> > Дин. массивов нету.
>
> так их в j2me их нету, потому и в мидлет паскале невозможно
> их сделать, поэтому и юзают объект Vector


В J2ME есть динамические массивы.
То есть во время выполнения мидлета можно создавать массивы произвольной длины и размерности. Операции с массивами такие же, как в J2SE (десктопной Java).

java.util.Vector — это не массив, а контейнер ссылок на объекты. Можно, конечно, создать вектор векторов (в векторе могут быть ссылки на другие вектора и т.д. — до любого уровня вложенности, лишь бы память не закончилась). Но работать с перечислением элементов вектора несколько напряжнее, чем с индексом массива, так как скорость небольшая.

Джо ©   (09.08.06 20:55), а что мешает писать на чистой java (J2ME)? Ведь все необходимые инструменты бесплатны как для коммерческого использования, так и для опенсурса.


 
Джо ©   (2006-08-10 18:25) [23]

[22] iZEN ©
> а что мешает писать на чистой
> java (J2ME)?

Я ее совершенно не знаю, а для сиюминутной задачи потратить как минимум месяц для знакомства с языком и средой не могу, к сожалению.
Кроме того, выкачать даже бесплатный Carbide.j (от Nokia) у меня трафика не хватит :)


 
Джо ©   (2006-08-10 18:26) [24]

> [22] iZEN ©

Вчера "потыкался" в этом Wireless Toolkite — крыша совершенно съехала, настолько на "паскалевский взгляд" нечитаемые исходники и примеры в этой Джаве, что я понял, что тут пришлось бы серьезно браться за язык, с самых азов.


 
Суслик ©   (2006-08-10 18:29) [25]


>  [24] Джо ©   (10.08.06 18:26)
> > [22] iZEN ©
>
> Вчера "потыкался" в этом Wireless Toolkite — крыша совершенно
> съехала, настолько на "паскалевский взгляд" нечитаемые исходники
> и примеры в этой Джаве

смею тебя заверить - они думают также :) шутка.


 
iZEN ©   (2006-08-10 18:55) [26]


> Джо ©   (10.08.06 18:26) [24]
>
> > [22] iZEN ©
>
> Вчера "потыкался" в этом Wireless Toolkite — крыша совершенно
> съехала, настолько на "паскалевский взгляд" нечитаемые исходники
> и примеры в этой Джаве, что я понял, что тут пришлось бы
> серьезно браться за язык, с самых азов.

Достаточно взять редактор с подсветкой синтаксиса, так сразу станет понятна структура кода. Notepad++, например.

Sun WTK не имеет инструментов по редактированию исходников. Это делается в сторонних редакторах, даже в Блокноте. Структура проекта обычно состоит из нескольких каталогов: src - исходники, res - ресурсы (картинки, файлы свойств, текстовые файлы, музыка, видео и т.д.), classes и tmpclasses - каталоги с откомпилированными и преверифицированными классами, соответственно, можно использовать сторонние библиотеки, bin - каталог "продукта" с jar и jad-файлами, кроме того, там же находятся bat-файлы для более простой пакетной сборки и запуска (можно не использовать KToolbar).

Исчерпывающая документация в каталоге по API и Руководство — ...wtk\docs\


 
Джо ©   (2006-08-10 18:58) [27]

> [26] iZEN ©   (10.08.06 18:55)

Спасибо за помощь. Я вчера, правда, уже со структурой каталогов разобрался, вроде. :) Надо бы, действительно, докумментацию поглядеть, может, не так это страшно, как мне показалось на первый взгляд :)


 
VirEx ©   (2006-08-10 19:22) [28]

Джо
поковыряйся в java и ты поймёшь что в j2me намного проще писать программы чем в этом midlet pascal, т.е. ошибки компилятора и извращения (на подобии написания библиотек на java для MP чтобы повысить функциональность мидлета) отпадут сами собой :)


>  [22] iZEN ©   (10.08.06 18:03)
>
> > VirEx ©   (09.08.06 21:43) [11]
> > > Дин. массивов нету.
> >
> > так их в j2me их нету, потому и в мидлет паскале невозможно
>
> > их сделать, поэтому и юзают объект Vector
>
>
> В J2ME есть динамические массивы.
> То есть во время выполнения мидлета можно создавать массивы
> произвольной длины и размерности. Операции с массивами такие
> же, как в J2SE (десктопной Java).

пример! код в студию!


 
VirEx ©   (2006-08-10 19:35) [29]


> [22] iZEN ©   (10.08.06 18:03)
> java.util.Vector — это не массив, а контейнер ссылок на
> объекты.

ну ты кадр, читай внимательней:

> [11] VirEx ©   (09.08.06 21:43)
>
> > Дин. массивов нету.
>
> так их в j2me их нету, потому и в мидлет паскале невозможно
> их сделать, поэтому и юзают объект Vector


 
Суслик ©   (2006-08-10 19:37) [30]

так вроде

int a[];
a = new int [10];


 
VirEx ©   (2006-08-10 19:42) [31]


>  [30] Суслик ©   (10.08.06 19:37)
> так вроде
>
> int a[];
> a = new int [10];

это ерунда! мне надо так:
int a[];
int x = 5;
a = new int [x];
x = 10;
b = new int [x];


 
VirEx ©   (2006-08-10 19:52) [32]


> [31] VirEx ©   (10.08.06 19:42)

ай эм сорри, загвоздка в другом:
нельзя изменять размер динамического массива, т.е. определить размер массива можно только при создании но нельзя добавить новый элемент в "динамический" массив


 
Джо ©   (2006-08-10 20:04) [33]

Гм. Поковырялся тут полчасика в примерах к J2ME, не так все сложно, оказывается. Extends MIDLet, имплементируешь CommandListener — и вперёд :) Зато нет этих идиотских ограничений синтаксиса как в MIDletPascal"е, красота! :о)


 
wl ©   (2006-08-10 20:19) [34]

>VirEx ©   (10.08.06 19:42) [31]
что за бредовый код?


 
wl ©   (2006-08-10 20:21) [35]

VirEx ©   (10.08.06 19:52) [32]
а это да, есть такое, но тут нужен как раз вектор.
а для изменения размерности массива можно создать новый и скопировать туда содержимое старого.
Видел в некоторых, так делают.


 
Piter ©   (2006-08-10 20:49) [36]

Джо ©   (09.08.06 20:55)

не, ну это же для телефонов? САМ ПОДУМАЙ - а ты хочешь сервиса как от современных компьютерных компиляторов. Не много ли ты хочешь? :)

Вот посмотри, человек пишет клиента для форума для J2ME, так там вроде даже не все посты выводятся - памяти мало!!! (хоть и не форматировано). Я боюсь, если реализуют все что ты хочешь - то твоя прога ни на одном телефоне не запустится :)


 
Джо ©   (2006-08-10 20:50) [37]

> - а ты хочешь сервиса как от современных компьютерных компиляторов.
> Не много ли ты хочешь? :)

Не много :) Вот компиляторы Джавы для мобильных не урезают же ее синтаксас.


 
Джо ©   (2006-08-10 20:51) [38]

А, в общем, посмотрел на все это дело и понял, что лучше, действительно, учить Джаву, а не пользоваться недоделками всякими :)


 
Lamer@fools.ua ©   (2006-08-10 22:40) [39]

>>Джо ©   (10.08.06 18:25) [23]

Могу выкачать чё-нить большое (в разумных пределах), если надо.
Я уже себе выкачивал Symbian SDK всякие, баловался со своим смартом :-)
Правда, до Жабы толком не добрался, на С/C++ примеры смотрел.


 
Джо ©   (2006-08-10 23:19) [40]

> [39] Lamer@fools.ua ©   (10.08.06 22:40)

Большое спасибо за предложение Если решу, что именно нужно выкачать из этого SDK (там немного запутанно), обязательно обращусь. В разумных пределах, разумеется :)


 
Джо ©   (2006-08-10 23:19) [41]

П.С. А какие у тебя уже SDK для Симбиана есть?


 
wl ©   (2006-08-10 23:54) [42]

после того как поставил sdk для PSP, перестали компилироваться приложения для симбиана (armi/thumb версии, для win32-эмуля нормально).

КАК С ЭТИМ БОРОТЬСЯ!?

удалял psp sdk, переустанавливал раз пять sdk(всякие версии) для симбы s60, и всё равно, при компиляции даже HelloWorld из примеров sdk получаю тысячи ошибок.


 
iZEN ©   (2006-08-10 23:55) [43]


> VirEx ©   (10.08.06 19:42) [31]
>
> >  [30] Суслик ©   (10.08.06 19:37)
> > так вроде
> >
> > int a[];
> > a = new int [10];
>
> это ерунда! мне надо так:
> int a[];
> int x = 5;
> a = new int [x];
> x = 10;
> b = new int [x];


Э...нет. Нужно объявить тип ссылочной переменной b:
int[] a, b;
int x = 5;
a = new int[x];
x = 10;
дальше так:
b = new int[x];
или
b = a;
но в последнем случае b ссылается на тот же самый массив, что и a.


 
Lamer@fools.ua ©   (2006-08-11 09:19) [44]

>>Джо ©   (10.08.06 23:19) [41]

>П.С. А какие у тебя уже SDK для Симбиана есть?
Nokia-Symbian-S60_JME_SDK_v2.1f_2_Installer.zip
NokiaDeveloperSuite(Symbian)-v1.1.exe
Symbian_S60_SDK-v1.2.zip
Symbian_S60_SDK_v2.1-dotNet.exe


 
Джо ©   (2006-08-11 13:13) [45]

> [44] Lamer@fools.ua ©   (11.08.06 09:19)

Определенно, нам нужно встретиться :)

А что из себя представляет Symbian_S60_SDK_v2.1-dotNet.exe?


 
[wl] ©   (2006-08-11 14:48) [46]

имеется в виду, что под него можно писать из VS.NET, это которая была до VS 2003, и сразу после VS 6.0 (2.1 - это кажется, Symbian 7 (nokia 3230 и прочие древние смарты), 1.2 - Symbian 6.1 (NGAGE/QD и Siemens SX1)).


 
VirEx ©   (2006-08-11 20:14) [47]


> [43] iZEN ©   (10.08.06 23:55)

всёравно динамических массивов в j2me несуществует в полном понимании этого слова.


> [36] Piter ©   (10.08.06 20:49)
> Джо ©   (09.08.06 20:55)
>
> не, ну это же для телефонов? САМ ПОДУМАЙ - а ты хочешь сервиса
> как от современных компьютерных компиляторов. Не много ли
> ты хочешь? :)
>
> Вот посмотри, человек пишет клиента для форума для J2ME,
> так там вроде даже не все посты выводятся - памяти мало!!!

> (хоть и не форматировано). Я боюсь, если реализуют все что
> ты хочешь - то твоя прога ни на одном телефоне не запустится
> :)

давно уже всё нормально выводит, и "форматированно" :) и памяти хватает!
а всё потому, что написано на j2me
http://winconsul.kladovka.net.ru/java/JDMClient2/JDMClient.jad


 
Джо ©   (2006-08-11 20:32) [48]

> [46] [wl] ©   (11.08.06 14:48)

Спасибо, понял.


> [47] VirEx ©   (11.08.06 20:14)
> давно уже всё нормально выводит, и "форматированно" :) и
> памяти хватает!

Не знаю как оно там "нормально" у кого работает, а у меня по-прежнему "ненормально", т.е, работать невозможно с программой совсем. Буковки выводятся ПО ОДНОЙ, с паузой в пол-секунды. И даже прервать к черту этот процесс нельзя никак. :(


 
Джо ©   (2006-08-11 20:33) [49]

Кстати, по-моему, при выходе программа не закрывает GPRS подключение. Иконка оного подключения продолжает быть активной после закрытия программы.


 
VirEx ©   (2006-08-11 20:41) [50]


>  [48] Джо ©   (11.08.06 20:32)
> > [46] [wl] ©   (11.08.06 14:48)
>
> Спасибо, понял.
>
>
> > [47] VirEx ©   (11.08.06 20:14)
> > давно уже всё нормально выводит, и "форматированно" :)
> и
> > памяти хватает!
>
> Не знаю как оно там "нормально" у кого работает, а у меня
> по-прежнему "ненормально", т.е, работать невозможно с программой
> совсем. Буковки выводятся ПО ОДНОЙ, с паузой в пол-секунды.
> И даже прервать к черту этот процесс нельзя никак. :(

ок, тогда запишу это в задания как:
-! опция: отображать содержимое после либо во время загрузки
(видимо баги стандартного gui, в будущем надеюсь всё "переделать" в canvas)


>  [49] Джо ©   (11.08.06 20:33)
> Кстати, по-моему, при выходе программа не закрывает GPRS
> подключение. Иконка оного подключения продолжает быть активной
> после закрытия программы.

она закрывает подключение после каждой операции с закачкой данных из инета
(видимо твой телефон не закрывает неиспользованное подключение при завершении работы мидлета)


 
iZEN ©   (2006-08-11 23:17) [51]


> Джо ©   (11.08.06 20:32) [48]
>
> > [46] [wl] ©   (11.08.06 14:48)
>
> Спасибо, понял.
>
>
> > [47] VirEx ©   (11.08.06 20:14)
> > давно уже всё нормально выводит, и "форматированно" :)
> и
> > памяти хватает!
>
> Не знаю как оно там "нормально" у кого работает, а у меня
> по-прежнему "ненормально", т.е, работать невозможно с программой
> совсем. Буковки выводятся ПО ОДНОЙ, с паузой в пол-секунды.
>  И даже прервать к черту этот процесс нельзя никак. :(
>

Буковки, говрите, по одной выводятся?
Может афтор использует простую конкатенацию строк, к одной строке сообщения по буковке прибавляет, когда загрузит? :)))
StringBuffer использовать, наверное, религия не позволяет?

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


 
Lamer@fools.ua ©   (2006-08-12 02:43) [52]

>>Джо ©   (11.08.06 13:13) [45]

>А что из себя представляет Symbian_S60_SDK_v2.1-dotNet.exe?
В двух... десятках :-) словах: набор всяких тулзов, которые позволяют конвертировать родные проекты на каком-то своём C/C++ под MSVS 2003, собирать и запускать под Win32-эмулятором DLL"и, полученные в Студии, компилить бинарники для целевой платформы и собирать пакеты установки (*.sis) для смартов.


 
Джо ©   (2006-08-12 02:45) [53]

> [52] Lamer@fools.ua ©   (12.08.06 02:43)

Ясненько, спасибо :)


 
VirEx ©   (2006-08-12 09:16) [54]


>  [51] iZEN ©   (11.08.06 23:17)
> Афтор сия чуда, дайте фрагмент кода, в котором формируется
> строка для отображения, посмотреть здесь.

пжалста:
сначало добавляем пустой объект StringItem для нового тэга (например < p >)
CurrentTagText=(StringItem)f.get(f.append(""));

Затем добавляем символ/байт к этому тексту
CurrentTagText.setText(CurrentTagText.getText()+(char)ch);


 
wl ©   (2006-08-12 11:00) [55]

Однако можно скачать не слишком толстую утилу Carbide.vs, она очень хорошо интегрирует разные Symbian SDK в визуал студию, даже IntelliSense работает.
---
что-то оффтоп уже в два потока льется...


 
Piter ©   (2006-08-12 13:41) [56]

VirEx ©   (11.08.06 20:41) [50]
она закрывает подключение после каждой операции с закачкой данных из инета


А ВОТ ЭТО СУПЕР ГЛУПО!!!

Парни, таких разработчиков убивать надо. Какой смысл закрывать GPRS? Когда мне надо будет - я сам закрою.

А проблема в том, что многие провайдеры округляют трафик в конце сессии!!!

В мегафоне вон округление вообще до 100 Кбайт! Получается, клиент грузанул 20 кбайт, закрыл соединение - с абонента списалось 100!
Отлично!!!

Парочка таких походов в форум - и баланс куда-то исчез.


 
Piter ©   (2006-08-12 13:42) [57]

GPRS вообще смысла не имеет отключать. В режиме покоя он вообще почти инчего не жрет (ну маленькие служебные пакеты) - ни трафика, ни энергии.


 
VirEx ©   (2006-08-12 14:03) [58]


>  [56] Piter ©   (12.08.06 13:41)
> VirEx ©   (11.08.06 20:41) [50]
> она закрывает подключение после каждой операции с закачкой
> данных из инета
>
> А ВОТ ЭТО СУПЕР ГЛУПО!!!
>
> Парни, таких разработчиков убивать надо. Какой смысл закрывать
> GPRS? Когда мне надо будет - я сам закрою.
>
> А проблема в том, что многие провайдеры округляют трафик
> в конце сессии!!!
>
> В мегафоне вон округление вообще до 100 Кбайт! Получается,
> клиент грузанул 20 кбайт, закрыл соединение - с абонента
> списалось 100!
> Отлично!!!
>
> Парочка таких походов в форум - и баланс куда-то исчез.

так, поосторожней со словами.
я использую стандартное соединение как описано в хелпе

Example using HttpConnection

Read the HTTP headers and the data using HttpConnection.

Connector.open is used to open url and a HttpConnection is returned. The HTTP headers are read and processed. If the length is available, it is used to read the data in bulk. From the HttpConnection the InputStream is opened. It is used to read every character until end of file (-1). If an exception is thrown the connection and stream are closed.

    void getViaHttpConnection(String url) throws IOException {
        HttpConnection c = null;
        InputStream is = null;
        int rc;

        try {
            c = (HttpConnection)Connector.open(url);

            // Getting the response code will open the connection,
            // send the request, and read the HTTP response headers.
            // The headers are stored until requested.
            rc = c.getResponseCode();
            if (rc != HttpConnection.HTTP_OK) {
                throw new IOException("HTTP response code: " + rc);
            }

            is = c.openInputStream();

            // Get the ContentType
            String type = c.getType();

            // Get the length and process the data
            int len = (int)c.getLength();
            if (len > 0) {
                int actual = 0;
                int bytesread = 0 ;
                byte[] data = new byte[len];
                while ((bytesread != len) && (actual != -1)) {
                   actual = is.read(data, bytesread, len - bytesread);
                   bytesread += actual;
                }
            } else {
                int ch;
                while ((ch = is.read()) != -1) {
                    ...
                }
            }
        } catch (ClassCastException e) {
            throw new IllegalArgumentException("Not an HTTP URL");
        } finally {
            if (is != null)
                is.close();
            if (c != null)
                c.close();
        }
    }



 
Piter ©   (2006-08-12 14:36) [59]

VirEx ©   (12.08.06 14:03) [58]

я не разбираюсь в сабже!!! Но есть проги, которые при каждом коннекте устанавливают GPRS, а в конце  разрывают!
Так вот это - ОООЧЕНЬ плохо.


 
Anatoly Podgoretsky ©   (2006-08-12 15:05) [60]

Piter ©   (12.08.06 13:41) [56]
Парни, таких разработчиков убивать надо.

Но только совместно с провайдерами, или по крайней мере провайдеров убивать.


 
Piter ©   (2006-08-12 17:19) [61]

Anatoly Podgoretsky ©   (12.08.06 15:05) [60]
Но только совместно с провайдерами, или по крайней мере провайдеров убивать


провайдеры то тут причем?!?! Вы хотите сказать, что со стороны провайдера идет разрыва GPRS-соединения?!


 
DiamondShark ©   (2006-08-12 17:22) [62]

Со стороны провайдера идёт кидалово.
Считать траф с точностью до байта ничуть технически не сложнее "округления".


 
Piter ©   (2006-08-12 19:55) [63]

DiamondShark ©   (12.08.06 17:22) [62]

естественно! Тоже самое, что считать посекундно с начала разговора, а не с первой минуты или вообще поминутно...

Но это не повод разрывать GPRS-соединение...


 
iZEN ©   (2006-08-14 09:09) [64]


> VirEx ©   (12.08.06 14:03) [58]
> >  [56] Piter ©   (12.08.06 13:41)
> > VirEx ©   (11.08.06 20:41) [50]
> > она закрывает подключение после каждой операции с закачкой
> > данных из инета
> >
> > А ВОТ ЭТО СУПЕР ГЛУПО!!!
> >
> > Парни, таких разработчиков убивать надо. Какой смысл закрывать
> > GPRS? Когда мне надо будет - я сам закрою.
<...>
> > Парочка таких походов в форум - и баланс куда-то исчез.
>
> так, поосторожней со словами.
> я использую стандартное соединение как описано в хелпе
>
> Example using HttpConnection
>
> Read the HTTP headers and the data using HttpConnection.
>
> Connector.open is used to open url and a HttpConnection
> is returned.
<...>
>     void getViaHttpConnection(String url) throws IOException
> {
>         HttpConnection c = null;
>         InputStream is = null;
>         int rc;
>
>         try {
>             c = (HttpConnection)Connector.open(url);
>

Зачем так ГЛУПО копировать примеры?
Нужно сделать HttpConnection c членом класса, открывать соединение по необходимости и держать соединение открытым как можно дольше.
Алгоритм может быть таким:

   private HttpConnection connection;
   private InputStream is;
   void getViaHttpConnection(String url) throws IOException {
       boolean badConnection = false;//надеемся, что соединение не потеряно
       int rc;
       try {
           rc = connection.getResponseCode();
           if (rc != HttpConnection.HTTP_OK) { throw new IOException(
                   "HTTP response code: " + rc); }
           is = connection.openInputStream();
       } catch (IOException ioex) {
           badConnection = true;//соединение потеряно
       }
       if (badConnection == true) {
           connection = (HttpConnection)Connector.open(url);
           rc = connection.getResponseCode();
           if (rc != HttpConnection.HTTP_OK) { throw new IOException(
                   "HTTP response code: " + rc); }
           is = connection.openInputStream();
           //...другие действия с новым соединением
           //...
           //НЕ ЗАКРЫВАЕМ ПОТОК
           //НЕ ЗАКРЫВАЕМ СОЕДИНЕНИЕ
       }
   }

Пример можно отрефакторить, это просто пример на скорую руку.

Разве трудно было сделать так же?


 
iZEN ©   (2006-08-14 09:14) [65]

Скобка не в том месте, Исправляю:

    if (badConnection == true) {
          connection = (HttpConnection)Connector.open(url);
          rc = connection.getResponseCode();
          if (rc != HttpConnection.HTTP_OK) { throw new IOException(
                  "HTTP response code: " + rc); }
          is = connection.openInputStream();
     }//конец проверки здесь
     //...другие действия с новым соединением
     //...
     //НЕ ЗАКРЫВАЕМ ПОТОК
     //НЕ ЗАКРЫВАЕМ СОЕДИНЕНИЕ
}//конец метода


 
iZEN ©   (2006-08-14 09:18) [66]


> VirEx ©   (12.08.06 09:16) [54]
>
> >  [51] iZEN ©   (11.08.06 23:17)
> > Афтор сия чуда, дайте фрагмент кода, в котором формируется
> > строка для отображения, посмотреть здесь.
>
> пжалста:
> сначало добавляем пустой объект StringItem для нового тэга
> (например < p >)
> CurrentTagText=(StringItem)f.get(f.append(""));
>
> Затем добавляем символ/байт к этому тексту
> CurrentTagText.setText(CurrentTagText.getText()+(char)ch);

Если f — это StringBuffer, то я не вижу, что он делает реально эффективно. По-моему, его функция сводится к банальному: string = string + char;
И зачем здесь он тогда?

Так что тема не раскрыта. Исправляйте.



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.66 MB
Время: 0.043 c
2-1155801843
ZX48
2006-08-17 12:04
2006.09.10
ping


11-1132397786
Separator
2005-11-19 13:56
2006.09.10
Версии


2-1156214930
Ref
2006-08-22 06:48
2006.09.10
Отчет


15-1155803907
ArtemESC
2006-08-17 12:38
2006.09.10
Запись в MBR


2-1155977548
911911
2006-08-19 12:52
2006.09.10
Прорисовка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский