Q&A

  • 아스키 문자를 아스키 값으로 변환하는거 질문이염..
안녕하세요 델파이를 이제막 시작한 사람입니다. 물론 프로그래밍두

델파이가 처음이구요 초짜의 질문이지만 답변부탁드림니다.



procedure TForm1.Button1Click(Sender: TObject);

//아스키값을 문자로 변환

var

i : integer;

begin

i := strtoint(edit1.text);

label1.Caption := chr(i);

end;



아스키값을 문자로 변환하는건 위의 소스처럼 쉽게했는데요

반대로 문자를 값으로 변환하는건 좀 힘드네요

우선 제가 한 소스를 봐주세요



procedure TForm1.Button1Click(Sender: TObject);

//아스키문자를 아스키값으로로 변환

var



i : integer;

s : string;

begin

i := strtoint(edit1.text);

s := inttostr(i);

label1.Caption := ord(s);

end;

이런식으로 했는데요 전혀 안되네요.. 프로그램 설명을 하자면

edit1.text에 문자로 A라고 입력을 하고 버튼을 눌렀을때 Label1.caption에

아스키값으로 65가 나오는겁니다 그럼 답변부탁드립니다~

3  COMMENTS
  • Profile
    공돌이 2001.08.14 23:27
    님들 덕분에 해결했씁니당.. edit1.text를 배열로 쓸수있는걸 이번에

    알았네요.. 캄솨~~ ^^

  • Profile
    박장용 2001.08.14 22:23
    procedure TForm1.Button1Click(Sender: TObject);

    begin

    label1.Caption := inttostr(ord(edit1.text[1]));

    end;



    수고하세요..





    공돌이 wrote:

    > 안녕하세요 델파이를 이제막 시작한 사람입니다. 물론 프로그래밍두

    > 델파이가 처음이구요 초짜의 질문이지만 답변부탁드림니다.

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > //아스키값을 문자로 변환

    > var

    > i : integer;

    > begin

    > i := strtoint(edit1.text);

    > label1.Caption := chr(i);

    > end;

    >

    > 아스키값을 문자로 변환하는건 위의 소스처럼 쉽게했는데요

    > 반대로 문자를 값으로 변환하는건 좀 힘드네요

    > 우선 제가 한 소스를 봐주세요

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > //아스키문자를 아스키값으로로 변환

    > var

    >

    > i : integer;

    > s : string;

    > begin

    > i := strtoint(edit1.text);

    > s := inttostr(i);

    > label1.Caption := ord(s);

    > end;

    > 이런식으로 했는데요 전혀 안되네요.. 프로그램 설명을 하자면

    > edit1.text에 문자로 A라고 입력을 하고 버튼을 눌렀을때 Label1.caption에

    > 아스키값으로 65가 나오는겁니다 그럼 답변부탁드립니다~

  • Profile
    류종택 2001.08.14 22:15
    함수 사용이 잘못되었습니다..

    우선 Ord는 리턴값이 숫자형입니다..

    그러니 문자형인 Caption에 맞지 않지요..



    또한 아래 문장 전체가 다소 문제가 있습니다.



    1. Edit1.Text는 문자열을 입력받을 수 있기 때문에..

    님처럼 문자를 취급할 때에는 주위가 필요합니다..



    2. 두번째 함수 즉, 아스키 문자 아스키값으로 변환에서

    에서 i := strtoint(edit1.text); 는 문제가 있습니다..

    StrToInt 함수는 숫자로 표현된 문자열을 숫자형으로 변환하는 것입니다..

    아스키 코드 값을 반환하지 않습니다..



    3. 문자와 아스키 값의 저장형태는 동일합니다.. 모두 1바이트를 차지하고 있지요..

    따라서 특별히 함수를 사용하실 필요 없이 형변환을 시키면 됩니다..

    형변환은 형태명을 변수 등에 써주면 됩니다..

    Byte(stTemp[1]) : 바이트, 아스키 코드값으로 변환

    Integer(Byte(stTemp[1])) : 바이트를 Integer로 변환

    형변환에는 다소 제약이 따르니.. 이를 명심하시기 바랍니다..



    4. StrToInt 보다 StrToIntDef를 권장합니다..

    StrToInt는 에러가 있을 때 시스템 메시지가 발생합니다..



    아래의 소스를 참고하시기 바랍니다..



    끝까지 도전하셔서 최고수가 되시길 바라면서..





    From 류..



    ---------



    procedure TForm1.Button1Click(Sender: TObject);

    Var

    stTemp : String;

    begin

    stTemp:= Edit1.Text + 'X';

    If stTemp = '' then ShowMessage('문자를 입력하여 주세요.')

    Else Edit1.Text:= IntToStr(Byte(stTemp[1])); // 첫 번째 문자를 숫자로 변환

    end;



    procedure TForm1.Button2Click(Sender: TObject);

    begin

    Case StrToIntDef(Edit1.Text, -1) of

    0..255 : Edit1.Text:= Char(StrToIntDef(Edit1.Text, -1));

    -1 : ShowMessage('0..255의 숫자를 입력하여 주시기 바랍니다.');

    End;

    end;







    공돌이 wrote:

    > 안녕하세요 델파이를 이제막 시작한 사람입니다. 물론 프로그래밍두

    > 델파이가 처음이구요 초짜의 질문이지만 답변부탁드림니다.

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > //아스키값을 문자로 변환

    > var

    > i : integer;

    > begin

    > i := strtoint(edit1.text);

    > label1.Caption := chr(i);

    > end;

    >

    > 아스키값을 문자로 변환하는건 위의 소스처럼 쉽게했는데요

    > 반대로 문자를 값으로 변환하는건 좀 힘드네요

    > 우선 제가 한 소스를 봐주세요

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > //아스키문자를 아스키값으로로 변환

    > var

    >

    > i : integer;

    > s : string;

    > begin

    > i := strtoint(edit1.text);

    > s := inttostr(i);

    > label1.Caption := ord(s);

    > end;

    > 이런식으로 했는데요 전혀 안되네요.. 프로그램 설명을 하자면

    > edit1.text에 문자로 A라고 입력을 하고 버튼을 눌렀을때 Label1.caption에

    > 아스키값으로 65가 나오는겁니다 그럼 답변부탁드립니다~