2017-04-25 1 views
3

Nous utilisions le code ci-dessous pour obtenir le nom de l'ordinateur.OpenEdge 10.2A - Le jeu INPUT THROUGH ne fonctionne pas après Windows Update 1703 sous Windows 10

def new shared var cHost as char format "x(40)" no-undo. 
INPUT THROUGH hostname NO-ECHO. 
SET cHost. 
INPUT CLOSE. 
DISPLAY chost. 

Après avoir mis à jour nos ordinateurs (Windows 10 - 1703), cela ne fonctionne plus. Il semble SET cHost est la partie où il échoue. J'ai essayé IMPORT UNFORMATTED cHost mais cela ne fonctionne pas.

PS: Je peux obtenir le nom d'ordinateur à l'aide OS-GETENV (« NOMORDINATEUR ») mais je dois le faire en utilisant agrofourniture déclaration.


Edit: Il semble qu'il est non seulement un problème avec 10.2A mais plus général. En outre, il n'est pas seulement lié à nom d'hôte mais toutes les applications de la console et commandes MS-DOS. Maintenant, je vais essayer de remplacer INPUT THROUGH instruction avec une autre commande de progression s'il y en a, ou essayer de communiquer avec des applications de console existantes avec une autre méthode.

Répondre

0

Comme il semble comme un bug, jusqu'à ce que quelqu'un arrive avec une meilleure solution, voilà comment je vais changer mes codes:

DEF VAR cHost AS CHAR FORMAT "x(40)" NO-UNDO. 
OS-CREATE-DIR VALUE("c:\temp"). 
OS-COMMAND SILENT VALUE("hostname >c:\temp\hostname.txt"). 
INPUT FROM VALUE("c:\temp\hostname.txt"). 
IMPORT UNFORMATTED cHost. 
INPUT CLOSE. 
MESSAGE cHost. 

Ce code peut être utilisé pour d'autres commandes ms-dos et applications de la console ainsi.

DEF VAR cHost AS CHAR FORMAT "x(40)" NO-UNDO. 
OS-CREATE-DIR VALUE("c:\temp"). 
OS-COMMAND SILENT VALUE("ECHO %cd% >c:\temp\result.txt"). 
INPUT FROM VALUE("c:\temp\result.txt"). 
IMPORT UNFORMATTED cHost. 
INPUT CLOSE. 
MESSAGE cHost. 

Merci pour votre aide.

0

La première chose que je ferais est de vérifier que la commande 'hostname' fonctionne encore correctement à partir d'une fenêtre de commande.

Si l'on suppose qu'il est je coder votre extrait quelque chose comme ceci:

INPUT THROUGH VALUE("hostname"). 
IMPORT UNFORMATTED cHost. 
INPUT CLOSE. 
DISPLAY cHOST format "x(60)". 

Ce qui pourrait révéler un message d'erreur plus utile que « il ne fonctionne plus ».

Depuis NOMORDINATEUR répond à vos besoins, mais vous devez utiliser agrofourniture pour une très mystérieuse raison, vous pouvez aussi essayer:

INPUT THROUGH VALUE("echo %COMPUTERNAME%"). 
IMPORT UNFORMATTED cHost. 
INPUT CLOSE. 
DISPLAY cHOST format "x(60)". 
+0

Salut Tom, je suis heureux que vous soyez celui qui répond à ma question. J'ai vérifié, les commandes ** hostname ** et ** echo% computername% ** fonctionnent toujours. Je n'ai écrit aucun message d'erreur car il n'en donne pas. Il n'affiche rien. Il fonctionne simplement comme s'il n'y avait pas de commande d'affichage. Cependant, si vous supprimez la ligne ** SET cHost **, il affiche un écran d'éditeur de procédure avec une chaîne vide comme il se doit. J'ai essayé vos codes et c'est pareil; les codes s'exécutent mais aucun écran d'éditeur de procédure n'apparaît comme s'il n'y a pas de commande d'affichage. – aza

+0

J'ai découvert que ce problème s'applique à ** toutes les applications de console ** retournant n'importe quelle valeur. J'ai écrit des exemples d'applications de console en utilisant C# et vb.net pour tester le problème, j'ai testé avec un fichier de chauve-souris fictif aussi, le problème persiste toujours. – aza

+0

Voulez-vous dire qu'il "se bloque" à l'instruction SET (ou IMPORT) et ne passe pas à l'affichage? –

0

Il semble que le problème ne peut pas être limitée à la version OpenEdge 10. Je suis sous Windows 10 Winver 1703 périphérique de développement, en utilisant Progress/Openedge 8.3 et je ne suis plus en mesure d'exécuter cela.

def var a as char format "x(70)". 

    input through "echo %cd%" no-echo. 
    import unformatted a. 
    input close. 

    message a. pause. 

Ceci fonctionne sur un serveur Windows 2012 R2, en utilisant progress/openge 8.3.

Où ne fonctionne plus, il quitte simplement à partir du programme lorsqu'il frappe la commande d'importation.

+0

Ensuite, c'est un problème plus général. Si vous le mettez dans une procédure et l'appelez, il ne sort que de la procédure appelée, le programme continue à fonctionner. J'ai testé pour différents cas; il semble que ce problème se produit pour ** toutes les applications de console ** et ** commandes ms-dos **. J'espère que quelqu'un trouvera une solution parce qu'il y a des appels de programmes que je ne peux pas changer puisqu'ils sont écrits dans d'autres langues. Cela signifie également que nous ne pouvons plus communiquer avec d'autres programmes :(. – aza