본문 바로가기
Delphi/문법

ShortString, LongString, WideString 정적배열, 동적배열

by MonoSoft 2024. 5. 6.
728x90
반응형

ShortString, LongString, WideString 정적배열, 동적배열

728x90

 

 

 

짧은 문자열 타입 (ShortString) 

 

var Str : ShortString; 총길이는 255이고

Str[0]에 문자열의 길이가 담겨져 있고 다음 인덱스 부터는 문자가 들어간다

여기서 한가지 지시어를 소개 시켜드리자면 Absolute 이다

var

Str : ShortString;

StrLen : Byte Absolute Str

 

이렇게 하면 StrLen은 Str의 시작주소가 같게 된다.

 

긴 문자열 타입(Long Stirng) 

 

오프셋 내용

-8 32비트 참조 카운트 -4 바이트 단위의 길이 0..길이-1 문자열

길이 Null 문자

Str := 'Edit1'

이라고 넣고 -8 부터 -1까지의 주소의 값이 20005000..

32비트 참조 카운트는 뭔지 모르겠고 길이는 확실히 할수 있다..

 

길이가 바뀔때 마다 확실하게 길이를 가지고 있다.

 

 

와이드 문자열 타입(Wide String) 

와이드 문자열은 긴문자열과 똑같이 구현되고 오프셋 내용

-4 바이트 단위의 32비트 길이 지시자 0..길이-1 문자열

길이 NULL 문자

문자열 길이는 바이트수이므로 길이는 문자열에 들어있는 와이드 문자 수의 두배이다.

2바이트씩 들어간다

 

정적 배열 (Static Array) 

정적 배열은 컴포넌트 타입의 배열 변수들을 일련의 연속적인 변수로 저장한다.

최하위 인덱스를 갖는 컴포넌트는 최하위 메모리 주소에 저장된다.

다차원 배열은 첫번째로 증가하는 가장 오른쪽 차원에 저장된다.

"다차원 배열은 첫번째로 증가하는 가장 오른쪽 차원에 저장된다."

 

 

동적배열 (Dynamic Array)

오프셋 내용

-8 32비트 참조 카운트 -4 32비트 길이 지시자(요소수)

0..길이 * (요소의크기) -1 배열 요소 내용은 위처럼 생겼고....

"동적배열은 배열의 포인터를 담고 있다는거" 중요하죠..

하지만 동적배열을 접근할때 ss[0] 이렇게 접근할때는

포인터가 아닌 값이 반환된다.

 

var

A, B : array of intger;

begin

setlength(a,1);

setlength(b,1);

a[0] := 2;

b[0] := 2;

end;

 

이럴때에 A = B 는 False이고 A[0] = B[0]는 True이다

 

728x90
반응형

'Delphi > 문법' 카테고리의 다른 글

델파이의 String 변수 팁  (0) 2024.05.24
for TCollectionItem  (0) 2024.05.11
델파이 코드구역(REGION) 사용방법  (0) 2024.04.12
상속(inheritance)과 연결(association)  (0) 2024.04.08
델파이 추상화(abstraction)  (0) 2024.03.26

댓글