Q&A

  • string 을 char 로 바꾸는 방법은 ?
안녕들 하십니까 .

스트링의 맨 앞에 한자만 따와서 캐릭터로 바꾼후 'A'..'Z' 사이의 값인지 검사 하기 위한 것인데요,

스트링 한글자 캐릭터로 바꾸는 것이 잘 안되는 군요.

제 나름데로 이렇게 저렇게 해 봤는데 안됩니다.

도와 주십시오.



procedure TForm1.N_ListOpClClick(Sender: TObject);

Var

stQy1, st1 : String ;

Char1 : Char;

begin

....중략 ....



stQy1 := Trim(Qy1.Fields[0].AsString) ;

st1 := Copy(stQy1,1,1);

//Char1 := Copy(stQy1,1,1); //여기서 스트링, 캐릭터 안맞음 형변환 필요(?)

//if Char1 in ['A'..'Z'] then

if (st1 <> '') And (st1 <> '0') then //결국 안되서 이렇게 응급처치

ListSrc.Items.Add(stQy1) ;

Qy1.Next ;

... 중략...

end;



이것은 디비에 공백, 숫자, 이상한문자로 시작하는놈 빼고 결국 'A'~'Z'로 시작하는 정상적인 문자를 리스트박스에 집어넣으려고 하는 것입니다.

6  COMMENTS
  • Profile
    kylix 2001.03.12 01:56
    Copy함수는 string형을 리턴합니다. 그러니까 타입캐스팅이 안되죠...



    아래처럼 Char1변수값에 직접 인덱스를 이용해서 읽으세요...



    procedure TForm1.N_ListOpClClick(Sender: TObject);

    Var

    stQy1 : String ;

    Char1 : Char;

    begin

    ....중략 ....



    stQy1 := Trim(Qy1.Fields[0].AsString);

    Char1 := stQy[1];

    if Char1 in ['A'..'Z'] then

    ListSrc.Items.Add(stQy1) ;

    Qy1.Next ;

    ... 중략...

    end;



    김석수 wrote:

    > 안녕들 하십니까 .

    > 스트링의 맨 앞에 한자만 따와서 캐릭터로 바꾼후 'A'..'Z' 사이의 값인지 검사 하기 위한 것인데요,

    > 스트링 한글자 캐릭터로 바꾸는 것이 잘 안되는 군요.

    > 제 나름데로 이렇게 저렇게 해 봤는데 안됩니다.

    > 도와 주십시오.

    >

    > procedure TForm1.N_ListOpClClick(Sender: TObject);

    > Var

    > stQy1, st1 : String ;

    > Char1 : Char;

    > begin

    > ....중략 ....

    >

    > stQy1 := Trim(Qy1.Fields[0].AsString) ;

    > st1 := Copy(stQy1,1,1);

    > //Char1 := Copy(stQy1,1,1); //여기서 스트링, 캐릭터 안맞음 형변환 필요(?)

    > //if Char1 in ['A'..'Z'] then

    > if (st1 <> '') And (st1 <> '0') then //결국 안되서 이렇게 응급처치

    > ListSrc.Items.Add(stQy1) ;

    > Qy1.Next ;

    > ... 중략...

    > end;

    >

    > 이것은 디비에 공백, 숫자, 이상한문자로 시작하는놈 빼고 결국 'A'~'Z'로 시작하는 정상적인 문자를 리스트박스에 집어넣으려고 하는 것입니다.

  • Profile
    김석수 2001.03.15 14:14
    전에 제가 char1 := stqy1[1] ; 이렇게 하면 에러 발생한다고 했는데 그이유를 밝혔습니다.

    그 이유는 필드의 값에 '' 값이 있어서 입니다.

    그래서 이렇게 하기로 했지요.

    char1 := stqy1 + '-' ; 이 한줄을 추가 요.

    kylix님 답변 정말 고맙습니다.





    김석수 wrote:

    > 그래도 안되는데요 .?

    > 이상한 에러가 발생하는데요 ...

    >

    > kylix wrote:

    > > Copy함수는 string형을 리턴합니다. 그러니까 타입캐스팅이 안되죠...

    > >

    > > 아래처럼 Char1변수값에 직접 인덱스를 이용해서 읽으세요...

    > >

    > > procedure TForm1.N_ListOpClClick(Sender: TObject);

    > > Var

    > > stQy1 : String ;

    > > Char1 : Char;

    > > begin

    > > ....중략 ....

    > >

    > > stQy1 := Trim(Qy1.Fields[0].AsString);

    > > Char1 := stQy[1];

    > > if Char1 in ['A'..'Z'] then

    > > ListSrc.Items.Add(stQy1) ;

    > > Qy1.Next ;

    > > ... 중략...

    > > end;

    > >

    >

    > > > 이것은 디비에 공백, 숫자, 이상한문자로 시작하는놈 빼고 결국 'A'~'Z'로 시작하는 정상적인 문자를 리스트박스에 집어넣으려고 하는 것입니다.

  • Profile
    김석수 2001.03.12 08:03
    그래도 안되는데요 .?

    이상한 에러가 발생하는데요 ...



    kylix wrote:

    > Copy함수는 string형을 리턴합니다. 그러니까 타입캐스팅이 안되죠...

    >

    > 아래처럼 Char1변수값에 직접 인덱스를 이용해서 읽으세요...

    >

    > procedure TForm1.N_ListOpClClick(Sender: TObject);

    > Var

    > stQy1 : String ;

    > Char1 : Char;

    > begin

    > ....중략 ....

    >

    > stQy1 := Trim(Qy1.Fields[0].AsString);

    > Char1 := stQy[1];

    > if Char1 in ['A'..'Z'] then

    > ListSrc.Items.Add(stQy1) ;

    > Qy1.Next ;

    > ... 중략...

    > end;

    >



    > > 이것은 디비에 공백, 숫자, 이상한문자로 시작하는놈 빼고 결국 'A'~'Z'로 시작하는 정상적인 문자를 리스트박스에 집어넣으려고 하는 것입니다.

  • Profile
    김석수 2001.03.15 14:13


    전에 제가 char1 := stqy1[1] ; 이렇게 하면 에러 발생한다고 했는데 그이유를 밝혔습니다.

    그 이유는 필드의 값에 '' 값이 있어서 입니다.

    그래서 이렇게 하기로 했지요.

    char1 := stqy1 + '-' ; 이 한줄을 추가 요.

    kylix님 답변 정말 고맙습니다.





    김석수 wrote:

    > 그래도 안되는데요 .?

    > 이상한 에러가 발생하는데요 ...

    >

    > kylix wrote:

    > > Copy함수는 string형을 리턴합니다. 그러니까 타입캐스팅이 안되죠...

    > >

    > > 아래처럼 Char1변수값에 직접 인덱스를 이용해서 읽으세요...

    > >

    > > procedure TForm1.N_ListOpClClick(Sender: TObject);

    > > Var

    > > stQy1 : String ;

    > > Char1 : Char;

    > > begin

    > > ....중략 ....

    > >

    > > stQy1 := Trim(Qy1.Fields[0].AsString);

    > > Char1 := stQy[1];

    > > if Char1 in ['A'..'Z'] then

    > > ListSrc.Items.Add(stQy1) ;

    > > Qy1.Next ;

    > > ... 중략...

    > > end;

    > >

    >

    > > > 이것은 디비에 공백, 숫자, 이상한문자로 시작하는놈 빼고 결국 'A'~'Z'로 시작하는 정상적인 문자를 리스트박스에 집어넣으려고 하는 것입니다.

  • Profile
    최근영 2001.03.12 17:54
    word() 을 이용하면 될거 같습니다.



    word('A') 는 아스키 값으로 65 를 리턴합니다.

  • Profile
    김석수 2001.03.13 06:29
    고맙습니다.

    그런 방법이 있었군요 .

    그러면 word('A') 함수는 비베에서 Chr("A") 함수와 같은 거군요 .?

    아무튼 고맙습니다. 덕분에 막힌 문제를 잘 해결했습니다.

    'A'..'Z' 을 65..90 으로 하였습니다.





    최근영 wrote:

    > word() 을 이용하면 될거 같습니다.

    >

    > word('A') 는 아스키 값으로 65 를 리턴합니다.