如何將SQL Server類型numeric(38,0)
表示爲IDL類型(COM類型庫)?如何將SQL Server類型numeric(38,0)表示爲IDL類型(COM類型庫)?
非常感謝您的幫助!
P.S.例如,SQL Server類型int
在IDL中是long
類型。
如何將SQL Server類型numeric(38,0)
表示爲IDL類型(COM類型庫)?如何將SQL Server類型numeric(38,0)表示爲IDL類型(COM類型庫)?
非常感謝您的幫助!
P.S.例如,SQL Server類型int
在IDL中是long
類型。
號碼在COM可以是:
Int64
) - 因此可達19個顯著數字;double
) - 從15 - 17位重要的十進制數字精度。因此,對於38位數字,這些類型都不符合您的請求。您可以通過Int64
實現最佳分辨率,但是如果您的值高於9,223,372,036,854,775,807,則會發生溢出。
我認爲更容易的兼容類型是一個很好的舊BSTR(widestring
),其中您可以存儲儘可能多的數字 - 但編碼爲純文本。在代碼方面,您需要有一個BCD庫來處理您的高分辨率數字:沒有Delphi本機類型(即使extended
)也有這樣的分辨率。
編輯:另一種選擇(感謝Ondrej提出的建議)是一個字節數組。恕我直言,一個COM二進制數組不如簡單的文本內容(即使使用較少的內存,速度效率較低)。編碼選項可能是good old BCD。您可能能夠在COM對象的兩側找到庫。
感謝您的回答。但問題是關於IDL類型(不是Delphi類型)。 – Dmitry 2012-07-26 19:38:47
@Altaveron爲什麼包含Delphi標籤?我仍然沒有看到IDL可以代表這種類型的任何理由。是什麼讓你認爲它可以? – 2012-07-27 06:08:17
IDL是一個通用術語。我談到了COM類型。 「整數多達64位」,「浮點數值高達64位」,BSTR是COM類型。既然你把「Delphi」標籤放在你的問題中,我也會命名符合這些COM類型的Delphi類型。這些COM類型與我命名的Delphi類型之間存在完美匹配。 – 2012-07-27 11:27:59
如果您可以用IDL表示該類型,我會很驚訝。 – 2012-07-26 14:23:38