Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
배열의 크기를 구하려면 어떻게 해야 되나요?
배열의 크기를 구하려면 어떻게 해야 되나요?
정적 배열이구요 일차원과 이차원인경우에 말입니다.
감사합니다.
3
COMMENTS
최용일
•
2000.02.21 12:05
김진호 wrote:
> 배열의 크기를 구하려면 어떻게 해야 되나요?
>
> 정적 배열이구요 일차원과 이차원인경우에 말입니다.
>
> 감사합니다.
SizeOf 함수를 이용하면 됩니다..
var
TArray = array[0..MaxSize, 0..MinSize, 1..2000 ......] of integer;
begin
Size := SizeOf(TArray);
end;
단일 타입의 배열은 어떤 배열, 어떤 차원이든지 SizeOf함수를 이용하면됩니다..
하지만 레코드 배열일때는 우리들이 추정하는크기와 다를 수도 있습니다.
델파이가 레코드를 메모리상에 배열할 때 4바이트 단위로 배열하거든요...
그럴때는 레크드를 packed로 선언하면 됨니다. 그럴수 없는 경우는 수작업으로
계산해줘야 겠죠.
에를 들면
type
Rec = record // 이 경우 크기는 5라고 생각되지만 메모리상의 실제크기는
AByte: Byte; // 8이다. packed를 사용하면 실제 크기는 5가 된다.
AInt: Integer;
end;
var
TArray: Array[0..MaxXSize-1, 0..MaxYSize-1, 0..MaxZSize-1] of Rec;
begin
Size:= MaxXSize * MaxYSize * MaxZSize * ActualSize;
end;
위의 경우 Rec = packed record로 선언부를 고쳐주면 단지 SizeOf(TArray)만 사용하면
크기를 구할 수 있다.. 물론 소스코드가 없는 외부변수들 같은 경우는 어쩔수 없이
수 작업을 해야되겠죠...
0
0
삭제
수정
댓글
DelChobo
•
2000.02.20 01:54
김진호 wrote:
> 배열의 크기를 구하려면 어떻게 해야 되나요?
>
> 정적 배열이구요 일차원과 이차원인경우에 말입니다.
>
> 감사합니다.
다음과 같은 Source는 어떨까요...
Var
MyArr : Array[1..50] of Double;
ArrMax : Double; <--- 배열의 크기를 저장할 변수
begin
Case varType(MyArr[1]) of
varBoolean : ArrMax := SizeOf(MyArr);
varInteger,varString : ArrMax := SizeOf(MyArr)/4;
varDouble,varCurrency : ArrMax := SizeOf(MyArr)/8;
end;
end
그런데 Single/Byte형은 Double/Integer형으로 인식되는 문제점이 있습니다.
0
0
삭제
수정
댓글
김진호
•
2000.02.22 22:56
DelChobo wrote:
> 김진호 wrote:
> > 배열의 크기를 구하려면 어떻게 해야 되나요?
> >
> > 정적 배열이구요 일차원과 이차원인경우에 말입니다.
> >
> > 감사합니다.
>
> 다음과 같은 Source는 어떨까요...
>
> Var
> MyArr : Array[1..50] of Double;
> ArrMax : Double; <--- 배열의 크기를 저장할 변수
> begin
> Case varType(MyArr[1]) of
> varBoolean : ArrMax := SizeOf(MyArr);
> varInteger,varString : ArrMax := SizeOf(MyArr)/4;
> varDouble,varCurrency : ArrMax := SizeOf(MyArr)/8;
> end;
> end
>
> 그런데 Single/Byte형은 Double/Integer형으로 인식되는 문제점이 있습니다.
질문 하신분이 저랑 동명 이시네여..
암턴 배열의 크기를 구할방법은 간단 합니다..
일차원의 배열인경우.. High(AAA) 하면
AAA 의 배열의 크기를 가져 옵니다..
배열이 이렇게 있다고 가정하고...
1,1,1,1,1,1,1,1,1,1
2,2,2,2,2,2,2,2,2,2
3,3,3,3,3,3,3,3,3,3
이차원 인경우..
High(AAA[0]) 하면 맨 첫줄...의 갯수를 구해 옵니다..
즉 임의의 한줄을 읽어 가져 온다는 것입니다..
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
김천식
•
2000.02.20 03:26
1
COMMENTS
/
0
LIKES
퀵리포트 문제(합계를 앞장에만...)
류동균
•
2000.02.20 10:49
김천식 wrote: > 어악! 퀵리포트 출력에 있어 심각한 고민에 빠졌습니다. > 문제는 합계를 제일 앞장 선...
슬픈이
•
2000.02.20 00:17
2
COMMENTS
/
0
LIKES
룩업필드문제...
cws
•
2000.02.21 23:40
슬픈이 wrote: > 질문내용은 이렇습니다요.. > > del 4.0 sql server 7.0 으루 개발하구이씀다. > 디...
류동균
•
2000.02.20 10:59
슬픈이 wrote: > 질문내용은 이렇습니다요.. > > del 4.0 sql server 7.0 으루 개발하구이씀다. > 디...
이세영
2000.02.19 20:46
0
COMMENTS
/
0
LIKES
[터미널창에 사용될 창 부분을 컴포넌트로 만들려면 어떻게..]
성병규
2000.02.19 20:30
0
COMMENTS
/
0
LIKES
분류먼저 해주시길 부탁드립니다.
김진호
•
2000.02.19 19:07
1
COMMENTS
/
0
LIKES
동그란 버튼은 없나요?
최용일
•
2000.02.20 11:23
김진호 wrote: > 폼이 너무 경직되어 있는것 같아 조금 예쁜 컴포넌트를 찾고 있습니다. > > 버튼이 타...
안대규
•
2000.02.19 19:01
1
COMMENTS
/
0
LIKES
파일 삭제
손창근
•
2000.02.19 21:05
안녕하세요.. 오공이 입니다.. 다음의 함수을 사용하면 될거 같네요.. DeleteFile(ExtractFilepath(App...
조영욱
•
2000.02.19 17:50
1
COMMENTS
/
0
LIKES
처음 프로그램이 실행될때 진행상황을 어떻게 보여주어야...
손창근
•
2000.02.19 20:57
안녕하세요.. 오공이 입니다... 기본적으로 스플레쉬 폼에 프로그레시바을 올리고.... Project File에...
김성훈
2000.02.19 11:27
0
COMMENTS
/
0
LIKES
위지윅 구현
델초
2000.02.19 11:27
0
COMMENTS
/
0
LIKES
WebBrowser에서 IE의 검색..??
갱수
2000.02.19 11:21
0
COMMENTS
/
0
LIKES
Visibroker for delphi 에서 callback비슷한 기능..
델초
•
2000.02.19 10:43
1
COMMENTS
/
0
LIKES
마우스가 위에 있을 때와 없을 때...????
하얀까마귀
•
2000.02.19 18:52
델초 wrote: > 이미지를 버튼처럼 쓰고 있는데 이미지 위로 > 마우스가 오면 그림을 바꾸고 > 벗어나면 ...
이길환
•
2000.02.19 10:21
1
COMMENTS
/
0
LIKES
테이블 편집모드에서 기존 내용 삭제 방법?
류동균
•
2000.02.20 11:05
이길환 wrote: > 안녕하세요. > > 기존 테이블에 데이터가 들어가 있고, 편집 화면에서 데이터를 수정...
Bean
•
2000.02.19 10:04
2
COMMENTS
/
0
LIKES
[Q]중복되지 않는 TTABLE 생성
류동균
•
2000.02.20 11:11
Bean wrote: > 왕뻬고 초보임다. > > 알리아스 정의된 폴더내에 DBF 파일이 있으면 > > 그 테이블을...
하얀까마귀
•
2000.02.19 19:00
먼저 DB가 무엇인지 알아야 겠죠.. 그럼 DB마다 다르긴 하지만 테이블과 프로시져 트리거의 설정등을 알수...
김창환
2000.02.19 07:58
0
COMMENTS
/
0
LIKES
midas문제. 클라이언트에서 파라메타 두개 넘기기...
박은철
2000.02.19 07:44
0
COMMENTS
/
0
LIKES
blob 저장방법좀 갈켜주세요
델파이청년
•
2000.02.19 07:25
1
COMMENTS
/
0
LIKES
퀵레포터에서 페이지 제어방법좀 가르쳐 주세요
류동균
•
2000.02.20 11:22
델파이청년 wrote: > QRSysData컴포넌트에서 Properties는 qrsPageNumber를 주어 페이지를 카운트합니다....
김성욱
2000.02.19 06:38
0
COMMENTS
/
0
LIKES
파일 실행및 오픈할경우 어떤파일이 실행 오픈되는지보는거 아시는분
엄화용
•
2000.02.19 04:35
1
COMMENTS
/
0
LIKES
파일변환
유도삼
•
2000.02.19 05:52
엄화용 wrote: > * txt파일을 db파일로 변환하려고 합니다. > db는 ms_sql server 6.5인데요 > 어떻...
김진호
•
2000.02.19 03:28
3
COMMENTS
/
0
LIKES
배열의 크기를 구하려면 어떻게 해야 되나요?
배열의 크기를 구하려면 어떻게 해야 되나요? 정적 배열이구요 일차원과 이차원인경우에 말입니다. 감사합니다.
최용일
•
2000.02.21 12:05
김진호 wrote: > 배열의 크기를 구하려면 어떻게 해야 되나요? > > 정적 배열이구요 일차원과 이차원인...
DelChobo
•
2000.02.20 01:54
김진호 wrote: > 배열의 크기를 구하려면 어떻게 해야 되나요? > > 정적 배열이구요 일차원과 이차원인...
김진호
•
2000.02.22 22:56
DelChobo wrote: > 김진호 wrote: > > 배열의 크기를 구하려면 어떻게 해야 되나요? > > > > 정적 배...
bluetin
2000.02.19 03:16
0
COMMENTS
/
0
LIKES
메일 코딩 방식구현에 관해서..
김진호
2000/02/19 03:28
Views
382
Likes
0
Comments
3
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 배열의 크기를 구하려면 어떻게 해야 되나요?
>
> 정적 배열이구요 일차원과 이차원인경우에 말입니다.
>
> 감사합니다.
SizeOf 함수를 이용하면 됩니다..
var
TArray = array[0..MaxSize, 0..MinSize, 1..2000 ......] of integer;
begin
Size := SizeOf(TArray);
end;
단일 타입의 배열은 어떤 배열, 어떤 차원이든지 SizeOf함수를 이용하면됩니다..
하지만 레코드 배열일때는 우리들이 추정하는크기와 다를 수도 있습니다.
델파이가 레코드를 메모리상에 배열할 때 4바이트 단위로 배열하거든요...
그럴때는 레크드를 packed로 선언하면 됨니다. 그럴수 없는 경우는 수작업으로
계산해줘야 겠죠.
에를 들면
type
Rec = record // 이 경우 크기는 5라고 생각되지만 메모리상의 실제크기는
AByte: Byte; // 8이다. packed를 사용하면 실제 크기는 5가 된다.
AInt: Integer;
end;
var
TArray: Array[0..MaxXSize-1, 0..MaxYSize-1, 0..MaxZSize-1] of Rec;
begin
Size:= MaxXSize * MaxYSize * MaxZSize * ActualSize;
end;
위의 경우 Rec = packed record로 선언부를 고쳐주면 단지 SizeOf(TArray)만 사용하면
크기를 구할 수 있다.. 물론 소스코드가 없는 외부변수들 같은 경우는 어쩔수 없이
수 작업을 해야되겠죠...