Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 13.04.2011, 17:57   #1
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Сообщение Полезные функции и процедуры

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

Чтобы не тянуть кота за ус,я сам напишу парочку полезных процедур/функций.

_______________________________________________
Описание: Сокращает integertostring до более гуманного its;
function its(a:integer):string;
begin
its:=integertostring(a);
end;
Пример: Drawtext(its(100500),0,0);


__________________________________________________
Описание: Аналогично предыдущей, только наоборот;
function sti(a:string):integer;
begin
sti:=stringtointeger(a);
end;
пример: stopicot:=sti('100'+'500');



__________________________________________________
Описание: Позволяет читать из ресурсов РУССКИЕ символы
Function Decoder(Deco:string):string;
var
ch:char;
temp_s:string;
i,temp:integer;
begin
temp_s:='';
	for i:=1 to length(Deco) do
	begin
		ch:=getchar(deco,(i-1));
		temp:=ord(ch);
		if temp>122 then temp_s:=temp_s+chr(temp+1104);
		else
		temp_s:=temp_s+getchar(deco,i-1);
	end;
decoder:=temp_s;
end;
Таким образом можно читать из ресурсов целые тексты на русском языке не используя лишние библиотеки.
Юзайте на здоровье



____________________________________________
Описание: Отбрасывает от числа дробную часть (было 1.93 станет 1) без лишнего геморроя утруждения

function kill_float(a:real):integer;
var
temp_real:real;
begin
temp_real:=a;
temp_real:=temp_real-frac(temp_real);
kill_float:=trunc(temp_real);
end;


__________________________________________________
Описание: Заливает экран указанным цветом

Procedure zaliv(r,g,b:integer);
begin
setcolor (r,g,b);
fillrect(0,0,GetWidth-1,GetHeight-1);
end;
Пример: zaliv(255,255,128 );

__________________________________________________
Описание: Возвращает проекцию вектора на ось x при определенном угле. (аналог Sin(angle)*length)
Учтен перевод в радианы!

function coeff_x(ang:real,len:real):real;
var
temp_real:real;
begin
temp_real:=sin(ang*3.141/180.0)*len;
coeff_x:=temp_real;
end;



__________________________________________________
Описание: Возвращает проекцию вектора на ось y при определенном угле. (аналог Cos(angle)*length)
Учтен перевод в радианы!

function coeff_y(ang:real,len:real):real;
var
temp_real:real;
begin
temp_real:=cos(ang*3.141/180.0)*len;
coeff_y:=temp_real;
end;
Может вспомню/придумаю что нибудь ещё.
Успехов всем!
(Offline)
 
Ответить с цитированием
Старый 18.04.2011, 06:55   #2
BARON
Оператор ЭВМ
 
Аватар для BARON
 
Регистрация: 17.04.2011
Сообщений: 20
Написано одно полезное сообщение
Ответ: Полезные функции и процедуры

function kill_float(a:real):integer; - для этого есть trunc()
(Offline)
 
Ответить с цитированием
Старый 18.04.2011, 10:47   #3
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Сообщение Ответ: Полезные функции и процедуры

Сообщение от BARON Посмотреть сообщение
function kill_float(a:real):integer; - для этого есть trunc()
Trunc не отбрасывает, а округляет

Пример:

5.75-Frac(5.75)=5.75-0.75=5

Trunc(5.75)=6

Есть ли разница между 5 и 6?
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Старый 18.04.2011, 23:06   #4
BARON
Оператор ЭВМ
 
Аватар для BARON
 
Регистрация: 17.04.2011
Сообщений: 20
Написано одно полезное сообщение
Ответ: Полезные функции и процедуры

М-да. В Паскале round() округляет. А trunc() отбрасывает.
(Offline)
 
Ответить с цитированием
Старый 19.04.2011, 11:53   #5
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Лампочка Ответ: Полезные функции и процедуры

Сообщение от BARON Посмотреть сообщение
М-да. В Паскале round() округляет. А trunc() отбрасывает.
Это не паскаль, а МидлетПаскаль. Разница есть? И trunc округляет, а round'а в МП вообще нет. (В русский хелп не смотри, там неправильно написано).
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Старый 19.04.2011, 14:05   #6
AVL
Разработчик
 
Регистрация: 27.01.2011
Адрес: Афипский
Сообщений: 419
Написано 100 полезных сообщений
(для 182 пользователей)
Ответ: Полезные функции и процедуры

Функция для работы с софтами, сразу для всех телефонов и для сенсоров:
function softkey(key,draw:boolean;text:string;):boolean;//true - левый, false - правый
var
 x,y,kw,kh:integer;
 xp,yp:integer;
 k,v1,v2,v3:integer;
 w,h:integer;
begin
 w:=getwidth;h:=getheight;
 kh:=h div 10;
 y:=h-kh;
 kw:=w div 2;
 if key then begin
  x:=0;
  v1:=-1;v2:=-6;v3:=21;
 end
 else begin
  x:=w div 2;
  v1:=-4;v2:=-7;v3:=22;
 end;
 k:=getkeypressed;
 xp:=pointer_pressed_x;
 yp:=pointer_pressed_y;
 softkey:=((pointer_state=1) and (xp>x) and (xp<x+kw) and (yp>y) and (yp<y+kh)) OR (k=v1) or (k=v2) or (k=v3);
 if draw then begin
  drawrect(x,y,kw,kh);
  drawtext(text,x+(kw-getstringwidth(text)) div 2,y+(kh-getstringheight(text))div 2);
  repaint;
 end;
end;
(Offline)
 
Ответить с цитированием
Старый 19.04.2011, 21:42   #7
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Ответ: Полезные функции и процедуры

О, AVL, молодец, полезная штука.
Только много буков =)
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Старый 19.04.2011, 22:11   #8
AVL
Разработчик
 
Регистрация: 27.01.2011
Адрес: Афипский
Сообщений: 419
Написано 100 полезных сообщений
(для 182 пользователей)
Ответ: Полезные функции и процедуры

Может быть и много, но зато должно работать на всех телефонах и на всех экранах.
(Offline)
 
Ответить с цитированием
Старый 20.04.2011, 11:49   #9
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Радость Ответ: Полезные функции и процедуры

Было бы прекрасно, если бы этот код был скомпилирован в java (lib_)
Ну или засунуть все это добро в unit =)
Будет красиво.
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Старый 20.04.2011, 17:25   #10
AVL
Разработчик
 
Регистрация: 27.01.2011
Адрес: Афипский
Сообщений: 419
Написано 100 полезных сообщений
(для 182 пользователей)
Ответ: Полезные функции и процедуры

Не думаю что стоит это добавлять в библиотеку, т.к. в разных случаях возможно понадобится изменить некоторые параметры (размер кнопки, заменить pointer_pressed на pointer_released и т.д.), здесь это легко, а в либе уже никак.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com