안녕하세요....
edit에서 값을 abcde.aaa를 입력하면은 case에서 찾아 결과 값이 출력이 되는데...
이상하게 맞지 않으면 abcde.fff라는 결과 값이 나와야 하는데...되질 않아요...
어디가 잘못되었는지...잘모르겠어요...T.T
그리고 배열에 값이 많이 들어가야 하는데...만약에 data.ini로 만들어 aaa, bbb, cc가
있다면 어떻게 불러와서 배열로 한거와 같이 해야 하는지 잘모르겠어요...
고수님 도와 주세요...
procedure TForm1.Button1Click(Sender: TObject);
const
cont:array[1..3] of string = ('aaa','.bb','.cc');
var
TempStr : string;
i : integer;
begin
for i := 1 to 3 do
begin
TempStr := copy(edit1.text,length(edit1.text)-2,3);
if cont[i] = TempStr then
begin
case i of
1 : edit2.text := 'abcde.aaa';
2 : edit2.text := 'abcde.bb';
3 : edit2.text := 'abcde.cc';
else
edit2.text := 'abcde.fff';
end;end;end;
end;
무조건 끝에서 3글자만 불러오는건가 보군요.
만약 입력 글자를 'abcde.aaa'를 넣었다면
TempStr에는 copy(edit1.text,7,3) 이니까... 'aaa' 가 됩니다.
그러니까
if cont[i] = TempStr then
이구문이 true가되어서 아래의 case문을 실행하게 됩니다.
그런데 만약에 TempStr 값에 'aaa' 나 '.bb',나 '.cc' 가 아닌경우에는
아예 case문조차 실행이 되지를 않게 됩니다.
그러니까..
당근 case문에 else조차 실행이 안되겠죠.
//허술한 코딩이니까 참고만하세요.
procedure TForm1.Button1Click(Sender: TObject);
const
cont:array[1..3] of string = ('aaa','.bb','.cc');
var
TempStr : string;
i : integer;
begin
TempStr := copy(edit1.text,length(edit1.text)-2,3);
for i := 1 to 3 do begin
if cont[i]=TempStr then begin
edit2.text:=cont[i] ;
break;
end;
edit2.text:='abcde.fff';
end; //for문의 end
end;
초보만세 wrote:
> 안녕하세요....
> edit에서 값을 를 입력하면은 case에서 찾아 결과 값이 출력이 되는데...
> 이상하게 맞지 않으면 abcde.fff라는 결과 값이 나와야 하는데...되질 않아요...
> 어디가 잘못되었는지...잘모르겠어요...T.T
> 그리고 배열에 값이 많이 들어가야 하는데...만약에 data.ini로 만들어 aaa, bbb, cc가
> 있다면 어떻게 불러와서 배열로 한거와 같이 해야 하는지 잘모르겠어요...
> 고수님 도와 주세요...
>
> procedure TForm1.Button1Click(Sender: TObject);
> const
> cont:array[1..3] of string = ('aaa','.bb','.cc');
> var
> TempStr : string;
> i : integer;
> begin
> for i := 1 to 3 do
> begin
> TempStr := copy(edit1.text,length(edit1.text)-2,3);
> if cont[i] = TempStr then
> begin
> case i of
> 1 : edit2.text := 'abcde.aaa';
> 2 : edit2.text := 'abcde.bb';
> 3 : edit2.text := 'abcde.cc';
> else
> edit2.text := 'abcde.fff';
> end;end;end;
> end;