2013-02-26 2 views
1

저는 Ada의 디렉토리 라이브러리와 Command_Line 라이브러리를 사용하고 명령 줄에 주어진 텍스트 파일의 문자 수 (크기)를 읽은 다음이를 정수에 할당하고 있습니다. 컴파일러는 정수 및 FILE_SIZE는 FILE_SIZE는 정수의 하위 유형에도 불구하고, 일치하지 않는 것을 저에게 말하고있다Ada - File_Size를 정수로 변환

Character_Count := Size(Argument(1)); 

, 나는 확신합니다. 어떻게 변환 할 수 있습니까?

답변

3

Ada.Directories.File_Size이 아니고 서브 유형은 Integer입니다.

그것은 같은 언어 참조 설명서에 정의되어 : 당신이 그것에 대해 생각하는 경우가 하위 유형이 될 수 있도록

type File_Size is range 0 .. *implementation-defined*; 

이 훨씬 이해가되지 것입니다; Integer은 16 비트만큼 좁을 수 있습니다. 이는 임의 파일의 크기를 유지하기에는 충분하지 않습니다.

Character_Count := Integer(Size(Argument(1))); 

을하지만 아마 처음에 File_SizeCharacter_Count를 선언하는 것이 훨씬 더 좋을 것이다 :

당신은 정수로 변환하는 변환을 사용할 수 있습니다.

+0

아, 잘 알고 있습니다! Character_Count가 정수가되어야 변환이 굉장합니다. 정말 고마워. – chazbot7

+2

@ user2067941 : * 왜 *'Character_Count'가 '정수'가 필요합니까? (실제로는 그렇지 않을 가능성이 높습니다.) –

+0

@ user2067941 - 키이스를 여기에 백업합니다. 좋은 Ada 프로그램을 설계하는 데있어 중요한 부분은 유형을주의 깊게 선택하는 것입니다. 그 값이나 그로부터 파생 된 것이 필요한 모든 곳에서'File_Size' 타입을 사용할 수없는 이유는 정말로 있습니까? 파일이 2GB보다 큰 요즘은 그 정수에 맞을 수있는 최대 크기 인 것이 꽤 일반적입니다. –