다음의 함수 예를 봐 주세요.
GetDiskFreeSpace를 디스크크기를 이용해 구하는 함수입니다.
function GetDiskSize(Root: string): LongInt;
var
SpC,
BpS,
NfC,
TnC : DWORD;
DiskSize : Double;
begin
GetDiskFreeSpace(PChar(Root), SpC, BpS, NfC, TnC);
DiskSize := (TnC * SpC * BpS) / 1024;
Result := Round(DiskSize); // Result in KB
end;
C++에서 lp~로 시작하는 형은 델파이에서는 함수호출인자의 var 지정자(reference)
와 일치합니다. 그러니, 첫번째 인자로 'c:\'이렇게 직접 주면 에러가 납니다.
변수를 한개 선언하고, 거기에 대입시킨뒤, 위의 함수와 같은 방식으로 호출하면
됩니다. 그리고, 2,3,4,5번째 인자 또한 포인터변수를 넘겨주는 것이 아니라, 단
지 변수의 포인터가 넘어가는 것입니다. C++ 의 &(adress of)연산자와 같은 것이져.
C++을 잘 모르신다면, 이해가 잘 안되시겠지만, C++에서 lp로 시작되는 것은 델파이
에서는 그냥 일반 변수형으로 잡고 넘기면, 그곳에 실행결과로 값이 저장되어 있게
됩니다.
답변이 이해 안되시면 추가 질문 부탁드립니다.
|