davoodmz
پنج شنبه 18 اسفند 1384, 12:08 عصر
با سلام
من فانش تبدیل عدد به حروف را گیر آوردم به صورت زیر
لطفاً راهنمایی کنید جطوری در یک مثلا edit1 استفاده کنم و تابع را فراخوانی کنم
کدش را لطفاً بگوئید.
باتشکر
داود
nterface
function Number2Str(Nm: string): string;
implementation
uses SysUtils;
function Number2Str;
const
Main: array[1..3,0..9]of string = (('', 'íßÕÏ æ', 'ÏæíÓÊ æ', 'ÓíÕÏ æ', 'åÇÑÕÏ æ', 'ÇäÕÏ æ', 'ÔÔÕÏ æ', 'åÝÊÕÏ æ', 'åÔÊÕÏ æ', 'äåÕÏ æ'),
('', '', 'ÈíÓÊ æ', 'Óí æ', 'åá æ', 'äÌÇå æ', 'ÔÕÊ æ', 'åÝÊÇÏ æ', 'åÔÊÇÏ æ', 'äæÏ æ'),
('', 'íß', 'Ïææ', 'Óå', 'åÇÑ', 'äÌ', 'ÔÔ', 'åÝÊ', 'åÔÊ', 'äå'));
NPos: array[1..4]of string = ('ãíáíÇÑÏ æ', 'ãíáíæä æ', 'åÒÇÑ æ', '');
_10_19: array[10..19]of string = ('Ïå', 'íÇÒÏå', 'ÏæÇÒÏå', 'ÓíÒÏå', 'åÇÑÏå', 'ÇäÒÏå', 'ÔÇäÒÏå', 'åÝÏå', 'åÌÏå', 'äæÒÏå');
var
TMP2, TMP: string;
Cntr2, Cntr: Integer;
begin
case Length(Nm) mod 3 of
1: TMP := '00';
2: TMP := '0';
end;
Nm := TMP + Nm;
TMP := '';
if Length(Nm) <=3 then begin
for Cntr := 1 to 3 do
if (Cntr = 2) and (Nm[Cntr] = '1') then begin
TMP := TMP + _10_19[StrToInt(Copy(Nm, 2, 2))] + ' ';
Break;
end else
TMP := TMP + Main[Cntr, StrToInt(Nm[Cntr])] + ' ';
TMP := Trim(TMP);
Cntr := Length(TMP);
if TMP <> '' then
if TMP[Cntr] = 'æ' then
Delete(TMP, Cntr, 1);
Result := TMP + ' ';
Exit;
end;
Cntr2 := 0;
for Cntr := (4 - (Length(Nm) div 3)) + 1 to 4 do begin
TMP2 := Number2Str(Copy(Nm, (Cntr2 * 3) + 1, 3));
if Trim(TMP2) <> '' then
TMP := TMP + TMP2 + NPos[Cntr] + ' ';
Inc(Cntr2);
end;
TMP := Trim(TMP);
Cntr := Length(TMP);
{----This command fix it----}
If not (Nm[length(NM)]='2') then
{--This command remove the æ from end of the number that has Ïæ! this is mistake--}
if TMP <> '' then
if TMP[Cntr] = 'æ' then
Delete(TMP, Cntr, 1);
Result := TMP;
end;
end.
من فانش تبدیل عدد به حروف را گیر آوردم به صورت زیر
لطفاً راهنمایی کنید جطوری در یک مثلا edit1 استفاده کنم و تابع را فراخوانی کنم
کدش را لطفاً بگوئید.
باتشکر
داود
nterface
function Number2Str(Nm: string): string;
implementation
uses SysUtils;
function Number2Str;
const
Main: array[1..3,0..9]of string = (('', 'íßÕÏ æ', 'ÏæíÓÊ æ', 'ÓíÕÏ æ', 'åÇÑÕÏ æ', 'ÇäÕÏ æ', 'ÔÔÕÏ æ', 'åÝÊÕÏ æ', 'åÔÊÕÏ æ', 'äåÕÏ æ'),
('', '', 'ÈíÓÊ æ', 'Óí æ', 'åá æ', 'äÌÇå æ', 'ÔÕÊ æ', 'åÝÊÇÏ æ', 'åÔÊÇÏ æ', 'äæÏ æ'),
('', 'íß', 'Ïææ', 'Óå', 'åÇÑ', 'äÌ', 'ÔÔ', 'åÝÊ', 'åÔÊ', 'äå'));
NPos: array[1..4]of string = ('ãíáíÇÑÏ æ', 'ãíáíæä æ', 'åÒÇÑ æ', '');
_10_19: array[10..19]of string = ('Ïå', 'íÇÒÏå', 'ÏæÇÒÏå', 'ÓíÒÏå', 'åÇÑÏå', 'ÇäÒÏå', 'ÔÇäÒÏå', 'åÝÏå', 'åÌÏå', 'äæÒÏå');
var
TMP2, TMP: string;
Cntr2, Cntr: Integer;
begin
case Length(Nm) mod 3 of
1: TMP := '00';
2: TMP := '0';
end;
Nm := TMP + Nm;
TMP := '';
if Length(Nm) <=3 then begin
for Cntr := 1 to 3 do
if (Cntr = 2) and (Nm[Cntr] = '1') then begin
TMP := TMP + _10_19[StrToInt(Copy(Nm, 2, 2))] + ' ';
Break;
end else
TMP := TMP + Main[Cntr, StrToInt(Nm[Cntr])] + ' ';
TMP := Trim(TMP);
Cntr := Length(TMP);
if TMP <> '' then
if TMP[Cntr] = 'æ' then
Delete(TMP, Cntr, 1);
Result := TMP + ' ';
Exit;
end;
Cntr2 := 0;
for Cntr := (4 - (Length(Nm) div 3)) + 1 to 4 do begin
TMP2 := Number2Str(Copy(Nm, (Cntr2 * 3) + 1, 3));
if Trim(TMP2) <> '' then
TMP := TMP + TMP2 + NPos[Cntr] + ' ';
Inc(Cntr2);
end;
TMP := Trim(TMP);
Cntr := Length(TMP);
{----This command fix it----}
If not (Nm[length(NM)]='2') then
{--This command remove the æ from end of the number that has Ïæ! this is mistake--}
if TMP <> '' then
if TMP[Cntr] = 'æ' then
Delete(TMP, Cntr, 1);
Result := TMP;
end;
end.