안녕하세요.
제가 구현하고 싶은내용은 'ㄱ' 에서 'ㅎ' 까지의 한글문자를 선언하고
'ㄱ'에는 '.-..' 를 'ㄴ'에는 '..-.' 등을 대응시켜 문자에 해당되는
ㄱ 이나 ㄴ 등등의 값이 들어 올때 비교를 해서 해당되는 문자에 대응되는 문자를
출력하는 소스를 구현하고 싶습니다.
지금은 if문을 사용하고 있는데 ㄱ부터 ㅎ까지 그리고 모음까지 전부를
if 문으로 사용하니까 불필요할것 같은 소스가 너무길어지더군요.
array 같은 배열을 이용하거나 포인터를 이용해서 쉽고 빠르게
불러와 사용할 수 있는 좋은 방법이 없을까요?
현재 소스는 이렇게 되어있습니다.
Var
hantmp: String;
Begin
for n :=1 to m do
begin
hantmp := Edit2.Text;
ch := copy(hantmp,o,2);
if ch ='ㄱ' then
Temp := Temp + ' .-..'
else if ch = 'ㄴ' then
Temp := Temp + ' ..-.'
else if ch = 'ㄷ' then
Temp := Temp + ' -...'
else if ch = 'ㄹ'then
Temp := Temp + ' ...-'
......
else if ch = 'ㅎ' then
Temp := Temp + ' .---'
......
else if ch = 'ㅏ' then
Temp := Temp + ' .'
.......
Temp := Temp + ' .... -.--'
else if ch = 'ㅒ' then
Temp := Temp + ' .. ..-'
else if ch = 'ㅖ' then
Temp := Temp + ' ... ..-';
end;
edit1.Text := temp;
end;
효율적인 좋은방법도 있으면 꼭 좀 알려주세요.
중첩된 if문보다는 case문이 훨씬 효율적입니다.
Var
hantmp: String;
HanStrings: TStrings;
Begin
HanStrings := TStrings.Create;
HanStrings.Add('ㄱ');
HanStrings.Add('ㄴ');
HanStrings.Add('ㄷ');
HanStrings.Add('ㄹ');
for n :=1 to m do
begin
hantmp := Edit2.Text;
ch := copy(hantmp,o,2);
case HanStrings.IndexOf(HanTmp) of
0: // 'ㄱ'
...
1: // 'ㄴ'
...
2: // 'ㄷ'
...
3: // 'ㄹ'
...
...
end;
edit1.Text := temp;
end;
end;
>
> for n :=1 to m do
> begin
> hantmp := Edit2.Text;
>
> ch := copy(hantmp,o,2);
>
> if ch ='ㄱ' then
> Temp := Temp + ' .-..'
> else if ch = 'ㄴ' then
> Temp := Temp + ' ..-.'
> else if ch = 'ㄷ' then
> Temp := Temp + ' -...'
> else if ch = 'ㄹ'then
> Temp := Temp + ' ...-'
> ......
> else if ch = 'ㅎ' then
> Temp := Temp + ' .---'
> ......
> else if ch = 'ㅏ' then
> Temp := Temp + ' .'
> .......
> Temp := Temp + ' .... -.--'
> else if ch = 'ㅒ' then
> Temp := Temp + ' .. ..-'
> else if ch = 'ㅖ' then
> Temp := Temp + ' ... ..-';
> end;
>
> edit1.Text := temp;
> end;
>
> 효율적인 좋은방법도 있으면 꼭 좀 알려주세요.
>
>
>
박근성 wrote:
> 안녕하세요.
> 제가 구현하고 싶은내용은 'ㄱ' 에서 'ㅎ' 까지의 한글문자를 선언하고
> 'ㄱ'에는 '.-..' 를 'ㄴ'에는 '..-.' 등을 대응시켜 문자에 해당되는
> ㄱ 이나 ㄴ 등등의 값이 들어 올때 비교를 해서 해당되는 문자에 대응되는 문자를
> 출력하는 소스를 구현하고 싶습니다.
> 지금은 if문을 사용하고 있는데 ㄱ부터 ㅎ까지 그리고 모음까지 전부를
> if 문으로 사용하니까 불필요할것 같은 소스가 너무길어지더군요.
>
> array 같은 배열을 이용하거나 포인터를 이용해서 쉽고 빠르게
> 불러와 사용할 수 있는 좋은 방법이 없을까요?
>
> 현재 소스는 이렇게 되어있습니다.
>
> Var
> hantmp: String;
> Begin
>
> for n :=1 to m do
> begin
> hantmp := Edit2.Text;
>
> ch := copy(hantmp,o,2);
>
> if ch ='ㄱ' then
> Temp := Temp + ' .-..'
> else if ch = 'ㄴ' then
> Temp := Temp + ' ..-.'
> else if ch = 'ㄷ' then
> Temp := Temp + ' -...'
> else if ch = 'ㄹ'then
> Temp := Temp + ' ...-'
> ......
> else if ch = 'ㅎ' then
> Temp := Temp + ' .---'
> ......
> else if ch = 'ㅏ' then
> Temp := Temp + ' .'
> .......
> Temp := Temp + ' .... -.--'
> else if ch = 'ㅒ' then
> Temp := Temp + ' .. ..-'
> else if ch = 'ㅖ' then
> Temp := Temp + ' ... ..-';
> end;
>
> edit1.Text := temp;
> end;
>
> 효율적인 좋은방법도 있으면 꼭 좀 알려주세요.
>
>
>