Q&A

  • C 포팅하기?
안녕하세요?
정말 초짜여서 그러는데요
c문법에 맞게 되있는 소스를 델파이로 포팅하는 중인데요
아무리 해도 어떻게 고쳐야 맞는건지
몇개 나름대로 빼고 보면 왠지 실행이 재대로 않되고 해서
이렇게 질문을 하게 되었습니다..

다음과 같은 c문법을 어떻게 델파이 문법으로 맞게 변환할수 있을까요?

1. memset(pblobCat->lpb, 0, nSize);
-> memser과 같은역활을 하는게 무엇인지요?

2.
  for i := 0 to arrIndex do
pblobCat.lpb[pCArray[i].iIndex] := pblobCat.lpb[pCArray[i].iIndex] + pCArray[i].bValue;

-> lpb는 byte pointer형이구여 bValue는 byte형이거든요
    결과적으론 lpb의 특정 내용과 bValue의 값들을 더하고 싶은건데요..
    lpb는 record 형식이고 bValue는 배열형식이고 데이터형 까지 다르니
    잘 안되서여..
2  COMMENTS
  • Profile
    고지범 2002.09.18 19:17
    윽... 레코드 정의도 없이 물어보심... 말뜻을 해석하기가... 쩝...
    암튼...
    1. memset
    ZeroMemory, FillChar가 있습니다.
    개인적으로는 Win32에도 있는 ZeroMemory 를 좋아하지만,
    ZeroMemory는 Win32 꺼 부르는 것이 아니라 FillChar 부르는 래펍니다.
    카일릭스 쓰시믄, 거긴 memset 있습니다. uses Libc 하구 나면 사용 되죠..

    2. 포인터
    걍.. 제가 예제로 레코드 만들어서 말쌈드리죠...
    RFirst = packed record
                   recFirst :packed record
                                     dwData :DWORD;
                                     cByte   :Byte;
                                  end;
                   otherData :integer;
                end;
    RSecond = packed record
                       arByte :array [0..99] of Byte;
                       otherData :Integer;
                    end;

    var
       r1 :RFirst;
       r2 :RSecond;
    begin
       // r1, r2에 필요한 데이터들 집어 넣고...
       // r1.recFirst.dwData의 3번째 바이트의 값을
       // r2.arByte[3] 에 넣기.
       r2.arByte[3] := PByte( Integer(@r1.recFirst.dwData) + 2 )^ ;
       // r1.recFirst.dwData의 4바이트 값을
       // r2.arByte[10] ~ r2.arByte[13]까지 넣기
       PDWord( @r2.arByte[10] )^ := r1.recFirst.dwData;
    end;

    델파이에서 포인터 연산은 거의 C++ 만큼 할 수 있죠...
    단 Pointer로 알려진 것에 대한 연산을 하려면 적절하게 타입 케스팅을 해주어야 한다는 겁니다.
    포인터 덧셈/뺄셈 은 Integer 혹은 Cardinal로 변환해서 하믄 직빵(?) 입니다.
    주의 하실 것은 이렇게 연산 하고 난 다음에는 다시 원하는 형태의 포인터로 타입케스팅을 해서 값을 조절해야 한다는 것이죠...

    오늘도 즐입다.
      
  • Profile
    박상기 2002.09.18 14:15

    1번만 답하것소..다른건 모르오
    C의 Memset에 해당하는것이 델파이에는 FillChar라고 하오
    그럼...수고하오
    • 최병철
      2002.09.24 21:17
      제가 여러가 테트스한 결과 저의 실수 였읍니다. 혹시 몰라서 [Tip]에 예제 소스를 올렸읍니다. 참...
    • 한원희
      2002.09.19 18:50
      안녕하세요. 한원희입니다. 혹시, OnNewWindow2 이벤트에서 Cancel 값을 true로 설정하신건 아니겠죠? ...
    • 고지범
      2002.09.18 19:17
      윽... 레코드 정의도 없이 물어보심... 말뜻을 해석하기가... 쩝... 암튼... 1. memset ZeroMemory, Fil...
    • 박상기
      2002.09.18 14:15
      1번만 답하것소..다른건 모르오 C의 Memset에 해당하는것이 델파이에는 FillChar라고 하오 그럼...수고...
    • 김헌대
    • 2002.09.18 08:50
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김희곤
    • 2002.09.18 07:07
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김형환
      2002.09.18 18:01
    • 김홍균
      2002.09.18 08:14
    • 김희곤
      2002.09.18 08:41
    • 미소나눔
      2002.09.19 03:50
      ShortInt(value); ^^:
    • 김희곤
    • 2002.09.18 04:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김수경
      2002.09.18 05:10
      Form 생성시   SetBounds명령으로 Form 크기를 조절해 주시면 됩니다. 예>   ...
    • 자유지역
      2006.02.19 08:26
      Nz 함수대신 아래처럼 IIF를 사용하면 가능합니다. IIF(ISNULL(amt),0,amt) 즐프하세요
    • 김상수
    • 2002.09.18 04:21
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.09.18 05:13
      hsr/////////////////////////////////////////////////////////// DefaultDrawColumnCell이함수를 사용...
    • 김상수
      2002.09.18 18:28
      답변 감사드리구요 음.. 색깔도 잘 들어가고 데이타도 잘 보이는데 선택했을때 기존처럼 청...
    • 박해성
      2007.04.12 18:51
      질문을 올린신 날짜가 오랜 된 걸로 봐서 문제를 해결 하셨을 것 같은데요. 같은 문제로 고민 하시는 분...
    • 조기흠
    • 2002.09.18 03:08
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 조기흠
      2002.09.18 03:45
      두분 다 감사합니다..좋은하루되세염..
    • 한원희
      2002.09.18 03:17
      안녕하세요. 한원희입니다. 버튼을 단축키로 제어하시려면, HotKey 컴포넌트를 이용해서, 해당 키가 ...
    • KDDG_ZZOM
      2002.09.18 03:10
      팝업콤퍼넌트를 이용하시면 될것같네요...^^ 즐프하세요...
    • 김수경
      2002.09.18 05:02
      안녕하세여~ 왜 그런것이 필요한지 알 수 없지만 님이 질문하신 내용은 일반적으로 처리 할 수 없습...
    • KDDG_ZZOM
      2002.09.18 03:13
      파일오픈하고 바로 WriteLn하면 될것같은데... 예전에 전 타이틀먼저 WriteLn 하고 쿼리결과를 루프돌리면...
    • 스말(^___^)
      2002.09.18 03:23
      전 AssignFile로 파일을열고 Append를 한후에 Writeln을 쓰는 방법으로 했거든요
    • KDDG_ZZOM
      2002.09.18 04:17
      지두요... 파일오픈하고 WriteLn 하면 한줄만들어지죠? 111,222,333... 데이타인것같은데... 그거위에서 ...
    • 스말(^___^)
      2002.09.18 07:21
      저 숫자는 그냥 예일 뿐이구요 저는 함수로 호출되면서 한데이터씩 들어가고 당연히 무슨 데이터가 들어...
    • 임진묵
    • 2002.09.18 02:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.09.18 03:08
      자료실에 제가 예전에 비스므리한 플그램올린적 있거든요... 공성환으로 검색해보세요... 원하는답은 아...
    • 김동완
    • 2002.09.18 02:15
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 고지범
      2002.09.18 18:56
      특정위치에 다른 정보를 입력한다는 말 뜻이, Append / Update 에 따라서 달라질 듯 하네요.. 1. Update. ...
    • 고지범
      2002.09.18 20:22
      윽... Seek 사용에서 인자를 서로 바꾸었군요... Seek(offset, origin)인데.. 거꾸로 사용되었습다..
    • 미소나눔
      2002.09.19 04:05
        OpenDialog1.Execute;   PATH := ExtractFilePath(OpenDialog1.FileName);  ...
    • 바다를향해
      2002.09.18 02:00
      확장MDI 라는 것이 있습니다. MDI는 MDI인데....일반적인 MDI보다는 조금더 유연한 것이죠... 확장MDI를 ...
    • 최만현
    • 2002.09.18 01:03
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.09.18 05:26
      hsr/////////////////////////////////////////////////// 아래 말씀하신 포멧류의 함수를 사용하시면 편...
    • 바다를향해
      2002.09.18 01:32
      Edit1.Text := Format('%.2f', [123.23232]); 이렇게 쓰면 되지 않나여..^^ 즐프.............^^;;
    • KDDG_ZZOM
      2002.09.18 01:24
      팁란인가? 타락천사님이 올리신 팁이 있는것 같았어요... 반올림하는거하고 절삭하는게 쪼매 이상해서... ...
    • 김상수
    • 2002.09.18 00:34
    • 0 COMMENTS
    • /
    • 0 LIKES
    • Ace..
    • 2002.09.18 00:26
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 전형식
      2002.09.18 02:09
      안녕하세요. ComobBox의 Item속성은 TStringList랑 같습니다. 선택했을때 선택한값에 추가하고싶으시면...
    • Ace..
      2002.09.18 02:31
      감사드립니다 저는 cb1.Text 의 값을 그냥  가지고 있고 싶거든요. 해서 cb1.Text := cb1.Text...
    • 한원희
      2002.09.18 03:25
      안녕하세요. 한원희입니다. 콤보박스의 스타일을 어떤 것으로 설정하셨는지 궁금합니다. csDropDownLis...
    • Ace..
      2002.09.19 00:35
      원희님 말씀처럼 해봤는데..... 이벤트처리중에 DropDown 이벤트 에서는 변수에 Text를 저장 하고요 Cl...
    • 이영동
    • 2002.09.18 00:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.09.18 00:24
      hsr////////////////////////////////////////////////// 간단하게 form2 디자인시 visible을 false 하거...