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

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

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

FAQ Часто задаваемые вопросы

Ответ
 
Опции темы
Старый 14.12.2005, 19:41   #1
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,499
Написано 2,955 полезных сообщений
(для 5,220 пользователей)
Вот пара функций, как напишу еще обязательно сюда пришлю.

1. Функция заменяющая в строке Str символы Chr1 на симвлолы Chr2
Function Repl(Str:String;Chr1,Chr2:Char):String;
var i:integer;
Begin
	For i:=0 to Length(Str)-1 do
 *If GetChar(str,i)=Chr1 then Str:=SetChar(str,Chr2,i)
 *Repl:=Str;
End;
2. Функция возвращающая строку длинной Num из символов Chr
Function CreateCharStr(Chr:Char;Num:integer):String;
var i:integer;
 *s:string;
Begin
	S:='';
	For i:=1 to Num do
 *S:=S+Chr;
 *CreateCharStr:=S;
End;
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 14.12.2005, 19:42   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,499
Написано 2,955 полезных сообщений
(для 5,220 пользователей)
Вот две функции возвращающие знак числа:

Function ISgn(Val:Integer):Integer;
Begin
	if val=0 then ISgn:=1 else
 ISgn:=Val/Abs(Val);
End;
Function RSgn(Val:Real):Real;
Begin
	if val=0 then RSgn:=1 else
 RSgn:=Val/RAbs(Val);
End;
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 15.12.2005, 18:06   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,499
Написано 2,955 полезных сообщений
(для 5,220 пользователей)
Ну вроде написал функции преобразования типа Real в тип String и обратно .
Правда работают немного не точно даж не знаю почему... если найдете ошибку, то исправьте пожалуйста.

1. Эта для того чтобы была
Function IntToReal(Val:Integer):Real;
Begin
	IntToReal:=Val;
End;
2. X в положительной целочисленной степени
Function XStepY(X:Real;Y:Integer):Real;
var i:integer;
 s:Real;
Begin
s:=1;
	If Y>0 then 
 for i:=1 to Y do s:=s*x
	else 
 If Y=0 then 
 	S:=1
 else 
   for i:=-1 downto Y do S:=S/X;
	
	XStepY:=S;
End;
3. X в целочисленной степени
Function XStepY(X:Real;Y:Integer):Real;
var i,s:integer;
Begin
s:=1;
	If Y>0 then 
 *for i:=1 to Y do s:=s*x
	else 
 *If Y=0 then 
 *	s:=1
 *else 
 * * for i:=-1 downto Y do s:=s/x;;
	
	XStepY:=s;
End;
4. Вещественное число в строку
Function RealToString(Val:Real):String;
Var I,N:Integer;
	A,B:real;
	S,Sgn:string;
Begin
	S:='';

	If Val>0 then 
 Sgn:=''
 else 
 Begin
 	Sgn:='-';
 	Val:=-Val;
 End;

	A := Val-Frac(Val);
	B := Val-A;
	
	S:=Sgn + IntegerToString(Trunc(A))+ '.';

	For I:=1 to 5 do
 Begin
 	A:=B*XStepPY(10,I);
 	A:=A-Frac(A);
 	S:=S+IntegerToString(Trunc(A));
 	A:=A/XStepPY(10,I);
 	B:=B-A;
 end;
	
	RealToString:=S;
end;
5. Строку в вещественное число
Function String2Real(Val:String):Real;
Var P,i,Sgn,C:Integer;
 *A,B:real;
 *S,S1:string;
Begin
	A:=0;B:=0;	C:=0;
	S:=Repl(Val,',','.');
	P:=Pos(S,'.');
	
	if (GetChar(S,0)<>'-') then Sgn:=1 else Begin	Sgn:=-1;	C:=1;	end;
	
	If P>=0 Then
 *Begin
 *	S1:=Copy(S,C,P);
 *	for i:=Length(S1) downto 0 do
 * *A:=A+StringToInteger(GetChar(S1,I))*IntToReal(XStepPY(10,Length(S1)-I-1));
 *	
 *	S1:=Copy(S,P+1,Length(S));
 *	for i:=0 to Length(S1) do
 * *B:=B+StringToInteger(GetChar(S1,I))/IntToReal(XStepPY(10,I+1));
 *	String2Real:=(A+B)*Sgn;
 *End
	else
 *Begin
 *	S1:=Copy(S,C,Length(S));
 *	for i:=Length(S1) downto 0 do
 * *A:=A+StringToInteger(GetChar(S1,I))*IntToReal(XStepPY(10,Length(S1)-I-1));
 *	String2Real:=A*Sgn;
 *End;
end;
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 15.12.2005, 18:31   #4
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,499
Написано 2,955 полезных сообщений
(для 5,220 пользователей)
Положительный X в любой степени

Function RXStepY(X:Real;Y:Real):Real;
var s:Real;
Begin
	If X<0 then 
 S:=-1
	else 
 If X=0 then 
 	S:=1
 else 
   S:=exp(Y*log(X));
	
	RXStepY:=S;
End;
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 15.12.2005, 23:23   #5
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,406
Написано 300 полезных сообщений
(для 985 пользователей)
видать не получится сделать строку в вещественное число, и все из-за неточности вычислений паскаля...

вот накидал тут прогу:

program fff;

var str:string;
     i:integer;


function s2r(sval:string):real;

var p:integer;
i,svall:integer;
s,s1,ind:real;

begin

 p:=pos(sval,'.');
 s:=0;
 ind:=1;
 svall:=length(sval);
 
 for i:=0 to p do begin
 s:=s+StringToInteger(GetChar(sval,p-i-1))*ind;
 ind:=ind*10;
 end;
 
 ind:=10;
 for i:=p+1 to svall do begin
 s:=s+StringToInteger(GetChar(sval,i))/ind;
 ind:=ind*10;
 end;
 
 
 
 s2r:=s;

end;


begin
        str:='564.36';
        SetColor(255, 255, 255); 
        FillRect(0, 0, GetWidth, GetHeight);
        SetColor(0, 0, 0); 
        drawText('Source: '+str, 0, 0);
        drawText('Target: '+S2R(str), 0, 20);
        repaint;   
        delay(50000);
end.
и что ты думаешь? вот ставлю последнюю 6, результат идет 59... ставлю 5, идет 49...

__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 16.12.2005, 07:56   #6
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,499
Написано 2,955 полезных сообщений
(для 5,220 пользователей)
и что ты думаешь? вот ставлю последнюю 6, результат идет 59... ставлю 5, идет 49...
Вот и я не знаю...

А вот эта строчка меня заинтересовала...
drawText('Target: '+S2R(str), 0, 20);
тоесть получается, что не надо было писать функцию преобразования RealToString...

А я старался
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 16.12.2005, 08:14   #7
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,499
Написано 2,955 полезных сообщений
(для 5,220 пользователей)
И еще, когда я делал свою фунцию, то столкнулся с проблемой: если передать в функцию целое число, то все вычисления будут неверными... надо бы в твоей такую проверку сделать... и еще надо сделать проверку на отрицательные числа... т.к. паскаль в функции StringToInteger(GetChar(sval,p-i-1))*ind при первом минусе вернет 0...

вот пока такие рассуждения
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 17.12.2005, 06:22   #8
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,499
Написано 2,955 полезных сообщений
(для 5,220 пользователей)
Короче выход такой... надо (мне по крайней мере) достать Java SDK и писать расширение на чистой яве и подключать к паскалю как модуль... другого выхода я пока не вижу... может на яве будет правильно работать...

PS: скачать с нета 50 метров думаю крутовато будет... хотя посмотрим...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 17.12.2005, 13:23   #9
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,406
Написано 300 полезных сообщений
(для 985 пользователей)
да, решение видишь правильное, но только к 50 метрам SDK тебе еще надо будет среду программирования гденить скачать...
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 17.12.2005, 14:20   #10
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,499
Написано 2,955 полезных сообщений
(для 5,220 пользователей)
Ну редактор есть в VS.Net 2003, а компилить буду через коммандную строку... как это описано в справке по мидлетпаскалю...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 17.12.2005, 14:34   #11
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,406
Написано 300 полезных сообщений
(для 985 пользователей)
если будешь писать либы, то цены тебе не будет!
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 17.12.2005, 14:44   #12
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,499
Написано 2,955 полезных сообщений
(для 5,220 пользователей)
Originally posted by SubZer0@Dec 17 2005, 05:34 PM
если будешь писать либы, то цены тебе не будет!
Да, но 50 метров...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 17.12.2005, 15:02   #13
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,406
Написано 300 полезных сообщений
(для 985 пользователей)
Originally posted by PAX@Dec 17 2005, 04:44 PM
Да, но 50 метров...
а что? всего 5 минут закачки...


ЗЫ флуд вообщето в FAQ мастдай... я потом все это почищу...
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 17.12.2005, 16:15   #14
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,499
Написано 2,955 полезных сообщений
(для 5,220 пользователей)
Стирай стирай, потом в аське поболтаем
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 31.03.2006, 14:28   #15
[Sp]
AnyKey`щик
 
Регистрация: 30.03.2006
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Originally posted by PAX@15.12.2005, 18:06
Ну вроде написал функции преобразования типа Real в тип String и обратно .
Правда работают немного не точно даж не знаю почему... если найдете ошибку, то исправьте пожалуйста.

1. Эта для того чтобы была
Function IntToReal(Val:Integer):Real;
Begin
	IntToReal:=Val;
End;
2. X в положительной целочисленной степени
Function XStepY(X:Real;Y:Integer):Real;
var i:integer;
 s:Real;
Begin
s:=1;
	If Y>0 then 
 for i:=1 to Y do s:=s*x
	else 
 If Y=0 then 
 	S:=1
 else 
   for i:=-1 downto Y do S:=S/X;
	
	XStepY:=S;
End;
3. X в целочисленной степени
Function XStepY(X:Real;Y:Integer):Real;
var i,s:integer;
Begin
s:=1;
	If Y>0 then 
 for i:=1 to Y do s:=s*x
	else 
 If Y=0 then 
 	s:=1
 else 
   for i:=-1 downto Y do s:=s/x;;
	
	XStepY:=s;
End;
4. Вещественное число в строку
Function RealToString(Val:Real):String;
Var I,N:Integer;
	A,B:real;
	S,Sgn:string;
Begin
	S:='';

	If Val>0 then 
 Sgn:=''
 else 
 Begin
 	Sgn:='-';
 	Val:=-Val;
 End;

	A := Val-Frac(Val);
	B := Val-A;
	
	S:=Sgn + IntegerToString(Trunc(A))+ '.';

	For I:=1 to 5 do
 Begin
 	A:=B*XStepPY(10,I);
 	A:=A-Frac(A);
 	S:=S+IntegerToString(Trunc(A));
 	A:=A/XStepPY(10,I);
 	B:=B-A;
 end;
	
	RealToString:=S;
end;
5. Строку в вещественное число
Function String2Real(Val:String):Real;
Var P,i,Sgn,C:Integer;
 A,B:real;
 S,S1:string;
Begin
	A:=0;B:=0;	C:=0;
	S:=Repl(Val,',','.');
	P:=Pos(S,'.');
	
	if (GetChar(S,0)<>'-') then Sgn:=1 else Begin	Sgn:=-1;	C:=1;	end;
	
	If P>=0 Then
 Begin
 	S1:=Copy(S,C,P);
 	for i:=Length(S1) downto 0 do
  A:=A+StringToInteger(GetChar(S1,I))*IntToReal(XStepPY(10,Length(S1)-I-1));
 	
 	S1:=Copy(S,P+1,Length(S));
 	for i:=0 to Length(S1) do
  B:=B+StringToInteger(GetChar(S1,I))/IntToReal(XStepPY(10,I+1));
 	String2Real:=(A+B)*Sgn;
 End
	else
 Begin
 	S1:=Copy(S,C,Length(S));
 	for i:=Length(S1) downto 0 do
  A:=A+StringToInteger(GetChar(S1,I))*IntToReal(XStepPY(10,Length(S1)-I-1));
 	String2Real:=A*Sgn;
 End;
end;

Функция преобразования из real в string не работает, нужна функция B*XStepPY.
Дадите?)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Полезные ссылки по PureBASIC'у. Chrono Syndrome PureBasic 12 04.11.2011 13:33
Некоторые полезные функции Данил FAQ и уроки 1 26.10.2007 07:40
Полезные функции: Работа с Углами, Отрезками, Окружностями (Физика) moka 2D-программирование 0 12.06.2007 17:01
Полезные процедуры и функции к MP (СЮДА КИДАЕМ) Kurdt Основной форум 3 28.03.2007 20:26
полезные советы jimon Болтовня 28 23.11.2005 18:31


Часовой пояс GMT +1, время: 08:51.


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