2014-06-16 1 views
1

J'ai essayé de compiler un programme simple je l'ai écrit, mais je reçois l'erreur suivante:d3 choisir tentative d'écriture dans la mise à jour du fichier protégé

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

Le fichier chris_programs est un pointeur Q dans le répertoire/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 

est ici l'entrée md pour le fichier chris_programs:

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

Répondre

1

Je suis heureux de vous voir vous obtenez à l'aise avec ces super-q-pointeurs. Le problème ici est que le module d'objet va dans le Dict du fichier hébergeant la source BASIC. Mais lorsque vous utilisez un chemin d'accès au système hôte sans spécifier de dictionnaire, il ne sait pas où placer le code objet. Pour cela, je recommande ce qui suit: (. Copiez votre q-pointeur MD à un autre nom premier ou vous ne serez pas en mesure d'utiliser le même nom)

create-file dict chris_programs 3 

Il y aura un défaut q-pointeur mis dans ce fichier dict, qui pointe toutes les références vers le fichier de données sur le dict (donc dict et data sont le même espace). Vous pouvez ensuite copier le q-pointeur vous avez déjà (renommé par-dessus) dans le dict pour remplacer cet élément:

copy md renamed_pointer (o 
to: (dict chris_programs 

Alors maintenant, votre source sera dans le système de fichiers hôte et l'objet sera en D3.

Il est un moyen d'avoir les deux dict et des données dans le système d'exploitation hôte, mais je ne me rappelle pas la syntaxe à ce moment. Je vais essayer de mettre à jour ça plus tard si j'ai l'info.

Je recommande contre un suivi « mais je veux vraiment tout dans le système d'exploitation hôte! » Le code de l'objet ne sert à rien en dehors du SGBD, donc vous pourriez tout aussi bien le garder là. En ce qui concerne la source, je mets aussi une source au niveau de l'OS pour le contrôle de la source (intégration avec Subversion), pour l'utiliser avec d'autres éditeurs, et pour partager avec d'autres SGBD MV. Sauf si vous faites quelque chose comme ça, je vous conseille de garder toutes les sources et objets dans le SGBD. Si vous voulez un meilleur éditeur, AccuTerm wED (Windows Editor) est une interface graphique avec mise en évidence de la syntaxe et de nombreuses autres fonctionnalités. Nous pouvons en discuter séparément si c'est votre objectif.


EDIT: Ce qui suit est destiné à fournir une solution au problème souhaité, en dehors des limites des mesures déjà prises défectueuses.

Revenons aux fondamentaux: Le code source est dans le fichier de données, objet va dans le dictionnaire. Voici comment lier la source au niveau du système d'exploitation à l'objet au niveau du SGBD.

create-file dict bp1 3 

Il y aura un défaut q-pointeur mis dans ce fichier dict, qui indique toute référence au fichier de données en arrière sur le dict (si dict et les données sont le même espace). Vous pouvez remplacer ce pointeur réflexif par un nouveau sur le système d'exploitation hôte. Utilisez ED ou tout autre outil d'édition que vous préférez, mais l'idée est la suivante:

ed dict bp1 bp1 

L'élément de pointeur dans le dict a le même nom que le dict.Remplacer cet article par le texte suivant:

01 q 
02 
03 /path/foldername 

Les numéros de ligne sont uniquement pour référence, ne tapez pas ceux de substituer le chemin au besoin.. Votre utilisateur D3 (tel que spécifié dans le fichier OS pick0) doit avoir accès à ce chemin.

Alors maintenant, vous devriez être en mesure de faire quelque chose comme ceci:

ED BP1 TEST1 
01 CRT "SUCCESS" 

COMPILE BP1 TEST1 
RUN BP1 TEST1 

Vous trouverez dans TEST1/chemin/foldername. Si vous LISTEZ DICT BP1, vous verrez le pointeur BP1 vers le fichier de données ainsi qu'un élément pour le module d'objet pour TEST1. Plutôt que de rééquiper ce que vous avez, s'il vous plaît suivez ceci et vous devriez avoir du succès dans quelques minutes.

Voir note ci-dessus à propos de "mais je veux vraiment tout dans le système d'exploitation hôte!"

Une autre approche du contrôle de la source (pas la même chose mais proche): Conservez tout dans le SGBD. Périodiquement, virez votre source vers un fichier de sauvegarde au niveau du système d'exploitation ou copiez-la dans un dossier. Ensuite, contrôlez la source des données du système d'exploitation. Ceci élimine la connexion directe entre le système d'exploitation et les programmes, que la plupart des utilisateurs de D3 ne comprennent pas.

+0

J'ai un fichier dans l'os appelé fileprinter, situé dans d3 sous la forme d'un q-pointeur appelé chris_programscopy. Je me suis débarrassé du chris_programs q-pointer, puis j'ai créé un fichier ordinaire appelé chris_programs. Alors j'ai créé create-file dict chris_programs 3, et j'ai copié md chris_programscopy (o (dict chris_programs.) Je reçois toujours la même erreur, une idée de ce que j'ai fait de mal? – zelinka

+0

Il y a beaucoup de choses qui ne tournent pas rond. Pourquoi essayez-vous d'utiliser le système d'exploitation hôte pour les programmes: Si vous conservez tout dans les fichiers hachés D3, tout cela disparaît.Copiez votre code sourceprinter dans un fichier de données, puis compilez-le. Dict .. Vous pouvez exécuter à partir de là – TonyG

+0

Veuillez répondre ou marquer la question comme réponse – TonyG

Questions connexes