2014-06-16 43 views
1

我試圖編譯一個簡單的程序我寫的,但我收到以下錯誤:D3挑試圖寫入更新受保護的文件

:compile chris_programs fileprinter 
fileprinter 
. 
[235] attempt to write into update protected file! 

的chris_programs文件是問答指向目錄/ U/chris_programs。

# pwd 
/u/chris_programs 
# ls -al 
total 16 
drwxrwxrwx 2 root  system   256 Jun 16 06:58 . 
drwxrwxrwx 15 root  system   4096 Jun 13 17:40 .. 
-rw-rw-rw- 1 root  system   72 Jun 16 07:03 fileprinter 

下面是chris_programs文件MD項:

DICT md 'chris_programs' size = 45 
01 Q 
02 
03 /u/chris_programs 

回答

1

很高興見到你得到舒適的那些超級Q-指針。這裏的問題是對象模塊進入托管BASIC源文件的Dict。但是,如果您在未指定字典的情況下使用主機操作系統路徑,則不知道在何處放置目標代碼。在此,我提出以下建議:(你MD Q-指針先複製到一個不同的名稱,否則您將無法使用相同的名稱)

create-file dict chris_programs 3 

會有一個默認將q指針放入該dict文件中,該文件指向字典中任何對數據文件的引用(因此字典和數據是相同的空間)。然後,可以將Q-指針,你已經有(按上述重命名)複製到字典來替代項:

copy md renamed_pointer (o 
to: (dict chris_programs 

所以,現在你的源會在主機文件系統和對象將在D3。

有一種方法可以在主機操作系統中同時使用字典和數據,但我現在還不記得語法。如果我收到信息,我會盡力在後面更新。

我建議不要跟進「但我真的希望在主機操作系統中的一切!」目標代碼無法在DBMS之外使用,所以您不妨將它保留在那裏。至於源代碼,我也爲源代碼控制(與Subversion集成)提供了一些源代碼,可以與其他編輯器一起使用,並與其他MV DBMS共享。除非你正在做這樣的事情,否則我建議你將所有源代碼和對象保存在DBMS中。如果你想要一個更好的編輯器,AccuTerm wED(Windows編輯器)是一個帶有語法高亮和許多其他功能的GUI。如果這是您的目標,我們可以單獨討論。


編輯:旨在提供一種解決方案,以所希望的問題,已經採取了故障的步驟的限制以外以下。

讓我們回到基本面:源代碼位於數據文件中,對象位於字典中。這是您如何將OS級別的源代碼鏈接到DBMS級別的對象。

create-file dict bp1 3 

會有一個默認的Q-指針放入該字典文件,回到那個字典,它指向的數據文件的任何引用(所以字典和數據都是一樣的空間)。您可以使用新的反射指針替換主機操作系統。使用ED或任何你喜歡的編輯工具,但想法是:

ed dict bp1 bp1 

該字典中的指針項與dict具有相同的名稱。將該項目替換爲以下內容:

01 q 
02 
03 /path/foldername 

行號僅供參考,請勿在其中鍵入。根據需要替換路徑。您的D3用戶(在pick0 OS文件中指定)必須具有對該路徑的r/w訪問權限。

所以,現在你應該可以做這樣的事情:

ED BP1 TEST1 
01 CRT "SUCCESS" 

COMPILE BP1 TEST1 
RUN BP1 TEST1 

你會發現TEST1在/路徑/文件夾名。如果您列出了DICT BP1,您將看到指向數據文件的BP1指針以及針對TEST1的對象模塊的項目。

與其改造您所擁有的產品,只需遵循這一點,您應該在幾分鐘內取得成功。

請參閱以上有關「但我真的希望在主機操作系統中的一切!」

源代碼控制的另一種方法(不一樣但接近):將所有內容都保存在DBMS中。定期將源代碼轉儲到操作系統級備份文件,或複製到文件夾。然後源控制該OS數據。這消除了操作系統和程序之間的直接連接,大多數D3人不理解。

+0

我在os中有一個名爲fileprinter的文件,位於d3中,作爲名爲chris_programscopy的q指針。我擺脫了q指針chris_programs,然後創建了一個名爲chris_programs的普通文件。然後,我創建了文件字典chris_programs 3,並且複製了md chris_programscopy(o(dict chris_programs。 )我仍然得到相同的錯誤,有什麼想法我做錯了嗎? – zelinka

+0

這裏有很多錯誤,讓我們繼續。你爲什麼要爲程序使用主機操作系統:如果你把它全部保存在D3散列文件中,那麼所有這些都會消失。將源文件打印機代碼複製到數據文件項中,然後編譯它。快譯通,你可以從那裏進行回答運行。 – TonyG

+0

請回復或標誌的問題。謝謝。 – TonyG

相關問題