1
我使用Ada的目錄庫和Command_Line庫,並讀取命令行中給出的文本文件的字符數(大小),然後將其分配給一個整數。Ada - 將File_Size轉換爲整數
Character_Count := Size(Argument(1));
編譯器告訴我,整數和FILE_SIZE不匹配,即使FILE_SIZE是整數的一個亞型,我敢肯定。我如何轉換它?
我使用Ada的目錄庫和Command_Line庫,並讀取命令行中給出的文本文件的字符數(大小),然後將其分配給一個整數。Ada - 將File_Size轉換爲整數
Character_Count := Size(Argument(1));
編譯器告訴我,整數和FILE_SIZE不匹配,即使FILE_SIZE是整數的一個亞型,我敢肯定。我如何轉換它?
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
。
啊,很高興知道!我確實需要Character_Count是一個整數,所以轉換是真棒。非常感謝。 – chazbot7 2013-02-26 01:39:23
@ user2067941:*爲什麼*你需要'Character_Count'作爲'Integer'? (很可能你真的沒有。) – 2013-02-26 01:40:38
@ user2067941 - 在這裏備份Keith。設計一個好的Ada程序的很大一部分是仔細挑選你的類型。你真的有一個很好的理由說明,爲什麼你不能在任何值的地方使用'File_Size'類型,或者需要從中派生的東西?請注意,目前文件大小超過2GB是很常見的,這是可能適合該整數的最大大小。 – 2013-02-26 18:51:53