请问这段代码怎么简化一下?(100分)

  • 主题发起人 主题发起人 剑魂
  • 开始时间 开始时间

剑魂

Unregistered / Unconfirmed
GUEST, unregistred user!
sndplaysound(S1,SND_SYNC or snd_Memory);
sndplaysound(S2,SND_SYNC or snd_Memory);
sndplaysound(S3,SND_SYNC or snd_Memory);
sndplaysound(S4,SND_SYNC or snd_Memory);
sndplaysound(S5,SND_SYNC or snd_Memory);
sndplaysound(S10,SND_SYNC or snd_Memory);
S1至S5为1-5的语音,S10为十的语音,我想用这个朗读15这个数值
请问要怎么做呢?谢谢了!
 
可以把S1至S5为1-5的语音,S10做成一个数组,用一个循环就传进去了
 
可以写代码出来吗?
 
function ReadDigit(D:Char):string;
begin

case D of
'0':result:='零';
'1':result:='壹';
'2':result:='贰';
'3':result:='叁';
'4':result:='肆';
'5':result:='伍';
'6':result:='陆';
'7':result:='柒';

'8':result:='捌';
'9':result:='玖';
'A':result:='十';
'B':result:='百';
'C':result:='千';
'D':result:='万';
'E':result:='亿';
end;

end;


functionReadNumber(ANum:integer):String;
var
S,SBase,SNum,SResult:string;
i,Len:Integer;
begin

SResult:='';
SNum:=IntToStr(ANum);
SBase:='ECBADCBA';
Len:=Length(SNum)-1;
while Len>8do

begin

S:=SBase+S;
Len:=Len-8;
end;

S:=Copy(SBase,8-Len+1,Len)+S;
for i:=1 to Length(SNum)-1do

begin

SResult:=SResult+ReadDigit(SNum)+ReadDigit(S);
end;

SResult:=SResult+ReadDigit(SNum[Length(SNum)]);

Result:= SResult;
end;


将第一个函数改成发音的就可以了
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
771
import
I
后退
顶部