델파이

10진수, 16진수, 아스키코드(문자), 16진수변환, 문자열함수

미스터몽키 2011. 1. 10. 00:29

 

 

10진수는 그냥 숫자를 쓰면되고                    ->  13

16진수 앞에는 $를 붙이고                            ->  $D 은 10진수 13과 같다

#을 붙이면 10진수 아스키코드에 해당하는 문자 를 의미한다.  ->  #13 은 CR 문자,  #$D도 CR문자

 

그리고 0x는 C,C++에서 16진수를 의미하는데 파스칼(델파이)의 $와 같다.

그런데 신기하게 델파이에서 $ 대신 0x를 사용해도 정상적이다.

 

//16진수를 10진수로 변환하려면 i가 10진수일때

i := StrToIntdef('$' +edit1.text, 0);

 

 

//16진수로 변환 4는 4자리를 의미 부족한 것은 앞에 0을 채운다

edit2.Text := IntToHex(strtoint(edit1.text),4);

 

// 10진수 100의 자리의 값

edit2.Text := IntToStr(strtoint(edit1.text) div 100 *100 );

 

//아스키코드(문자)

System.Chr함수 : 숫자에 해당하는 아스키문자 리턴

Chr(X: Byte): Char

예) edit1.text := Chr(1);

 

System.Ord 함수 : 문자에 해당하는 10진수 아스키코드 리턴 (Ord대신 Byte, Integer를 써도 된다)

Ord(C:Char): byte;

예) edit2.text := inttostr(Ord(edit1.text[1])); //text가 스트링이므로

다음도 같다

edit2.text := inttostr(Byte(edit1.text[1]));


 

예) #13은 아스키코드 13번 CR 문자이고 #10은 아스키코드 10번 LF 문자이다.

#13 은 #$D 와 같고 또한 chr(13), chr($D) 도 같다.#10 은 #$A 와 같고 또한 chr(10), chr($A) 도 같다.

 

 

//다음 문자열은 모두 같은 결과를 나타낸다.

 

t_str1 := '1줄' + #13#10 + '2줄';

t_str2 := '1줄' + chr(13)+char(10) + '2줄';

t_str3 := '1줄' + chr($D)+char($A) + '2줄';

 

 

 

//  점 모양으로  문장 시작 부분을 장식할 때  한글 'ㅁ' 누르고 "한자" 키 누르면 나타나는 점모양 '●' 는 161 확장 아스키코드인듯

     그리고 사용하기 좋은 조금 작은 점 ''은 아스키 코드 7번

     아래는 확인용 소스

var s: string;
begin
  s := '●';
 Edit1.text := inttostr(ord(s[1])) + ': ' + s + '   ' + inttostr(Ord('')) + ': ' + '';    // --> 161: ●   7: 
end;

 

//입력된 key의 아스키코드 찾기 예제  ( #3:Ctrl+C  #22:Ctrl+V  #24:Ctrl+X  #19:Ctrl+S) 

 

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

  Edit2.Text := inttostr(ord(key));

end;

 

* 지정된 문자열을 지정한 횟수만큼 복사해서 돌려주는 함수  DupeString(const AText: string; ACount: Integer): string;
  S1:= 'Delphi ';
  S2:= DupeString(S1, 3);  // Delphi Delphi Delphi
  ShowMessage(S2);
*특정 문자를 지정한 횟수만큼 반복한 문자열을 돌려주는 함수 StringOfChar
S:= StringOfChar('0', 7);는 '0000000'를 의미한다.