루키 아카데미:
[UDF 시리즈 4]: Delphi로 작성된 UDF에 데이터 전달 및 반환
워튼이 번역함
저자: 크리스 레베스크, 티나 그루베, 브렛 밴디
------------------------------------- ----------------------------------
[번역자의 말]:
이전에 UDF 작성에 관한 여러 기사를 번역한 적이 있습니다. 일부 친구는 그로부터 약간의 도움을 받았을 수도 있지만 UDF에 익숙하지 않을 수도 있습니다.
아직 이해하는데 몇 가지 문제가 있습니다. 오늘은 mer 시스템(http://www.mers.com)에서 가져온 두 개의 기사를 더 번역하겠습니다.
네, 관심 있는 친구들은 원문을 볼 수 있습니다.
[논쟁]:
동적 링크 라이브러리가 보호된 데이터 값에 대해 특별한 예방 조치를 취하지 않는 경우 UDF는 매개변수 값 또는 반환 값이 있는 데이터 결과를 갖습니다.
보호된 예외 또는 오류 결과에 있을 수 있습니다.
[해결책]:
각 날짜 값은 두 가지 32비트 정수 유형, 즉 날짜를 나타내는 부호 있는 정수와
부호 없는 시간 정수입니다. 델파이 코드를 사용하여 이 구조(isc_quad)와 구조에 대한 포인터(pisc_quad)를 정의합니다.
유형
{베이스 간 날짜/시간 기록}
isc_quad = 기록
isc_quad_high : 정수 // 날짜
isc_quad_low : 추기경 // 시간
끝;
pisc_quad = ^isc_quad;
반환 값을 보호하려면 반환 값을 보유하도록 함수 정의 외부에 스레드로부터 안전한 isc_quad 변수를 선언하십시오(반환 값이
날짜 유형 데이터입니다).
threadvar
tempquad : isc_quad;
그런 다음 결과가 스레드 변수를 가리키도록 함수를 작성합니다.
//함수 정의
// 이 함수는 기존 날짜에 일 수를 추가합니다.
함수 dayadd( var 일: 정수; ibdate pisc_quad) : pisc_quad;
시작하다
tempquad.isc_quad_high := ibdate^.isc_quad_high + 일;
tempquad.isc_quad_low := ibdate^.isc_quad_low;
결과 := @tempquad;
끝;
저자 출처: mer Systems inc.. http://www.mers.com