2011-11-12 70 views
7

我對Lazarus/FreePascal非常新,而且我之前沒有Delphi經驗。我希望能夠在WIndows和Linux上獲得操作系統版本信息和用戶帳戶類型。我看到有一個Windows系統API,但在Linux上找不到類似的東西。使用Lazarus和FreePascal獲取Linux系統信息

是否有Lazarus/FreePascal的Linux系統API?如果是,我該如何使用它?

+0

在Linux上,您需要調用'libc'。我不知道FPC庫是否包裝了你。我希望並期望他們這樣做。 –

+0

然而,你不想在freepascal中使用「libc」單元,因爲這是折舊的。 – Noah

回答

4

在Linux上沒有這樣的統一點,你可以寫一個頭然後繼續使用它。而且,由於Linux的許多部分都是獨立版本,所以沒有單一版本的東西。

也就是說,內核版本可以通過baseunix.fpuname()獲得。發行版本很難,因爲每個發行版以不同的方式存儲他的版本信息。

第一步是識別你需要的信息,以及一個大概的想法在哪裏得到它(例如像libc這樣的系統庫,諸如sysctl和/ proc之類的附加信息,以及桌面系統上的高級系統是否允許查詢信息,例如通過DBUS)。那些引用不會總是在Pascal中。然後在這裏提出具體問題,或者在Lazarus論壇/ maillists上提問。

但是沒有WMI類似的功能總是有效並且非常不變。 Linux現在仍然是一個黑客和調解者操作系統,它們被分割成幾個獨立的發行版,但幾乎沒有硬性證券。 DBUS和HAL正朝着這個方向發展,但versionitis和過渡到一個新的圖書館使這條路線不那麼普遍。

+0

有LSB,但至少在一些發行版中存在像「lsb_release」這樣的工具。 –

+0

當然有辦法,但他們都很努力。消息的一點是,它將比Windows更難,而且不會是一次性努力。對於每一個額外的屬性,都可能涉及工作。首先想想你的要求很長,很難。 –

+0

感謝您的信息。 – Shade

1
  1. 有一個「Unix」單元,你可以檢查你想要的是否在那裏。

我希望能夠得到OS版本信息

這是什麼意思是什麼呢?您可以使用「uname -a」(從TProcess調用)的輸出,具體取決於您的需要。還有像/ etc/redhat-release等文件,但它們可能因分發而異。

以及Windows和Linux上的用戶帳戶類型。

可能你想在Unix中看到的是用戶所在的組(有多種方法可以做到這一點)。

我看到有一個Windows系統API,但在Linux上找不到類似的東西。

Linux傾向於遵循「一切都是文件」的方法,所以通常有一個文件(或僞文件),你可以閱讀你想要的信息。一般來說,Unix比Windows更靈活。例如,在Windows中,可能會有一個API調用來獲取處理器數量或以Mhz爲單位的速度。在Linux中,您可以查看/ dev/cpuinfo並將該信息解析爲文本文件。

有各種各樣的Unix,甚至在Linux中,各種分佈。你當然可以通過暫時支持某些發行版來縮小你想要做的範圍。