Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.02.25;
Скачать: [xml.tar.bz2];

Вниз

комиляция числовых выражений   Найти похожие ветки 

 
mrcat   (2002-02-07 18:51) [0]

Привет уважаемый All!
У меня такой вопрос есть ли компонент для Delphi, который позволяет переводить числовые значения в скомпилированное текстовое выражение. Например, имеем 12345, а на выходе "Двенадцать тысяч триста сорок пять".

Заранее спасибо.


 
EAlexander   (2002-02-07 18:53) [1]

есть, даже в кладовке я вроде видел.


 
Фэ   (2002-02-07 20:20) [2]

Можно даже произнести это через звуковую плату.


 
Nikolay   (2002-02-07 21:35) [3]

из фака
unit sumstr;

interface
uses
SysUtils, StrUtils;

function SumToString(Value : String) : string;

implementation
const a:array[0..8,0..9] of string=(
("","один ","два ","три ","четыре ","пять ","шесть ","семь ","восемь ","девять "),
("","","двадцать ","тридцать ","сорок ","пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто "),
("","сто ","двести ","триста ","четыреста ","пятьсот ","шестьсот ","семьсот ","восемьсот ","девятьсот "),
("тысяч ","тысяча ","две тысячи ","три тысячи ","четыре тысячи ","пять тысячь ","шесть тысячь ","семь тысячь ",
"восемь тысячь ","девять тысячь "),
("","","двадцать ","тридцать ","сорок ","пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто "),
("","сто ","двести ","триста ","четыреста ","пятьсот ","шестьсот ","семьсот ","восемьсот ","девятьсот "),
("миллионов ","один миллион ","два миллиона ","три миллиона ","четыре миллиона ","пять миллионов ",
"шесть миллионов ","семь миллионов ","восемь миллионов ","девять миллионов "),
("","","двадцать ","тридцать ","сорок ","пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто "),
("","сто ","двести ","триста ","четыреста ","пятьсот ","шестьсот ","семьсот ","восемьсот ","девятьсот "));
b:array[0..9] of string=
("десять ","одинадцать ","двенадцать ","тринадцать ","четырнадцать ","пятьнадцать ","шестьнадцать ",
"семьнадцать ","восемьнадцать ","девятьнадцать ");
function SumToStrin(Value : String) : string;
var s,t:string;
p,pp,i,k:integer;
begin
s:=value;
if s="0" then t:="Ноль " else begin
p:=length(s);
pp:=p;
if p>1 then
if (s[p-1]="1") and (s[p]>"0") then begin
t:=b[strtoint(s[p])];pp:=pp-2;end;
i:=pp;
while i>0 do begin
if (i=p-3) and (p>4) then
if s[p-4]="1" then begin
t:=b[strtoint(s[p-3])]+"тысяч "+t;i:=i-2;end;
if (i=p-6) and (p>7) then
if s[p-7]="1" then begin
t:=b[strtoint(s[p-6])]+"миллионов "+t;
i:=i-2;end;
if i>0 then begin k:=strtoint(s[i]);
t:=a[p-i,k]+t;
i:=i-1;end;
end;end;
result:=t;
end;
procedure get2str(value:string;var hi,lo:string);
var p:integer;
begin
p:=pos(",",value);
lo:="";hi:="";
if p=0 then p:=pos(".",value);
if p0 then delete(value,p,1);
if p=0 then begin hi:=value;lo:="00";end;
if p>length(value) then begin hi:=value;lo:="00";end;
if p=1 then begin hi:="0";lo:=value;end;
if (p>1) and (pthen
begin
hi:=copy(value,1,p-1);
lo:=copy(value,p,length(value));
end;
end;

function sumtostring(value:string):string;
var hi,lo:string;
pr,er:integer;
begin
get2str(value,hi,lo);
if (hi="") or (lo="") then begin result:="";exit;end;
val(hi,pr,er);if er0 then begin result:="";exit;end;
hi:=sumtostrin(inttostr(pr))+"руб. ";
if lo"00" then begin
val(lo,pr,er);if er0 then begin result:="";exit;end;
lo:=inttostr(pr);
end;
lo:=lo+" коп. ";
hi[1]:=AnsiUpperCase(hi[1])[1];
result:=hi+lo;
end;
end.


 
mrcat   (2002-02-08 13:25) [4]

Спасибо Nikolay ©!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.02.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
1-79338
ЕвгенийА
2002-02-08 01:20
2002.02.25
Вопрос по формам...


6-79403
Andrey_P
2001-12-04 13:23
2002.02.25
MAC Адрес


1-79324
vinni2000
2002-02-07 10:15
2002.02.25
Есть вопрос!!!


3-79263
serjant
2002-01-30 09:32
2002.02.25
не удаляются записи из базы


14-79443
Алекс
2002-01-07 18:13
2002.02.25
Вопль отчаяния





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский