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=14582)

PassCall 13.04.2011 17:57

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

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

_______________________________________________
Описание: Сокращает 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;

Может вспомню/придумаю что нибудь ещё.
Успехов всем!

BARON 18.04.2011 06:55

Ответ: Полезные функции и процедуры
 
function kill_float(a:real):integer; - для этого есть trunc()

PassCall 18.04.2011 10:47

Ответ: Полезные функции и процедуры
 
Цитата:

Сообщение от BARON (Сообщение 186245)
function kill_float(a:real):integer; - для этого есть trunc()

Trunc не отбрасывает, а округляет

Пример:

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

Trunc(5.75)=6

Есть ли разница между 5 и 6?

BARON 18.04.2011 23:06

Ответ: Полезные функции и процедуры
 
М-да. В Паскале round() округляет. А trunc() отбрасывает.

PassCall 19.04.2011 11:53

Ответ: Полезные функции и процедуры
 
Цитата:

Сообщение от BARON (Сообщение 186302)
М-да. В Паскале round() округляет. А trunc() отбрасывает.

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

AVL 19.04.2011 14:05

Ответ: Полезные функции и процедуры
 
Функция для работы с софтами, сразу для всех телефонов и для сенсоров:
Код:

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;


PassCall 19.04.2011 21:42

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

AVL 19.04.2011 22:11

Ответ: Полезные функции и процедуры
 
Может быть и много, но зато должно работать на всех телефонах и на всех экранах.

PassCall 20.04.2011 11:49

Ответ: Полезные функции и процедуры
 
Было бы прекрасно, если бы этот код был скомпилирован в java (lib_)
Ну или засунуть все это добро в unit =)
Будет красиво.:-D

AVL 20.04.2011 17:25

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


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

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