вівторок, 7 вересня 2010 р.

Універсальна функція для перетворення числових даних

procedure peretv (s: string; var ch: real);
var s1,s2,s3,s4,s5:string;
n1, n11,n2,n12, ch1, step: real;
i, koma, power, kod: integer;
Edit1: TEdit;
begin
ch1:=0; ch:=0; n11:=0; n12:=0;
s1:='';s3:='';s4:='';s5:='';s2:='';
Edit1.Text:=chr(45);
power:=0;
kod:=0;
val (s,ch, kod);
if kod<>0 then begin
for i:=1 to length(s) do
begin
if (s[i]=chr(69)) or (s[i]=chr(101)) or (s[i]=chr(229)) or (s[i]=chr(197)) or (s[i]=chr(1045))
then power:=i;
end;
if power=0 then begin
i:=1;
s1:='';
s2:='';
repeat
s1:=s1+s[i];
i:=i+1;
until (s[i]=',') or (s[i]='.') or (i=length(s));
koma:=i; s2:=copy(s,koma+1,length(s)-koma); val(s1,n1,kod); val(s2,n2,kod);
for i:=1 to length(s2)do n2:=n2/10;
ch:=n1+n2;
end;
if power<>0 then
begin
s3:=copy(s,1,(power-1));
kod:=0;
val (s3, ch1, kod);
if kod<>0 then begin
i:=1;
s1:='';
s2:='';
repeat
s1:=s1+s3[i];
i:=i+1;
until (s3[i]=',') or (s3[i]='.') or (i=length(s3));
koma:=i; s2:=copy(s3,koma+1,length(s3)-koma); val(s1,n1,kod); val(s2,n2,kod);
for i:=1 to length(s2)do n2:=n2/10;
ch1:=n1+n2;
end;
s4:=copy(s,(power+1),length(s)-power);

if (s4[1]=chr(45))
then
begin
kod:=0;
s5:=copy(s4,2,length(s4)-1);
val(s5, step, kod);
if kod<>0
then begin
s1:='';s2:='';
i:=1;
repeat
s1:=s1+s5[i];
i:=i+1;
until (s5[i]=',') or (s5[i]='.') or (i=length(s5));
koma:=i; s2:=copy(s5,koma+1,length(s5)-koma); val(s1,n11,kod); val(s2,n12,kod);
for i:=1 to length(s2)do n12:=n12/10;
step:=n11+n12;
end;
ch1:=exp((-step*ln(ch1)))
end;
if (s4[1]='+') or (s4[1]='1') or (s4[1]='2') or (s4[1]='3') or (s4[1]='5') or (s4[1]='6') or (s4[1]='7') or (s4[1]='8') or (s4[1]='9') or (s4[1]='0')
then
begin
if s4[1]='+'
then s4:=copy(s4,2,length(s4)-1);
val(s4, step, kod);
if kod<>0
then begin
s1:='';s2:='';
i:=1;
repeat
s1:=s1+s4[i];
i:=i+1;
until (s4[i]=',') or (s4[i]='.') or (i=length(s4));
koma:=i; s2:=copy(s4,koma+1,length(s4)-koma); val(s1,n11,kod); val(s2,n12,kod);
for i:=1 to length(s2)do n12:=n12/10;
step:=n11+n12;
end;
ch1:=exp(step*ln(ch1));
end;
ch:=ch1;
end;
end;
end;