Bien, esta bien tu esfuerzo, pero veo claramente que es muy rustica ya que usas commando DOS
porque no lo haces de esta forma.
CUANDO SE INSTALE POR PRIMERA VES EL PROGRAMA HACE QUE EL ARCHIVO INI DE WINDOWS.
XSERIE =SYS(9) &&&ESTO TE REGRESA LA SERIE DEL DISCO DURO.
ALMACENALA EN EL ARCHIVO INI DE WINDOWS.
QUE BUSQUE EL PARAMETRO SI NO LO ENCUENTRA QUE TE ENVIE UNA PANTALLA DE REGISTRO Y TE TENDRAN QUE LLAMAR.
PODES TRABAJAR CON UNA SERIE ESPECIFICA QUE DIGITES TIPO CLAVE.
CON ESTA RUTINA.
SU USO.
CLARO
XSERIE =SYS(9)
=WriteFileIni("C:\WINDOWS\WIN.ini","Defaul","SERIE",XSERIE)
**SI REVISAS TU WIN.INI TENDRA ESTO AL FINAL
[Defaul]
SERIE=55181-335-2552777-03660
ASI LO VERIFICAS SI EXISTE.
RESPUESTA = ReadFileIni("C:\WINDOWS\WIN.ini","Defaul","SERIE")
?RESPUESTA &&&ESTO TE MOSTRARA
55181-335-2552777-03660
ABAJO TE COPIO LA RUTINA NO ES NADA SOFISTICADO DIRIA YO YA QUE ESO DE LLER ARCHIVOS INI NO ES NUEVO PERO ESTA MENOS COMPLICADO QUE TU CODIGO YA QUE ESTA RUTINA LO HACE TODO POR TI.
bYE ESPERO TE SIRVA
CUALQUIER PREGUNTA ESTOY EN LINEA
[email protected]
*COPIA EL CODIGO DE ABAJO EN TU PROGRAMA PRINCIPAL
** o en un programita donde tengas tus rutinas
**ya sabes al inicio set procedure tur rutinas si fuese este el caso sino copialo en tu programa princiapal este codigo.
FUNCTION WriteFileIni(tcFileName,tcSection,tcEntry,tcValue)
*----------------------------------------------------
* Escribe un valor de un archivo INI.
* Si no existe el archivo, la sección o la entrada, la crea.
* Retorna .T. si tuvo éxito
* PARAMETROS:
* tcFileName = Nombre y ruta completa del archivo.INI
* tcSection = Sección del archivo.INI
* tcEntry = Entrada del archivo.INI
* tcValue = Valor de la entrada
* USO: WriteFileIni("C:\MiArchivo.ini","Default","Port","2")
* RETORNO: Logico
*----------------------------------------------------
DECLARE INTEGER WritePrivateProfileString ;
IN WIN32API ;
STRING cSection,STRING cEntry,STRING cEntry,;
STRING cFileName
RETURN IIF(WritePrivateProfileString(tcSection,tcEntry,tcValue,tcFileName)=1, .T., .F.)
ENDFUNC
*
----------------------------------------------------
FUNCTION ReadFileIni(tcFileName,tcSection,tcEntry)
*----------------------------------------------------
* Lee un valor de un archivo INI.
* Si no existe el archivo, la sección o la entrada, retorna .NULL.
* PARAMETROS:
* tcFileName = Nombre y ruta completa del archivo.INI
* tcSection = Sección del archivo.INI
* tcEntry = Entrada del archivo.INI
* USO: ReadFileIni("C:\MiArchivo.ini","Default","Port")
* RETORNO: Caracter
*----------------------------------------------------
LOCAL lcIniValue, lnResult, lnBufferSize
DECLARE INTEGER GetPrivateProfileString ;
IN WIN32API ;
STRING cSection,;
STRING cEntry,;
STRING cDefault,;
STRING @cRetVal,;
INTEGER nSize,;
STRING cFileName
lnBufferSize = 255
lcIniValue = spac(lnBufferSize)
lnResult=GetPrivateProfileString(tcSection,tcEntry,"*NULL*",;
@lcIniValue,lnBufferSize,tcFileName)
lcIniValue=SUBSTR(lcIniValue,1,lnResult)
IF lcIniValue="*NULL*"
lcIniValue=.NULL.
ENDIF
RETURN lcIniValue
ENDFUNC
**********************