Q&A

  • 배열값 초기화 질문
선언된 레코드 및 배열 값을 맨 처음 초기상태로 초기화을
할려고 하는데요 어떻게 해야 하나요

Type
  TmpRct= Record
     Num: Integer;
     Name: String;
     Addres: string;
end;

Var
  TRct: Array[1..1000] of TmpRct;
  TmpAry: Array[1..1000] of integer;

위와 같이 선언을 하고 프로그램 사용도중 각 TRct 및 TmpAry을 맨 처음
초기상태로 값을 초기화 할려면 TRct 및 TmpAry에 입력된 모든 값을
초기상태로 만든다는 것이죠...
설명이 조금 이상하죠..


그리고 비베에서는 배열값을 ReDim 문으로 범위(Tmp(100))을 이미 선언된
배열문도 값을 재설정 할수 있던데 델파이에서는 어떻게 할수 있나요..
3  COMMENTS
  • Profile
    KDDG_ZZOM 2003.04.04 00:07
    이런식으로 하시면 초기화는 될겁니다...
      FillChar(TRct  , SizeOf(TRct), 0);
      FillChar(TmpAry, SizeOf(TmpAry), 0);

    재설정은 잘모르겠네요...^^

    즐프하세요...

  • Profile
    프리맨 2003.04.04 02:00
    많은 분들이 실수하시는것중 하난데요...
    string 같은 동적자료형은 사용중에 메모리가 할당되므로
    FillChar로 초기화하면 이전에 할당된 메모리가 반환되지 않습니다.
    이럴땐 Finalize 라는 프로시져를 사용해야 합니다.

    이 프로시져는 변수,배열,레코드,인스턴스중에 string같은 동적 자료형의
    할당된 메모리를 반환해줍니다. 단, 초기화 해주지는 않습니다.

    Type
      TmpRct= Record
         Num: Integer;
         Name: String;
         Addres: string;
      end;

    Var
      mpRct: TmpRct;
      Rct: Array[1..1000] of TmpRct;

    ......

    Finalize(mpRct);           // 하나의 레코드 동적메모리 반환
    FillChar(mpRct, SizeOf(mpRct),0); // 초기화

    Finalize(Rct);               // 레코드 배열의 동적메모리 반환
    FillChar(Rct, SizeOf(Rct),0); // 초기화


    그리고 배열을 재할당 하시려면 처음부터 동적배열을 사용하셔야 됩니다.
    그런후 SetLength 로 길이를 정해줄수 있습니다.

    동적배열에서는 초기화 방법이 달라지는데요...
    Finalize 를 직접 호출할 필요는 없습니다.
    필요할때 내부에서 자동으로 호출되기 때문이죠.

    var
      Rct: Array of TmpRct;

    ....

    SetLength(Rct,1000); // 배열을 할당하고...
    ....
    SetLength(Rct,2000); // 길이변경(이전배열값 유지)
    ....

    Rct:=nil;                   // 배열을 모두 지운후...
    SetLength(Rct,1000); // 다시할당 (이전값 모두 초기화)





  • Profile
    김주 2003.04.04 00:16

    김주입니다! 님에 답변 많은 도움이 되었습니다.고맙습니다!!
    그럼 즐거운 하루되세요.
    • 맑은물
    • 2003.04.04 11:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2003.04.05 05:49
      안녕하세요. 타락임다.. 소켓통신을 써야 겠지요.. TELNET Port 가 21번 인가요? 포트를 열고 메세지...
    • 박수영
      2003.04.04 20:31
      ceil이라는 함수가 있어요... 글구 unit부분에 math라고 하구 사용하세요...
    • 신연근
      2003.04.04 07:36
      올림함수 ceil 내림함수 floor 즐프하세요..
    • 최인권
    • 2003.04.04 02:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2003.04.04 20:57
      안녕하세요 하얀까마귀 입니다. DB엔진에서 예외 처리를 말씀하시는 건가요? 그건 아닌것 같은데... ...
    • shyuna
    • 2003.04.04 02:37
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 하성욱
    • 2003.04.04 02:19
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 송호원
    • 2003.04.04 02:15
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박동호
    • 2003.04.04 02:11
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2003.04.04 03:24
      안녕하세요. 타락임다. 델파이에선 쓰레드도 디버깅 할수 있죠. 강력한 디버깅 때문에 델파이를 쓰죠....
    • 타락천사
      2003.04.04 05:01
      안녕하세여. 타락임다.. 아마 Execute 가 실행되지 않아서 그럴겁니다. 테스트 해보니 잘 됩니다. 브...
    • 타락천사
      2003.04.04 05:37
    • 델사랑
    • 2003.04.04 01:59
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 기형종
      2003.04.25 18:57
      Win ME에서 컴파일해보세요.
    • 타락천사
      2003.04.04 03:50
      안녕하세요. 타락임다. 이런 에러만 보고는 원인을 알수는 없습니다. 이유는 코드상에 버그가 있...
    • KDDG_ZZOM
      2003.04.04 02:34
      사용하셔도 될겁니다... 저는 3,4,5,6,7다 인스톨했거든요...^^ 근데사용하는건 3이니 ㅠ.ㅠ 즐프하...
    • 최수림
      2003.04.04 02:54
      del 5를 먼저 깔고 del 6을 인스톨 할떄. *.dpr , *.pas 등 업데이트를 할거냐구 묻는거 같아서 N...
    • KDDG_ZZOM
      2003.04.04 03:07
      제가 알기로는 6으로 올라가면서 뭔가 바뀐걸로 알고있습니다... 4에서5로른 쉽게 올라가도 5에서 6으로는...
    • 미소나눔
      2003.04.04 21:05
      이게 맞느지 모르겠네영.. 즐푸.. type   TMyPanel = class(TCustomPanel)   priv...
    • 타락천사
      2003.04.04 03:28
      안녕하세여.. 타락임다.. 보통은 걍 TImage 올려 쓰면 되는데, 질문을 보니 먼가 다른 작업을 하고 시...
    • 콤보
    • 2003.04.04 00:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2003.04.04 01:03
      변수 i를 지금 코딩상태에서만 사용하셨나요? 아래내용만 코딩하고 컴파일하면 안나오던데??? 확인해보...
    • 이충효
    • 2003.04.04 00:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2003.04.04 03:37
      안녕하세여. 타락임다..^^ 수고하십니다. ^____________^ 델파이 디자인 환경에서 콤포넌트를 폼에 올...
    • 김주
    • 2003.04.03 23:54
    • 3 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2003.04.04 00:07
      이런식으로 하시면 초기화는 될겁니다...   FillChar(TRct  , SizeOf(TRct), 0); &n...
    • 프리맨
      2003.04.04 02:00
      많은 분들이 실수하시는것중 하난데요... string 같은 동적자료형은 사용중에 메모리가 할당되므로 FillC...
    • 김주
      2003.04.04 00:16
      김주입니다! 님에 답변 많은 도움이 되었습니다.고맙습니다!! 그럼 즐거운 하루되세요.
    • 최경은
    • 2003.04.03 23:42
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최경은
      2003.04.04 00:27
      꾸벅~~
    • 거리
      2003.04.04 00:16
      테이블 필드의 데이터 타입을 알아보세요..잘못 들어가는것이 없는지 브레이크 걸어서 Open될때 에러가 발...
    • 서경환
      2003.04.03 23:49
      파라메터를 스트링으로 주어야 하지 않을까요. With Query1 Do   Begin   &nbs...
    • 우소
      2003.04.03 21:30
      == CheckBox1.Parent := StatusBar1;   CheckBox1.Left := 1;   CheckBox1.Top&n...
    • 타락천사
      2003.04.04 03:42
      안녕하세여. 타락임다. 바른 방법 입니다. 꼭 써야 한다면 컴포넌트를 만들어서 쓰길 바랍니다. 위...
    • 장희정
    • 2003.04.03 20:47
    • 2 COMMENTS
    • /
    • 0 LIKES
    • hubert
      2003.09.02 00:22
      QType, QComCtrl 등의 Q로 시작하는 것을 {}로 막아보세요.
    • 거리
      2003.04.03 21:06
      델파이 7버젼에만 있는걸로 알고 있습니다. CLX콤프의 라이브러리를 연결하는 역할을 합니다. 델파이 6...
    • 거리
      2003.04.03 20:48
      델파이 7을 아직 한번도 깔아보진 않았지만 추가된 콤프가 있어 예제를 찾으신다면 프로그램파일안에 델...
    • 델초보
      2003.04.03 21:06
      델파이 데모폴더에 가서 찾아봤는데 없네요... 그리고 사실 봐도 제 실력으로는 잘 모르겠지만 pas를...
    • 최경은
    • 2003.04.03 20:23
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 거리
      2003.04.03 20:38
      작성하신 부분을 올려주시지 않아서 일반적인 작성법을 올려드립니다. 콤프의 sql 프로퍼티에서 쓸때....
    • KDDG_ZZOM
      2003.04.03 20:32
      어떤식으로 코딩을 하셨는지 올려주셔야 답변이 있을것같네요... 즐프하세요...