Ver la Versión Completa : [Sintaxis] Obtener una ruta en Red
Roger
11 de abril de 2015, 01:49
Amigos del foro
Cual es codigo para saber la ruta de red.
Deseo saber por programa que me indique cuando estoy ejecutando cual es mi ruta red
ejemplo \\Roger\d\VET-SIS\Debug\
Esto para que funcione en multiusario sin necesidad de poner la ruta en los archivo
o que sugerencia me dan.
SELECT AGENDA ASSIGN TO " \\Roger\d\VET-SIS\Debug\ AGENDA.DAT" ORGANIZATION INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS AGENDA-KEY
LOCK MODE IS AUTOMATIC WITH LOCK ON RECORD
FILE STATUS IS FS-10.
esto es lo que hacia en los archivo.
Josber
11 de abril de 2015, 13:19
No sé a que te refieres exactamente, yo tengo puesto en todos los ficheros, una rutina que coge de un fichero de principal de control, la ruta de datos, y hace el montaje de la variable con el nombre del fichero + número de empresa + más la ruta de datos, todo metido en un fichero .cpy, que incluyo en el evento opened del form con un #INCLUDE
000001*
000002* MONTAR VARIABLE DE CODIGOS de BANCOS
000003*
000010 MOVE 0 TO TAMA.
000020 MOVE TAMANO TO TAMA.
000030 INITIALIZE FILE33.
000040 MOVE RUTA TO FILE33.
000050 STRING WEMP DELIMITED BY SIZE INTO FILE33 WITH POINTER TAMA.
000060 STRING "_0033.JBL" DELIMITED BY SIZE INTO FILE33 WITH POINTER TAMA.
000999
En RUTA, tengo definido la carpeta donde se encuentran los archivos, me da lo mismo que sea de red que local, y en TAMANO, se guarda la longitud (FUNCTION STORED-CHAR-LENGTH (RUTA)) de la variable RUTA, luego todo es cuestión de hacer el montaje, y la ruta de datos, siempre la sé porque está guardada en RUTA.
No sé si es esto lo que quieres, si no es así, explicalo de otra forma a ver por donde van los tiros.
Un saludo.-
Roger
11 de abril de 2015, 17:33
Gracias por responder JOSBER
Inicialmente tengo un archivo donde pongo las rutas, datos de empresa etc
pero estos datos se ingresan por teclado, necesita algo similar al "cmfolder" donde me dice la direccion en este caso la ruta de red.
Te comento comercializo un software que lo tengo en un instalador donde automaticamente hace la instalacion del power, ocx , fonts etc. todo esto en un disco CD-R que lo compran a un distribuidor, como te daras cuenta yo no se el usuario donde lo instalara en C:, D:
por el "cmfolder" detecto la direccion y lo envio al archivo hasta ahi todo bien en monousuario
cuando esta en red esta direccion tendria que cambiar por la ruta red solo necesito detectar la ruta para incrustar en el archivo en forma automatica.
SELECT AGENDA ASSIGN TO " \\Roger\d\VET-SIS\Debug\ AGENDA.DAT" ORGANIZATION INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS AGENDA-KEY
LOCK MODE IS AUTOMATIC WITH LOCK ON RECORD
FILE STATUS IS FS-10.
en sintesis como obtengo esta ruta "\\Roger\d\VET-SIS\Debug\" algun comando.
:busca:
Kuk
11 de abril de 2015, 22:13
Esa ruta no la puedes obtener amigo Roger, porque depende de la configuracion de la red.
Lo que debes hacer es lo que tengo hecho yo en un programa, modos de ejecucion Servidor y cliente. Luego los que se ejecutan en modo cliente, son los que deben ser "conectados" al servidor. Ahi se necesita un dialogo de seleccion de carpeta, donde se navegara hasta la ruta del servidor en red y dicha ruta se guardara en un archivio local.
La separacion de archivos local y en red se haria en 2 variables correspondientes, en GLOBAL EXTERNAL que se cargarian en el evento Opened y se compartirian en toda la aplicacion.
Josber
11 de abril de 2015, 22:37
Es más o menos lo que yo tengo KUK, un fichero donde se guarda la ruta, una variable para si es local y otra variable para si es en red. Roger, yo creo que no hay otra manera de hacerlo, a no ser que con el instalador, el usuario indique la ruta, la grabes en una clave en el registro, pero el usuario debe de indicar en el instalador la ruta tanto local como de red, y de ahí la leas con tu programa.
Un saludo.-
Roger
11 de abril de 2015, 23:04
Amigos
Tengo una idea en el anterior foro vi que puedo usar las Apis de WINDOWS "GetComputerName"
y saber el nombre del equipo pero no se la sintaxis.
Ruta "\\Roger\d\VET-SIS\Debug\" donde "\\roger\" es el nombre del equipo se puede saber por cmd con el comando HOSTAME y la segunda parte "\d\VET-SIS\Debug\" lo puedo obtener por
el cmfolder que me envia "d:/VET-SIS/Debug/" reemplazo "\" por "/" y elimino ":"
luego usando String junto toda la cadena.
Si tienen los codigos de ese api me facilitan la cadena solo bastaria poner la instruccion en el opened de form y automaticamente estaria detectando la ruta red.
:yoquese:
Rapinto
12 de abril de 2015, 00:33
Roger,
Não percebi bem. Mas se é a api ´GetComputerName,
@OPTIONS NOALPHA
************************************************** ***************
* Copyright (c) 2000 R.P.S.
*
* Last Modified: 28 Jul 2000
************************************************** ***************
IDENTIFICATION DIVISION.
PROGRAM-ID. MACHINE.
AUTHOR. Rui Pinto - Jul 2000.
*-----------------------------------------------------------------
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
*-----------------------------------------------------------------
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
01 COMPNAME PIC X(032) VALUE SPACE.
01 LENCOMPNAME PIC S9(009) COMP-5 VALUE ZERO.
01 RESULT PIC S9(009) COMP-5 VALUE ZERO.
LINKAGE SECTION.
*----------------- Parameters for CBL_ routines ------------------
01 COMPUTERNAME PIC X(032).
*--------------- End Parameters for CBL_ routines -----------------
PROCEDURE DIVISION USING COMPUTERNAME.
MAIN SECTION.
MAIN-00.
*>> Initialize variables.
MOVE 32 TO LENCOMPNAME.
CALL "GetComputerNameA" WITH STDCALL LINKAGE USING
COMPNAME
LENCOMPNAME
RETURNING RESULT.
MOVE COMPNAME TO COMPUTERNAME.
MAIN-99.
END PROGRAM MACHINE.
Saludos,
Rui Pinto
Rapinto
12 de abril de 2015, 01:27
Roger,
Fiz um pequeno OCX que podes incluir na tua aplicação.
Não testei muito bem (pode ter bugs)
Anexo um exemplo em PowerCobol9
A instrução é muito simples:
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 caminho PIC X(256).
01 hwnd PIC S9(9) COMP-5.
PROCEDURE DIVISION.
MOVE HWND OF POW-SELF TO HWND.
INVOKE apppath1 "AppPath" USING hwnd RETURNING caminho.
MOVE caminho TO "CAPTION" OF CMSTATIC1.
Experimenta e diz-me se funcionou para o que pretendias. Funciona para rede ou local.
Se tiveres dúvidas, diz-me. Dá para rede ou maquina local.
Saludos,
Rui Pintop
Roger
12 de abril de 2015, 02:02
Amigo RUI
Tus codigos estan buenos pero me equivoque debi poner "Gethostname"
y es lo que necesito.
Los mismos datos lo obtengo de MOVE "path" OF CmFolder1 TO CAPTION OF CMSTATIC2.
solo me falta el nombre de la maquina.
:malo:
Josber
12 de abril de 2015, 11:24
Roger, en el mensaje que puse saber las carpetas de Windows (http://www.cobolforo.es/showthread.php?t=72), en el código tienes como sacar el nombre de la máquina.
Un saludo.-
Rapinto
12 de abril de 2015, 15:19
Roger,
Desculpa-me mas então não entendo o que pretendes.
No post acima, enviei a rotina para obter o nome da máquina local.
(GetComputerName)
Em seguida, entendi que poderias querer o caminho a partir do qual executaste o EXE.
(ocx para obter Caminho completo do EXE em execução).
Não entendo o que pretendes fazer.
Cuidado com o "path" OF CmFolder1. Esta instrução dá-te "Default PATH" e não o caminho do Executável.
Isto é, se mudares o "path" of cmfolder1 em run-time para outro caminho, deixas de saber qual o caminho do executável.
Saludos,
Rui
Roger
12 de abril de 2015, 15:42
Rui
Si en cmfolder tengo que tener cuidado con el path , esta ruta lo tomo al iniciar el proyecto en el opened y lo envio a un archivo .
Josber eso es lo que buscaba el nombre del equipo "GetComputerNameA" estoy simplificando tus codigos creo con eso ya tengo armado la ruta red.
:apl:
Roger
1 de mayo de 2015, 03:33
Josber
Cuando pego tus codigos a un boton
01 PATH-ARCHIVO PIC X(400).
01 RUTA PIC X(400).
* ---- VARIABLE PARA EL NOMBRE DEL ORDENADOR
*
01 RESULT PIC S9(009) COMP-5 IS GLOBAL EXTERNAL.
01 COMPUTERNAME PIC X(032) IS GLOBAL EXTERNAL.
01 COMPNAME PIC X(032) VALUE SPACE.
01 LENCOMPNAME PIC S9(009) COMP-5.
*
*
01 POW-PCMLIST OBJECT REFERENCE POW-CLISTITEM.
01 WK-IDX PIC S9(9) COMP-5 VALUE 0.
*
*
01 HWINDOW PIC S9(009) COMP-5 VALUE ZERO.
01 FOLDER PIC S9(009) COMP-5 VALUE 38.
*
01 WDSPTITLE PIC X(040).
01 WNULL PIC X(001) VALUE LOW-VALUES.
*
01 PIDL PIC S9(009) COMP-5 VALUE ZERO.
01 PSZPATH PIC X(512) VALUE SPACE.
01 SELFOLDER PIC X(512) VALUE SPACE.
PROCEDURE DIVISION.
*
* ----- * SACAMOS EL NOMBRE DEL ORDENADOR
*
MOVE 32 TO LENCOMPNAME.
*
CALL "GetComputerNameA" WITH STDCALL LINKAGE
USING
BY REFERENCE COMPNAME
BY REFERENCE LENCOMPNAME
RETURNING RESULT
END-CALL.
INSPECT COMPNAME REPLACING ALL LOW-VALUES BY SPACE.
CANCEL "GetComputerNameA".
me bota error LNK2001:unresolved external symbol _GETCOMPUTERNAMEA@8
Funciones exe:Fatal error LNK 1120: 1 unresolved externals
inserte en el proyecto advapi32.lib ¿Cual es el problema? :perdon:
Josber
1 de mayo de 2015, 09:35
Creo que te falta poner la opción ALPHAL(WORD)
Un saludo
Roger
1 de mayo de 2015, 16:38
Josber
He revisado tu form y no encuentro donde esta ALPHAL(WORD) serias tan amable de "desasnar" a este usuario.:)
Rapinto
1 de mayo de 2015, 19:41
Roger,
Ve a imagem anexa.
Saludos,
Rui
Roger
1 de mayo de 2015, 22:40
Rui y Josber
Cada dia me ilustro mas estaba recontra escondido era lo que faltaba.
Añadido despues de 20 horas 36 minutos
Rui
Al final despues de tanto trastear en una red local logre que sea automatico el envio de la ruta y fue con el ocx de rui :hi:
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.