Dialogar con el monedero de una criptomoneda

Las criptomonedas suelen tener daemons que ofrecen funciones para ser usadas mediante consola o por curl. Las respuestas suelen darlas en jsonrpc

Desde Windev se pueden invocar esas funciones y obtener los resultados. Muestro el código para una moneda llamada vcash

lcCadena is string=[
	{"jsonrpc":"2.0","id":"1337","method":"getbalance", "params": [] }
]

ResStart is boolean = HTTPRequest("http://127.0.0.1:9195","","",lcCadena,"application/json")
lcResultado is string

IF ResStart = True THEN
	lcResultado  = HTTPGetResult(httpResult)
END

sBalance is Structure
	result1 is string
	id is string
END

Balance is sBalance

Deserialize(Balance,lcResultado, psdJSON)

Info(Balance.id)

Si no quieres trabajar con un monedero local, puedes tener info desde un explorador de cadenas como: explorer.vchain.info

Y podrias escribir:

ResStart is boolean = HTTPRequest("https://explorer.vchain.info/ext/getbalance/VifzHiu9MFyUTmHmcHsAStergviBeNM2Pjz")
lcResultado is string

IF ResStart = True THEN
    lcResultado  = HTTPGetResult(httpResult)
END

Concatenar campos de MySQL

MySQL tiene la opción de unir campos con CONCAT

Por ejemplo:

SELECT fkcentro+fkidfactur+t70clinart FROM

Se deberia escribir:

SELECT CONCAT(fkcentro, fkidfactur, t70clinart)

Esto funciona bien… pero con tablas grandes es lentisimo… Es mejor excluirlos de una select.

Así por ejemplo esta SELECT

DELETE FROM ttab70 ;
WHERE fkcentro = «001» ;
AND (nhistorico = 0 OR nhistorico IS NULL) ;
AND fkcentro+fkidfactur+t70clinart NOT IN ;
(SELECT fkcentro+fkidfactur+t70clinart FROM _tmpdel_001_ttab70_ultima_sincro)

Se deberia escribir como:

DELETE FROM `ttab70`
WHERE fkcentro = «001» AND (nhistorico = 0 OR nhistorico IS NULL)
AND (fkcentro,fkidfactur,t70clinart) NOT IN
(SELECT fkcentro,fkidfactur,t70clinart FROM `_tmpdel_001_ttab70_ultima_sincro`)

Contenido de LST

LST 108
WinDev/WebDev/WinMob
– Retormas automaticamente descargas interumpidas de ficheros
– Ejemplo para las tres plataformas de pequeña aplicacion de Gestion CLEANZY
– 3 ejemplo de programación de tratamiento de textos
– Gestion de un BOT con el framework de Microsoft
– Pestañas dinámicas con ventanas internas y barras de scroll
– Conectar la mensajería WinDev con los emails
– Design Patern
– HFSQL con grandes volumnenes de datos
– Guardar los parametros de configuración para diferentes perfiles
– Memorizar diferentes colores de lineas de una tabla
– Guardar una base de datos GDS
– Sesión IMAP en GMail
– Crear indices en caliente para HFSQL
– Como variar el color de las variables en el editor de codigo
– Como crear una cita en el campo planning
– Como vincular una imagen de 5 estados a una pestaña dinamica
– M2M entre Windev y SigFox mediante Rasberry Pi

WinDev
– Campo tabla con calculos dinámicos en celdas
– Gestion de Layouts. Una misma ventana con diferentes apariencias (a partir de la 22)
– Usar Groupware con una identificación personalizada

WinDev Mobile
– Acceder al API de WordPress
– Comunicas una aplicación Android con un sitio Web
– Usar aplicaciones de terceros desde android
– Campo Cámara para codigos de barras
– Cómo recuperar el numero de versión de la APK

WebDev
– Diseño adaptativo. Los campos cambian al redimensionar las pantallas
– Efectos sobre una imagen al hacer scroll
– PayBox
– Dimensionar el calendario
– re-encuadrar imagen

LST 107

WinDev
– Analizar e identificar el contenido de las fotos
– Editor de imagenes para usuario final que le permite hacer comentarios/modificaciones
– Crear dinamicamente campos e interfaces especificos
– Compartir elementos del proyecto via GDS y mantenerlos en version 21 y 22
– Memorizar la configuración de los widgets de un dashboard
– Acceder a la base de datos de registro de una aplicación de 64 desde una de 32
– El campo Mapas
– Poner un popup en la zona de notificación de Windows
– Campo agenda. Uso de cortar y pegar

WebDev
– Creación de Bots
– Clave virtual aleatoria para asegurar el acceso a una web
– Usar el clipboard
– Truco: Cómo construir dinamicamente una cadena RTF

WinMobile
– Una presentación especifica para cada linea
– Donde guardar la base de datos/ los ficheros de configuración etc… en Android
– El campo slide para desbloquear aplicaciones mobiles

WinDev/WebDev/WinMobile
– Ejemplo en las tres plataformas de aplicación de gestión de imagenes
– Utilidad que simplifica el consumo de servicios REST HTTP
– Generar codigos de barras para tickets y codigos de descuento.
– Como tracear un WebService
– Optimizar SQL (uso jerarquico versus transversal)
– El campo potenciometro
– Tecla rapida para posicionar el explorador de proyectos en el lugar correcto
– Poner un salto de linea en los toast
– Truco: forzar el refresco de una ventana o pagina
– Truco: genear numeros de serie consecutivos
– Truco: cómo establecer los margenes de un documento PDF
– Truco: cómo construir una cadena por programación

En Frances en: http://stg.webdev.info/publicationSt_WEB/fr/exlst.awp

Traerte los nombres de los ficheros de una carpeta por FTP

conex is int

conex = FTPConnect("ftp.myweb.com", "myuser", "mykey")

IF conex < 0 THEN
   //info("no hay conexion")
   RETURN
END

// se usa para preparar la cadena de devolucion
cCadena is string

FTpFileList is string = FTPListFile(conex, "/www/ots/201705/*.PDF",FileList,ftpFile)

afile is string

FOR EACH STRING afile OF ResName SEPARATED BY CR
    Info(afile)
END

//******* Procedures
PROCEDURE FileList(name)
     cCadena = cCadena + name + CR
RESULT True

Del procedure sólo tomamos el nombre... pero se podrian poner todas las opciones:

PROCEDURE FileList(Name, nSize, sAttribute, sDate, sTime, nParam)