Q&A

  • 동적배열 입력시

구조체인가요.? 레코드를 아래와 같이 정의 하고요...
  TotalChannelList_t = record
    Channelgroup_addr   : String;
    AgentCnt            : String;
    ChkTime             : String;
    C_Result            : String;
  end;

배열을 정의 해줬습니다.

TotalChannelList : Array of TotalChannelList_t;

이 배열에 값을 입력하려고 하는데 잘 안되네요..

이 배열에 입력하려면 어떻게 구현 하는게 맞는건지요.?

try
  for i:= 0 to ListView1.Items.Count-1 do
  begin
      SetLength(ToTalChannelList, i);
      Initialize(i);
      TotalChannelList[i].Channelgroup_addr := strGroupList[i];
      TotalChannelList[i].AgentCnt  := IntToStr(mcInfoList[i].agentMemberCnt);
      TotalChannelList[i].ChkTime           := TimeToStr(now());
      TotalChannelList[i].C_Result          := 'Normal';
  end;
except
   Finalize(i);
end;

이런 식으로 했는데. 에러가 발생합니다.

SetLength(ToTalChannelList, 10);

으로 해서 각 레코드마다 0의 필드로 해서는 됩니다.

근데 임의의 배열을 생성해서 하려니..안되네요..초기화가 안되서 그런건간요.?

동적배열 생성해서...최기화 하려면 어떤 방식으로 해야하는지요..부탁드립니다.

5  COMMENTS
  • Profile
    서정협 2004.01.28 20:07
    SetLength 구문을 for 문 안에다 쓰시려면
    SetLength(ToTalChannelList, i); ==> SetLength(ToTalChannelList, i+1);
    와 같이 해 주셔야 합니다.
    i 가 0일때 SetLength(xxx,0);의 뜻을 생각해보시면 이해가 되실듯.

  • Profile
    Crazy 2004.01.28 06:58
    setlength 를 처음으로 빼주세요..
    setlength 는 동적배열생성시 2번째 인자의 갯수만큼 만듭니다.

    try
       SetLength(ToTalChannelList, ListView1.Items.Count);

      for i:= 0 to ListView1.Items.Count-1 do
      begin
    //      SetLength(ToTalChannelList, i);
          Initialize(i);
          TotalChannelList[i].Channelgroup_addr := strGroupList[i];
          TotalChannelList[i].AgentCnt  := IntToStr(mcInfoList[i].agentMemberCnt);
          TotalChannelList[i].ChkTime           := TimeToStr(now());
          TotalChannelList[i].C_Result          := 'Normal';
      end;
    except
       Finalize(i);
    end;

         // 확인...
    // low 와 high 를 쓰시면 굳이 배열의 갯수를 모르더라도 최소값과
    최대값으로 처리할 수 있습니다.

         for i := low(ToTalChannelList) to high(ToTalChannelList) do
         begin
         memo2.Lines.Add( ToTalChannelList[i].Channelgroup_addr );
         memo3.Lines.Add( ToTalChannelList[i].AgentCnt );
         memo4.Lines.Add( ToTalChannelList[i].ChkTime );
         memo5.Lines.Add( ToTalChannelList[i].C_Result );

         end;

    즐프~
    전 장금이보러 갑니다 -_-;';

  • Profile
    최수림 2004.01.28 09:17
    답변 잘받았습니다. 테스트 해봤구요..너무너무감사합니다..^^

    아까에 이어서 질문 다시 하나 해두될까요...?^^

    이렇게 배열에 값을 입력하고 리스트에 뿌려주고 나서 배열 값에 들어있는 값을 초기화 하는 구문은 어떻게..해야하는지..요..^^

    죄송합니다...

    =====================================================================
  • Profile
    Crazy 2004.01.28 18:16
    안녕하세욤~
    초기화를 말하심은 들어있는 값만 초기화인가요?
    아님 선언된 배열을 해제해는 건지요..
    여하튼 따로 없습니다.
    값 초기화는 걍 루프돌려서 0, 또는 '' 주시면 되구요.
    갯수가 바뀌게 되어 새로만들때는 바로 Setlength 를 호출하셔셔 다시 만드시면 되요..
    그럼 전 커피마시로 갑니다~^^

  • Profile
    최수림 2004.01.28 20:23
    • sallyslaw
      2004.01.31 04:02
      이벤트에 보시면 onGetCellColor라는 것이 있습니다. 이 이벤트내에서..처리하시면 됩니다. argume...
    • Galaxy
      2004.02.04 20:43
      감사 합니다.
    • 윤민규
    • 2004.01.28 23:32
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최수림
    • 2004.01.28 23:31
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 성더기
      2004.01.29 01:22
      ListItem에 값을 뿌리기전에 ListItem.Caption에 해당 아이피가 있는지 먼저 검사하고 있으면 거기에 ...
    • 최수림
      2004.01.29 01:51
      리스트 뷰에 뿌릴때는 리스트뷰에 아무것도 들어가 있지 않은 상태입니다. 해당 레코드를 리스트 뷰에 ...
    • 최용일
      2004.01.29 10:56
      안녕하세요. 최용일입니다. 데이터를 입력하기 전에 그 데이터가 이미 있는가 검색하세요. 이미 존재...
    • 김민웅
    • 2004.01.28 20:52
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김혜진
    • 2004.01.28 20:02
    • 3 COMMENTS
    • /
    • 0 LIKES
    • sallyslaw
      2004.01.28 20:18
      해당 소스폴더 내에 보시면 Project명.dof 와 project명.cfg 파일이 있습니다. 열어서 에러가 생긴 pas...
    • 김혜진
      2004.01.28 23:01
      먼저 답변해 주셔서 감사합니다. 제 해당 소스폴더의 dof file과 cfg file 에는 pas 파일명이 전혀 없...
    • 김혜진
      2004.01.28 23:41
      해결했습니다. 원인은 제가 JRO_TLB Library 를 import 하지 않아서 이더군요. *^^* 부끄럽습니다. 그...
    • 박정순
    • 2004.01.28 18:23
    • 5 COMMENTS
    • /
    • 0 LIKES
    • Galaxy
      2004.01.28 19:26
      안녕하세요 수고 하십니다. 수전히 제생각을 적은것입니다. 이렇게 하면 되지 않을까요 1.배열, 포인터...
    • Galaxy
      2004.01.28 19:28
    • 박정순
      2004.01.28 22:00
      예를들어서요.. var         i : integer; begin  &nbs...
    • Galaxy
      2004.01.29 00:37
      middle 버튼을 누르면 볼륨값이 중간에 오고 reset 버튼을 누르면 볼륨값이 middle버튼 누루기 이전의 값...
    • Galaxy
      2004.01.29 01:23
      아래 내용되로 됩니다. ------------------------------------------------------------- middle 버튼을 ...
    • 이원진
      2004.01.28 23:05
      아하. 글로벌변수를 이용해야 겠군요. 예제까지 보여주시고, 초보라서 모르는게 너무 많습니다. 음, 이거...
    • 남양원
      2004.01.28 19:58
      program TEST; uses   Forms,   Controls,   Login in 'Login.pas' {...
    • 박진수
      2004.01.28 18:13
      가장 간단한 방법은.. 넘겨줄 폼의 public 부분에.. Argument 역할을 대신할 변수를 선언한후.. 호...
    • 이추형
      2004.01.28 18:08
      글로벌 변수로 사용자 정보를 값으로 갖게하여 공유하는 방법이 있구요 Form to Form을 고집해야 한다면...
    • 델초보
    • 2004.01.28 06:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김대혁
      2004.01.28 22:57
      OpenDialog1 를 이용한면 하면 되겠고 파일 rename 시키면 될것 같은데요.
    • 최수림
    • 2004.01.28 06:38
    • 5 COMMENTS
    • /
    • 1 LIKES
    • 서정협
      2004.01.28 20:07
      SetLength 구문을 for 문 안에다 쓰시려면 SetLength(ToTalChannelList, i); ==> SetLength(ToTalChann...
    • Crazy
      2004.01.28 06:58
      setlength 를 처음으로 빼주세요.. setlength 는 동적배열생성시 2번째 인자의 갯수만큼 만듭니다. try...
    • 최수림
      2004.01.28 09:17
      답변 잘받았습니다. 테스트 해봤구요..너무너무감사합니다..^^ 아까에 이어서 질문 다시 하나 해두될까...
    • Crazy
      2004.01.28 18:16
      안녕하세욤~ 초기화를 말하심은 들어있는 값만 초기화인가요? 아님 선언된 배열을 해제해는 건지요.. 여...
    • 최수림
      2004.01.28 20:23
    • 엄장섭
    • 2004.01.28 05:56
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 김운필
      2004.01.28 20:02
      TDatetimeField  에 보면 DisplayFomat 이라는 Property가 있습니다. 적용하는 방법은 아...
    • Crazy
      2004.01.28 06:26
      var     sDate : Tdate; begin      sDate := StrToDateTime(...
    • 엄장섭
      2004.01.28 07:01
      제가 궁굼해 했던 것은 엑세스에서는 08:00이라는 값으로 시간이 저장 되어있는데 디비 그리드에서 그 ...
    • Crazy
      2004.01.28 08:04
      안녕하세요. 디비그리드는 데이타소스에 연결된 디스플레이용 컴퍼넌트일뿐이라서 컨트롤을 직접 할수가 ...
    • LDS
      2004.01.28 20:26
      비프음 없애는 방법 입니다. Application.OnActicate Var temp: BOOL; Begin Systemparameter...
    • 빠블로
    • 2004.01.28 03:36
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이정은
    • 2004.01.28 01:44
    • 2 COMMENTS
    • /
    • 0 LIKES
    • Crazy
      2004.01.28 06:33
      1. 프린터 설정에서 하셧다고 하는데 출력하는 프린터, 또는 1개이상의 프린터라면 기본프린터 (셋업하지...
    • 곽경래
      2004.01.28 03:46
      re) 프린트가 인쇄되는 사양인지요... 제가 해봤는데 별이상 없이 잘나오군요...
    • 이원진
    • 2004.01.27 23:23
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 채태숙
      2004.01.27 23:32
      아마도.. edti_id.Text와 edit_Pass.Text 를 문자열로 받아서 그런듯... 저 값을 파라미터로 넘겨...
    • 이원진
      2004.01.27 23:54
      답변감사드립니다. 그런데 제가 워낙 초보라 알려주신 내용 가지고도 아직 해결을 못했습니다. 주문한 책...
    • 유동기
      2004.01.28 01:32
        -----> 코딩 오류로 보입니다          ...
    • 채태숙
      2004.01.28 00:36
      값을 넘기는 방법은 여러가지가 있는데 아까전의 방법은 파라미터를 설정해서 파라미터에 값을 넘기는 방식...
    • 이원진
      2004.01.28 01:01
      네 고맙습니다 성공했습니다. 안그래도 게시물 검색해서 해보았는데 되었구요.. 님께서 알려주신 방법과 ...
    • 채태숙
      2004.01.28 01:51
    • 채태숙
    • 2004.01.27 23:16
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 이윤도
      2004.01.29 21:32
      저는 아직 초보라서 정확은 답변은 드릴수가 없지만...어제 저도 같은 경우로 ESC키를 누르면 바로 ...
    • Galaxy
      2004.01.28 19:12
      저도 그런 경우를 경험한 적이 있습니다. 저 같은 경우에는 작업에 필요해서 Keypress와 KeyDown을 동시에...
    • 곽경래
      2004.01.28 03:49
      re) 안녕하세요.. ESC키는 keypress에서 사용하시면 됩니다 If key = #27 then   begin &nb...
    • 채태숙
      2004.01.28 06:19
      답변 감사합니다.. 곽경래님.. 가르쳐주신대로 FormKeyPress 이벤트에 적용을 시켜봤는데 여전히 K...
    • 석주현
      2004.01.28 02:15
      저는 잘되던 데요.. ^^ 다시 다른 곳을 체크 해보심이.. 즐프 하세요..
    • 석주현
      2004.01.28 02:10
      단순하게 정수형 몫을 구하는걸 원한다면 trunc(a / b) 이렇게 하면 정수형 몫이 나오긴 하겠죠.. 근...
    • 석주현
      2004.01.27 23:09
      질문 내용이 이상하군요.. 소수점 이하 자리 까지 있는 나눗셈에서 왜 어째서 나머지가 나오는지 ? 음 ...
    • 이기재
      2004.01.27 23:45
      예를 들어 설명한거구요 소숫점은 10자리까지지만 있을수도 없을수도있어요 그리고 a div b에서 b는 ...
    • 곽경래
    • 2004.01.27 22:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 채태숙
      2004.01.27 23:04
      DrawCell 이벤트에서 구현가능합니다.. ACol에 따라서 Canvas.Font.Color를 다르게 적용시키시면 될...