2013-02-26 54 views
1

我使用Ada的目錄庫和Command_Line庫,並讀取命令行中給出的文本文件的字符數(大小),然後將其分配給一個整數。Ada - 將File_Size轉換爲整數

Character_Count := Size(Argument(1)); 

編譯器告訴我,整數和FILE_SIZE不匹配,即使FILE_SIZE是整數的一個亞型,我敢肯定。我如何轉換它?

回答

3

Ada.Directories.File_Size不是Integer的亞型。

它在語言參考手冊定義爲:

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

如果你仔細想想,就沒有多大意義了它是一個亞型; Integer可以縮小到16位,這對於保存任意文件的大小來說是不夠的。

您可以使用一個轉換轉換爲整數:

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

但它可能會好得多申報Character_Count作爲首位File_Size

+0

啊,很高興知道!我確實需要Character_Count是一個整數,所以轉換是真棒。非常感謝。 – chazbot7 2013-02-26 01:39:23

+2

@ user2067941:*爲什麼*你需要'Character_Count'作爲'Integer'? (很可能你真的沒有。) – 2013-02-26 01:40:38

+0

@ user2067941 - 在這裏備份Keith。設計一個好的Ada程序的很大一部分是仔細挑選你的類型。你真的有一個很好的理由說明,爲什麼你不能在任何值的地方使用'File_Size'類型,或者需要從中派生的東西?請注意,目前文件大小超過2GB是很常見的,這是可能適合該整數的最大大小。 – 2013-02-26 18:51:53