태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

SetLength (동적배열)

Posted on 2008/07/01 22:59
Filed Under Delphi

## 시작 전 기본지식 ######################################################################
프로그램이 메모리에 올라와 있는 모습

메모리
------------------------------------------------------------------------------------------------
OS         |            함수       |           리소스       |         외부변수      |       내부변수   |     힙    
               ---------------       -------------------------------------------------------------------
                    코드부분                             프                  로                그                램

1. OS : 컴퓨터를 작동하기 위한 OS가 메모리의 첫 부분을 차지한다.
2. 함수: 델파이로 코등한 프로그램은 델파이가 정의한 함수를 여기에 보관한다.
3. 리소스: 프로그램을 가동하기 위한 아이콘 파일이나 폰트등을 보관한다.
4. 외부변수 :  프로그램이 가동과 동시에 생성되며 프로그램이 종료되기전까지 외부변수는 변하지 않느다.
5. 내부변수 : 프로그램의 각 기능(프로시저)의 작동과 동시에 존재한다. 외부변수와는 다르게 프로그램이 종료
   되어도 메모리 내용이 삭제가 되지 않으므로  nil 또는 Finalize를 사용하여 메모리를 절약한다.
6. 힙 : 여유분으로 확보하고 있는 공간이다.
#####################################################################################

동적배열은 배열의 크기를 런타임시 변경할 수 있다.

ex.
----------------------------------------------------------------------------------
Var
  be : Array of Integer;
begin
  SetLength(be, 5); //이로 인해 be[0],be[1],be[2],be[3],be[4]의 5개의 변수가 생긴다.
         .
         .
         .
be := nil;  //또는 Finalize(be);
end
----------------------------------------------------------------------------------
* SetLength 는 1번부터 시작하지 않고 0번 부터 시작한다.


--관련예제--
에디트에 이름을 넣어서 저장시킨 후 보기를 클릭하면 저장된 내용들이 이름기준 오른차순으로 정렬
############################################################################
var
  Form1: TForm1;

implementation

{$R *.DFM}
Var
n : Integer;
be : Array of String;

procedure TForm1.Button1Click(Sender: TObject);
begin
  n := n + 1;
  SetLength(be, n);                              // be를 n만큼 동적으로 메모리를 확장한다.
  be[n-1] := Edit1.text;
  Edit1.SetFocus;                         
  Edit1.Text := '';
end;

procedure TForm1.Button2Click(Sender: TObject);
Var
 i,j : Integer;
 st, temp : String;
begin
  for i := 0 to High(be)-1 do                          //오름차순 정렬의 공식
     for j:=i+1 to High(be) do                                     *
       if be[i] > be[i + 1] then                                   *
       begin                                                            *
         temp := be[i];                                               *
         be[i] := be[j];                                              *
         be[j] := temp;                                               *
       end;                                                              *

  for i := 0 to High(be) do
    st := st + be[i] + #10;

  ShowMessage(st);
end;

end.
############################################################################

Project1.exe

이름순으로 정렬하기



TAG : ,

트랙백 주소 : http://bozzang.net/trackback/2 관련글 쓰기

댓글을 달아 주세요

  1. 기호 2009/12/22 12:55  댓글주소  수정/삭제  댓글쓰기

    이것이 뭐시냐..ㅡ,.ㅡ;;;ㅋ

Counter

· Total
: 49,622
· Today
: 0
· Yesterday
: 29