Q&A

  • 16진수 변환
   edit2.Text := IntToHex( StrToInt( edit1.Text ), 0 );
   edit3.Text := IntToHex( Integer( edit1.Text ), 1 );

이렇게 코딩을 하고

edit1.text 의 값을 1이라고 넣었는데

결과가

eidt2.Text = 1

edit3.Text = 'CB3FD8' 라고 나오네요

왜 그런지 ????

그리고 'CB3FD8' 을 1로 바꾸는 방법도 좀
4  COMMENTS
  • Profile
    최용일 2005.12.20 02:28
    안녕하세요. 최용일입니다.

    첫번째것이 정석적인 방법입니다.

    string형도 일종의 메모리포인터입니다.
    첫번째 방법은 edit1.text가 가리키는 값 "1"이란 문자열을 StrToInt함수를 통해서 정수로 바꿔서 16진수로 변환하는것이구요...
    두번째 방법은 edit1.text자체, 즉 메모리번지를 단순히 Integer로 형변환해서 16진수로 변환하는것이네요...

    CB3FD8로 나오는것은 edit1.text의 메모리 번지입니다. 이것을 1로 바꾸실려면 어차피 이 번지가 참조하는 값("1")을 16진수로 바꿔야 됩니다. 첫번째 방법과 똑같죠... 앞에 몇가지 과정이 추가되었을뿐 첫번째것과 똑같은 방식으로 할 수 밖에 없습니다.

    메모리번지(CB3FD8)를 1로 바꾸려고 하시지 마시고 첫번째 방법을 쓰세요... 지름길을 놔두고 돌아가서야...

    ^^ 항상 즐코하세요...

  • Profile
    민스맘 2005.12.21 20:43
    그럼요...그값이 숫자가 아니구 문자일 경우 그 값을 16진수로 바꾸려면 어떻게 하면 되나요?



  • Profile
    최용일 2005.12.21 21:29
    무슨 말씀이신지??? 그 값이란게 뭐죠?

    뭐가 됐든 StrToInt, IntToHex등의 함수를 쓰시면 될텐데요...

  • Profile
    민스맘 2005.12.22 18:58
    edit1.Text 에 값이 1 이 아니고.....'델파이'  라는 값이 들어가 있다면

    StrToInt 는 안 먹히잖아요......