Q&A

  • 정수형 변수 초기화가 않되는 이유?
안녕하세요?
정수형변수를 선언하고 for문에서 0으로 초기화를 시켜주었는데도
디버깅해보면 0값이 아닌 20102037이란 쓰레기값을 가지고 있어여
그래서 따로 loop := 0;라고 선언을 해줘도 그부분은 컴파일이 않되고
무시되는 듯한 느낌이 들어여?
소스입니다..
loop : integer;
for loop := 0 to 10 do

왜 0으로 초기화가 되지 않는걸까요?
6  COMMENTS
  • Profile
    홍성락 2002.09.14 05:46
    hsr/////////////////////////////////////////////////////////
    버그는 아니구요 델파이 컴파일러의 특성인듯 합니다.
    최적화로 사용치 않거나 정해진것은 변수로 처리하지 않고 간단이 기계어로 반복하게하는것 같군요 자세한건 모르겠지만요....
    루프문안에서 해당 인자로 계산을하거나 조건문등으로 찾을때 디버깅시도 제대로 표현됩니다.
    간단한 예로.
    1.이건 n,i 둘다 디버깅시 꺼꾸로 나옵니다..컴파일러 특성 같아요
    그러나 제대로 돕니다 10*10
    procedure TForm1.Button2Click(Sender: TObject);
    var
       k, i,n : integer;
    begin
        K := 0;
        for n := 0 to 10 do
            for i := 0 to 10 do
                inc(k);

        showmessage(inttostr(k));
    end;

    2.아래건 n은 제대로 나옵니다, 이유는 바로 아래서 연산,조건인 for문이 있어서요
    procedure TForm1.Button2Click(Sender: TObject);
    var
       k, i,n,a : integer;
    begin
        K := 0;
        a:= 10;
        for n := 0 to a do
            for i := 0 to n do
                inc(k);

        showmessage(inttostr(k));
    end;

    3.아래 다나옵니다, 둘다 연산에 포함되므로
    procedure TForm1.Button2Click(Sender: TObject);
    var
       k, i,n : integer;
    begin
        K := 0;
        for n := 0 to 10 do
            for i := 0 to 10 do
               K := n+i;

        showmessage(inttostr(k));
    end;

    따라서, 프로그램 도는건 지장이 없습니다, 다만 컴파일러의 최적화로
    사용자에게 그건 몰라도,무시해도 되니 표시는 내맘대로다..라고 생각하시면 될겁니다.
  • Profile
    이추형 2002.09.14 00:34
    procedure TForm1.Button1Click(Sender: TObject);
    var
      loop : integer;
    begin
      loop := 0;     <---- 이케요?
      for loop := 0 to 10 do
      ...
    end;
  • Profile
    스말(^___^) 2002.09.14 01:53
    소스를 올려볼께요..아무리 확인해봐도 0으로 초기화가 않되고 있습니다..ㅡㅡ;;

    for nLoop := 0 to 10 do
    begin
        if category = '' then
        begin    
               중략..
        end else
        begin
        indexloop := 0  <- 여기서도 초기화 않되고
        for indexloop := 0 to 10 do  <-여기서도 초기화 안되고
        begin
                  if aryIndex[indexloop].name =  'lkh' then <- 여기서 쓰레기값..20102037
                  begin
                       중략..
                   end;
         end;
    end;
  • Profile
    최용일 2002.09.14 00:28
    안녕하세요. 최용일입니다.

    흠~ 어디에서 초기화를 해주었죠? 그런 코드가 없네요...

    for문돌기 전에 루프변수는 초기화해줄 필요없습니다. 해줘도 델파이가 코드에서 빼버릴겁니다. 코드를 최적화하기 때문에... for문 들어가기 전에 쓰지 않았다면 어떤값이 들어가는지 알수 없어요. 알 필요도 없구요...

    ^^ 항상 즐코하세요...

  • Profile
    스말(^___^) 2002.09.14 00:48
    for문 전에는 쓴적이 없어요
    선언하고 다음처럼 for문에서 쓴게 첨이거든요..
    그리고 for문에서 0으로 초기화해주고 for문 안에서
    aryIndex[loop]name ='lkh';
    이렇게 쓰이는데 바로 저 aryIndex[loop]에서 loop값이
    0이 아닌값이란 거거든요ㅡㅡ;;

  • Profile
    김일영 2002.09.14 00:57
    for문 안에서 쓰신게 맞으신가요--.
    아시고 계실 것으로 생각합니다만
    for문 제어변수는 for문이 종료하고 나면 유효하지 않은 값을 가집니다.
    그리고 for문 내부에서 그 제어변수가 실제로 사용되지 않으면
    for문에 정의한 것과 다른 값을 가지게 됩니다.
    아무래도...이것 때문에 질문하신것 같지 않지만--.
    도움이 되셨길...

    • 브래드
    • 2002.09.14 03:03
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김도성
    • 2002.09.14 02:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.09.14 17:44
      MS에서 제공하는 오라클용 드라이버가 있기는 하지만 벤더에서 맹근것 보다 더 좋을수는 없지 않을까요?
    • 브래드
    • 2002.09.14 01:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장재선
      2002.09.14 03:00
      간단하게 Form의 Properties에서 FormStyle을 fsStayOnTop으로 설정 하심 됩니당...
    • 김희곤
    • 2002.09.14 01:23
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 니야옹
      2002.09.14 01:55
      디폴트로 깔려있지는 않읍니다. 추가해주셔야되는데...델파이 디렉토리에서 bin및에 있는 dclqrt70.b...
    • 조창범
      2002.09.14 01:33
      델파이7에서는 퀵레포트가 없어지고 rave report라는걸로 바뀌었네여..그게 어떻게 사용하는건진..저두 봐...
    • 델퐁
    • 2002.09.14 01:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 델퐁
      2002.09.14 04:21
      잘못된 프린터로 연결되어 있을때 이런 에러가 뜨네요.쩝 준비된 프린터로 설정을 맞추어 주니 정상적으로...
    • 장재형
    • 2002.09.14 00:58
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.09.14 01:00
      안녕하세요. 최용일입니다. 컴포넌트에서 Owner가 하는 가장 큰 역활은 메모리에서 제거될 때 소유하고 ...
    • 장재형
      2002.09.14 01:55
      짬을 내서 좀 도와 주세요.. 즐코를 하고자하는 델 초보가. ①  inherited Create(AOwner); ...
    • 이추형
      2002.09.14 01:06
      질문이 애매모호 합니다. TDataBase의 Connected 가 True인지, TQuery의 Active가 True인지 확인해 주십...
    • 김희곤
      2002.09.14 01:21
      네.. 일단 감사합니다.. 위의 내용은 DBgrid 에서의 기본적으로 들어가야 되는사항인거 잘 알고있습니다...
    • 홍성락
      2002.09.14 05:46
      hsr///////////////////////////////////////////////////////// 버그는 아니구요 델파이 컴파일러의 특성...
    • 이추형
      2002.09.14 00:34
      procedure TForm1.Button1Click(Sender: TObject); var   loop : integer; begin  &nbs...
    • 스말(^___^)
      2002.09.14 01:53
      소스를 올려볼께요..아무리 확인해봐도 0으로 초기화가 않되고 있습니다..ㅡㅡ;; for nLoop := 0 to 10...
    • 최용일
      2002.09.14 00:28
      안녕하세요. 최용일입니다. 흠~ 어디에서 초기화를 해주었죠? 그런 코드가 없네요... for문돌기 전에...
    • 스말(^___^)
      2002.09.14 00:48
      for문 전에는 쓴적이 없어요 선언하고 다음처럼 for문에서 쓴게 첨이거든요.. 그리고 for문에서 0으로 초...
    • 김일영
      2002.09.14 00:57
      for문 안에서 쓰신게 맞으신가요--. 아시고 계실 것으로 생각합니다만 for문 제어변수는 for문이 종료하...
    • 김해우
      2002.10.23 03:41
      그냥가기가 뭐해서 델파이 4는 98, NT까지만 지원합니다. 델파이 5나 6으로 설치하시면 에러가 나...
    • 라지훈
    • 2002.09.14 00:20
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김영남
      2002.09.14 00:27
      델파이의 컴포넌트들중 Containner (<-영어 맞나?) 성 컴포넌트의 property중에 controlcount라고 있...
    • 이추형
      2002.09.14 00:20
      함수를 새로 냉글어야 하나? procedure TForm1.Button1Click(Sender: TObject); var   I,ii: ...
    • 최용일
      2002.09.14 00:17
      안녕하세요. 최용일입니다. 걍 100더하세요... RandomNum := Random(400) + 100; 0-400까지 발생...
    • 김동완
    • 2002.09.13 23:38
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 고지범
      2002.09.14 03:40
      일반적인 경우라면 - 가령 구분자가 #13, #10, #20 등 잘 알려진 구분자가 아니라면 - Copy, Pos(string 기...
    • 조강일
      2002.09.14 02:36
      var   strs: TStrings; begin   ExtractStrings([#13#10], [' '], 'aaa'#13#10'bbb...
    • 홍성락
      2002.09.14 00:28
      hsr////////////////////////////////////////////////////////////// 2가지 예입니다, 더 있겠지만... ...
    • 이추형
      2002.09.14 00:25
      copy명령어로 잘라주면 않될까요? Returns a substring of a string or a segment of a dynamic array. ...
    • 나옹이
    • 2002.09.13 23:24
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 조덕진
      2002.09.14 01:41
      안녕하세요. 최용일입니다. BLOB필드에 파일을 저장하고 불러오는 팁입니다. If you develop a database ...
    • 김수경
      2002.09.15 00:42
      고생이 많으신 것 같네염 ^^; 메모만 띄울 생각이라면 net send를 사용해 보세요. 명령 프롬프트(...
    • 이대희
    • 2002.09.13 20:42
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 장재형
    • 2002.09.13 20:35
    • 0 COMMENTS
    • /
    • 0 LIKES