ShortString, LongString, WideString 정적배열, 동적배열
짧은 문자열 타입 (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이다
'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 |
댓글