ByVal은 변수를 받아와서 쓰는 것으로

값이 변화하지 않고 정상적으로 리턴값을 받는다.


ByRef는 받아온 변수 자체를 조작하는 것으로

값이 변해버리므로, 원본 값이 남지 않게 된다.



호출 속도는 ByRef가 빠르다는 분석이 있다.


Byte타입을 함수에서 선언해서 쓰는 경우 ByRef로 나오는데

선언순서를 바꿔서 하면 ByVal로 사용가능한지?


'1안

Method ( ByRef MyByte() As Byte ) AS Long


'개선안

Method ( ByVal MyByte As Byte() ) AS Long


참고

(1429) byRef 와 byVal 의 속도 비교 (엑셀 VBA 매크로) 

same results passing byte array ByRef and ByVal 


 

저작자 표시 동일 조건 변경 허락
신고

설정

트랙백

댓글

구내염은 야근을 하고 자면 발생한다! (새벽 1시 취침)

즉, 수면 부족 시에 발생한다!


나의 경우의 구내염은 주로 아랫입술에 발생한다.

윗입술이 양이고, 아랫입술이 음이다.

피부는 금기이고, 금기는 꿀과 같이 단맛으로 보충한다.


그런데 구내염의 상처는 안쪽으로 파여 있고(음),

그 색상은 흰색(금)이다.


금기의 부족과 수기(잠)의 부족이 맞물려서 발생한 것으로 보인다.


이럴 땐

수기를 보충하는 방법과

금기를 보충하는 방법이 병행되어야 한다.



수기는 짠맛으로 천일염(약용 소금;질 좋은 소금)으로 먹도록 하고

금기는 매운맛으로 후추같은 것을 먹으면 된다.


삼겹살에 찍어먹는 짭잘하고 고소한 소스가 가장 좋지 않을까 싶다.

인터넷에서 가지도 괜찮다고 하는데, 괜찮을 것 같긴하다.


그러나 미검증! 상태이다


+ 양치하고 다시 보니, 상처 안의 색상은 검정색이다!

눈 밑도 검정색이다.

일단 퇴근해서 자야 살 수 있다.

저작자 표시 동일 조건 변경 허락
신고

설정

트랙백

댓글

DLL 호출 시에 변수를 어떻게 잡아줘야 할지 혼선이 있었다.


변수의 범위에 따라서 C++ 과 VB6 데이터 타입을 대응시킬 수 있을 것 같다.


Byte 0~255

Integer -32768 ~ 32768

Long -2,147,483,648 ~ 2,147,483,648

Single 1.401298E-45 ~ 3.40282E38 음수 -3.40282E38 ~ -1.401298E-45


범위 문제가 아닌 것 같다. 왜 그런지는 잘 모르겠다.

C++ 과 VB6의 호환성 문제 쉽지 않다..


VB <- C++ 대응 타입

Byte <- byte

Integer <- short, bool

Long <- int, bool

Double <- float, double

String <- char, uchar wchar_t



ByVal과 ByRef

VB6에서 문자열변수(char*, uchar, wchar_t 등등)은 ByRef로 받을 수 없고,

ByVal로만 받을 수 있다. 대신에 변수를 사용하기 전에

공백을 넣어서 초기화 해줘야 한다.


구조체 변수는 안에 문자열 변수가 있다고 하더라도 ByRef로 받아줘야

처리가 가능하다.



그외에

- bool 형은 Integer 도 되고, Long도 가능하다. 왜 그런지는 모르겠다...;;

- void 형을 리턴하는 DLL 함수는 선언시 Function 대신 Sub 키워드를 사용하고, 

호출 시에는 Call 함수명 이라고 호출해줘야 한다.



참고

[C++ 정리] 자료형의 크기 및 범위

[VB6] 변수의 데이터 형 및 선언

DLL을 만드는 방법과 C DLL 함수를 VB에서 콜하는 방법 - MSDN

저작자 표시 동일 조건 변경 허락
신고

설정

트랙백

댓글