안녕하세요.(주)나이렉스 인터내셔날의 짱굽니다.
음... 아마 델파이 자체함수를 사용하셨나 보군요...
DiskSize() function의 내부를 살펴 보면...담과 같죠..
function DiskSize(Drive: Byte): Integer;
var
RootPath: array[0..4] of Char;
RootPtr: PChar;
SectorsPerCluster,
BytesPerSector,
FreeClusters,
TotalClusters: Integer;
begin
RootPtr := nil;
if Drive > 0 then
begin
StrCopy(RootPath, 'A:\');
RootPath[0] := Char(Drive + $40);
RootPtr := RootPath;
end;
if GetDiskFreeSpace(RootPtr, SectorsPerCluster, BytesPerSector,
FreeClusters, TotalClusters) then
Result := SectorsPerCluster * BytesPerSector * TotalClusters
else Result := -1;
end;
위에 보시면 Return값이 Integer로 되어 있군요... 이걸 comp로 바꾸셨다구
하신거 같군요... 그래서 저두 해 보았더니 ... 되는거 같같군요...
지금 저희 회사에는 4GB 이상 하드가 있지만 쪼각쪼각 나있어서 직접적인
테스트는 불가능 하구요... 저는 이렇게 해 보았죠...
function DiskSize(퐻irve: Byte): Extended;
{나머지는 같구요..}
Result := 3847509347059.00;
{이런 식으로 해주었죠..}
후후~ 이건 정답이라곤 할수 없지만 값은 읽어오니까 한번 속는샘치구 해보시기
바람니다.
Caption := FolatToStr(DiskSize(3)); 이렇게요...
쩝~ 만일 이게 안된다면 문제는 변수형이 아닐껍니다.
아마 GetDiskFreeSpace()함수를 직접 제어하거나...아님....
Fat의 구조 때문이 아닐까 생각 합니다.
너무 심각해 지는 군요... 히히
욜씨미 하세요...
존 코딩 하시구여...
그럼..
|