Показать сообщение отдельно
Старый 15.12.2005, 21:06   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ну вроде написал функции преобразования типа 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)
 
Ответить с цитированием