sábado, 11 de julio de 2026

Delphi 7 - listar los archivos de un directorio

 var

  i: integer;

  b: tsearchrec;

begin

  SetCurrentDir('\\COMPRAS20HP\Users\Slim4-core\Desktop\Slimstock_ficheros_export\');

  i:= findfirst('*.txt', faAnyFile, b);

  while i=0 do

  begin

    showmessage(b.name);

    i:=findnext(b);

  end;


  findclose(b);



http://www.delphibasics.co.uk/RTL.php?Name=findfirst



Attribute constants and values

ConstantValueDescription

faReadOnly

$00000001

Read-only files

faHidden

$00000002

Hidden files

faSysFile

$00000004

System files

faVolumeID

$00000008

Volume ID files

faDirectory

$00000010

Directory files

faArchive

$00000020

Archive files

faAnyFile

$0000003F

Any file

TIPO TSearchRec

type

TSearchRec = record

Time: Integer;

Size: Integer;

Attr: Integer;

Name: TFileName;

ExcludeAttr: Integer;

FindHandle: THandle;

FindData: TWin32FindData;

end;


OTRO EJEMPLO

procedure TFPrincipal.Listar( sDirectorio: string; var Resultado: TStringList );

var

Busqueda: TSearchRec;

iResultado: Integer;

begin

// Nos aseguramos que termine en contrabarra

sDirectorio := IncludeTrailingBackslash( sDirectorio );

iResultado := FindFirst( sDirectorio + '*.*', faAnyFile, Busqueda);

while iResultado = 0 do

begin

// ¿Ha encontrado un archivo y no es un directorio?

if ( Busqueda.Attr and faArchive = faArchive ) and

( Busqueda.Attr and faDirectory <> faDirectory ) then

Resultado.Add( Busqueda.Name );

iResultado := FindNext( Busqueda );

end;

FindClose( Busqueda );

end;

miércoles, 22 de abril de 2026

Escritorio remoto poner resolución de la pantalla mas grande

 screen mode id:i:2

desktopwidth:i:1280

desktopheight:i:720

use multimon:i:0

session bpp:i:32

winposstr:s:0,3,0,0,1280,720


jueves, 9 de abril de 2026

Eliminar aviso de Windows de que se va a ejecutar una aplicación que no es de confianza

1. si el ejecutable esta en la intranet local, almacenada en otro equipo - se puede agregar ese equipo como sitio de confianza o como  equipo de la intranet local -> así deja de aparecer el aviso

Opciones de internet







Mover un punto en GeoGebra con JavaScript - ejemplo de primera aplicación sencilla de JavaScript en GeoGebra

 

Ejemplo de aplicación sencilla en GeoGebra

1. se instala Geogebra 5 de escritorio

Windows Installer: GeoGebra Classic 5 Installer for Windows 

2. se añade un punto y un botón

3. propiedades del botón, programa de guion, abajo poner tipo JavaScript en vez de guion de GeoGebra

4. código del programa

var a; //declaración variables en JavaScript
var b;
a = ggbApplet.getXcoord("A");  //lee coordenada X del punto "A" y lo almacena en variable a de JavaScript

b = ggbApplet.getYcoord("A"); // coordenada Y del punto

if (a < 5 && b < 5) {  // estructura condicional si las coordenadas X e Y son menor que 5 mueve el punto a la posición 1,6 y así sucesivamente
    ggbApplet.setCoords("A", 1, 6);
} else if (a < 5 && b > 5) {
    ggbApplet.setCoords("A", 6, 6);
} else if (a > 5 && b > 5) {
    ggbApplet.setCoords("A", 6, 1);
} else {
    ggbApplet.setCoords("A", 1, 1);
}

5. darle a guardar y cerrar pestaña de propiedades del botón
6. pulsar el botón y el punto se irá moviendo






miércoles, 8 de abril de 2026

Instalar sqlserver express y el gestor de la base de datos sql server management studio (ssms)

1. Instalar SQL2019-SSEI-Expr.exe

modo de instalación personalizado

elegir usuario sqlserver y poner la contraseña

quitar machine learning server

luego instalar el gestor de la base de datos - sql server management studio

SSMS-Setup-ESN.exe

acceder con usuario de sql server - nombre usuario: sa y la contraseña elegida anteriormente

Bases de datos

Restaurar la base de datos con archivo tipo  .bak




En dispositivo, elegir el archivo .bak

Aprender linux en Windows

powershell de windows

wsl --list --online

wsl --install -d Ubuntu




https://youtu.be/L4f1XHrSJEg?si=GLZMo4wAsaAoK7rC




Usar Javascript en Geogebra para realizar aplicaciones

Pasos para crear una aplicación de JavaScript en GeoGebra

1. Instalar la aplicación GeoGebra de escritorio

Windows Installer: GeoGebra Classic 5 Installer for Windows 

2. Crear botón, acceder a propiedades del botón pulsando el botón derecho del ratón

3. Programa de guion - evento al hacer clic 

abajo opciones de tipo de guion: 

- guion (script) de GeoGebra 

- JavaScript   <-- (elegir este)

4. Existen las variables de GeoGebra y las variables de JavaScript

a = ggbApplet.getXcoord("C"); 

//a es variable JavaScript y "C" es variable de GeoGebra, se comunican leyendo los valores de las variables de GeoGebra y almacenando los valores en variables de JavaScript

5. Código del programa. Ejemplo de programa que dibuja una recta perpendicular a otra recta definida por pasar por los puntos D y C

a = ggbApplet.getXcoord("C");
b = ggbApplet.getYcoord("C");
c = ggbApplet.getXcoord("D");
d = ggbApplet.getYcoord("D");
pendiente = (d - b) / (c - a);

pendiente2 = -1 * (1 / pendiente);

e = ggbApplet.getXcoord("A");
f = ggbApplet.getYcoord("A");

coe1 = f - (pendiente2 * e);

aux = "h: " + "y=(" + pendiente2 + ")*x+" + coe1;
ggbApplet.evalCommandGetLabels(aux);

6. Otro ejemplo de programa. Ahora con animación, la recta se va dibujando progresivamente, para ello usa el deslizador de GeoGebra "b" que va de -100 a 100 a velocidad 1

a = ggbApplet.getXcoord("C");
b = ggbApplet.getYcoord("C");
c = ggbApplet.getXcoord("D");
d = ggbApplet.getYcoord("D");
pendiente = (d - b) / (c - a);

pendiente2 = -1 * (1 / pendiente);

e = ggbApplet.getXcoord("A");
f = ggbApplet.getYcoord("A");

coe1 = f - (pendiente2 * e);
recta = "y=(" + pendiente2 + ")*x+(" + coe1 + ")";


aux = "v(x)=If(x<b,(" + pendiente2 + ")*x+(" + coe1 + "))";
ggbApplet.evalCommandGetLabels(aux);
ggbApplet.setValue("b", 0);
ggbApplet.setAnimating("b", true);
ggbApplet.startAnimation();



7. Una vez que se graba el código en JavaScript asociado al botón, para probarlo hay que cerrar la pestaña propiedades del botón, solo así se podrá ejecutar el código

(con la pestaña propiedades del botón abierta, no se ejecuta el código)

8. Grabar los cambios antes de cerrar la pestaña de propiedades del botón; de lo contrario, no se guardarán.

9. Es muy útil la función alert("hola"); - deja hacer una traza de la ejecución del programa para encontrar fallos. También muestra los valores de las variables JavaScript, por ejemplo, alert("Variable a: " & a);


miércoles, 1 de abril de 2026

windows 10 VPN tipo L2TP clave compartida previamente - no deja acceder

windows 10 VPN tipo L2TP clave compartida previamente - no deja acceder

Añadir esto en regedit

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent

AssumeUDPEncapsulationContextOnSendRule

valor 2



Cuando la conexion VPN esta conectada -> conectar con escritorio remoto

ejemplo de archivo conexion.rdp, editar con bloc de notas

la linea donde se indica el equipo al que se conecta de la red local

full address:s:192.168.1.77



archivo:

screen mode id:i:2
use multimon:i:0
desktopwidth:i:800
desktopheight:i:600
session bpp:i:32
winposstr:s:0,3,0,0,800,600
compression:i:1
keyboardhook:i:2
audiocapturemode:i:0
videoplaybackmode:i:1
connection type:i:2
displayconnectionbar:i:1
disable wallpaper:i:1
allow font smoothing:i:0
allow desktop composition:i:0
disable full window drag:i:1
disable menu anims:i:1
disable themes:i:0
disable cursor setting:i:0
bitmapcachepersistenable:i:1
full address:s:192.168.1.77
audiomode:i:0
redirectprinters:i:1
redirectcomports:i:0
redirectsmartcards:i:1
redirectclipboard:i:1
redirectposdevices:i:0
redirectdirectx:i:1
autoreconnection enabled:i:1
authentication level:i:2
prompt for credentials:i:0
negotiate security layer:i:1
remoteapplicationmode:i:0
alternate shell:s:
shell working directory:s:
gatewayhostname:s:
gatewayusagemethod:i:4
gatewaycredentialssource:i:4
gatewayprofileusagemethod:i:0
promptcredentialonce:i:1
use redirection server name:i:0




lunes, 26 de agosto de 2024

sábado, 7 de enero de 2023

aeat sii - enviar facturas con nuevo tipos de iva 5% y 0% - esquema xml

CON RECARGO DE EQUIVALENCIA

<siiLR:FacturaExpedida>
<sii:TipoFactura>F1</sii:TipoFactura>
<sii:ClaveRegimenEspecialOTrascendencia>01</sii:ClaveRegimenEspecialOTrascendencia>
<sii:ImporteTotal>17.46</sii:ImporteTotal>
<sii:DescripcionOperacion>VENTA 1064593</sii:DescripcionOperacion>
<sii:Contraparte>
<sii:NombreRazon>XXXXXXXXXXX</sii:NombreRazon>
<sii:NIF>XXXXXXXXXX</sii:NIF>
</sii:Contraparte>
<sii:TipoDesglose>
<sii:DesgloseFactura>
<sii:Sujeta>
<sii:NoExenta>
<sii:TipoNoExenta>S1</sii:TipoNoExenta>
<sii:DesgloseIVA>
<sii:DetalleIVA>
<sii:TipoImpositivo>0</sii:TipoImpositivo>
<sii:BaseImponible>13.39</sii:BaseImponible>
<sii:CuotaRepercutida>0</sii:CuotaRepercutida>
</sii:DetalleIVA>
<sii:DetalleIVA>
<sii:TipoImpositivo>5</sii:TipoImpositivo>
<sii:BaseImponible>3.86</sii:BaseImponible>
<sii:CuotaRepercutida>0.19</sii:CuotaRepercutida>
<sii:TipoRecargoEquivalencia>0.5</sii:TipoRecargoEquivalencia>
<sii:CuotaRecargoEquivalencia>0.02</sii:CuotaRecargoEquivalencia>
</sii:DetalleIVA>
</sii:DesgloseIVA>
</sii:NoExenta>
</sii:Sujeta>
</sii:DesgloseFactura>
</sii:TipoDesglose>
</siiLR:FacturaExpedida>


SIN RECARGO DE EQUIVALENCIA

<siiLR:FacturaExpedida>
<sii:TipoFactura>F2</sii:TipoFactura>
<sii:ClaveRegimenEspecialOTrascendencia>01</sii:ClaveRegimenEspecialOTrascendencia>
<sii:ImporteTotal>44.35</sii:ImporteTotal>
<sii:DescripcionOperacion>VENTA 1064868</sii:DescripcionOperacion>
<sii:TipoDesglose>
<sii:DesgloseFactura>
<sii:Sujeta>
<sii:NoExenta>
<sii:TipoNoExenta>S1</sii:TipoNoExenta>
<sii:DesgloseIVA>
<sii:DetalleIVA>
<sii:TipoImpositivo>0</sii:TipoImpositivo>
<sii:BaseImponible>39.62</sii:BaseImponible>
<sii:CuotaRepercutida>0</sii:CuotaRepercutida>
</sii:DetalleIVA>
<sii:DetalleIVA>
<sii:TipoImpositivo>5</sii:TipoImpositivo>
<sii:BaseImponible>4.5</sii:BaseImponible>
<sii:CuotaRepercutida>0.23</sii:CuotaRepercutida>
</sii:DetalleIVA>
</sii:DesgloseIVA>
</sii:NoExenta>
</sii:Sujeta>
</sii:DesgloseFactura>
</sii:TipoDesglose>
</siiLR:FacturaExpedida>


NOTA INFORMATIVA NUEVOS TIPOS DE IVA Y RECARGOS DE EQUIVALENCIA  29/12/2022

https://sede.agenciatributaria.gob.es/Sede/NOTA_INFORMATIVA_TIPOS_DE_IVA_Y_RECARGO_DE_EQUIVALENCIA_RD_Ley_20_2022__de_27_de_diciembre.html

"Se está trabajando en cambios normativos y técnicos con el objetivo facilitar la facturación, suministro y declaración de estas operaciones, estableciendo en el 0,62  el tipo correspondiente al recargo de equivalencia de las operaciones sujetas al tipo de IVA del 5%.

Con objeto de habilitar la declaración de las operaciones afectadas por los nuevos tipos de recargo de equivalencia, para las autoliquidaciones correspondientes a periodos impositivos que se inicien a partir de 1 de enero de 2023 se modificarán las especificaciones técnicas de los modelos 303 y 322 de manera que las operaciones afectadas por los nuevos tipos se incluyan en las casillas 156 y 158 junto con las operaciones actualmente sujetas al tipo del recargo de equivalencia del 0,5 por ciento"

sii boe nº 311 de fecha 28/12/22 - articulo 72 - cambio tipos impositivos aplicables temporalmente del impuesto sobre el valor añadido 

lunes, 7 de febrero de 2022

WINDOWS 7 IIS 6.1 PROTOCOLOS






en regedit

HKey_Local_Machine\System\CurrentControlSet\Control\SecurityProviders \SCHANNEL\Protocols
  

clave tls 1.2


subclave server


dword enabled


valor 1


 

en  ssl 2.0  y ssl 3.0

tb poner server disabledbydefault valor 1  si

 


windows 7 actualizar 

Service Pack 1 para Windows 7 



tiene q estar asi

tls 1.3  si

tls 1.2  si

tls 1.1  no

tls 1.0  no

ssl 3 no

ssl 2 no

 



miércoles, 3 de noviembre de 2021

oracle 11 no exporta tablas vacias

sql plus

usuario bd

contraseña bd

SQL> show parameter deferred_segment_creation;


SQL> alter system set deferred_segment_creation=false;


SQL> select 'alter table '||table_name||' allocate extent;' 
from user_tables where num_rows=0;


EJECUTAR CADA UNA DE LAS LINEAS QUE DA DE RESULTADO


SQL> alter table TABLA1 allocate extent;


DESPUES DE ESTO SE HACE LA EXP EN MSDOS Y YA EXPORTA LAS TABLAS VACIAS

exp usuario/clave@bd1 file=c:\nombre_archivo.dmp owner=usuario
 

 

sábado, 22 de agosto de 2020

WINDOWS 7 IIS 7.5 TLS 1.2

 

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

SERVER 

CLIENT

 

domingo, 30 de diciembre de 2018

archivo xml del documento electronico de reembolso (der) sistema diva - XML DER DIVA

EJEMPLO DE ARCHIVO XML PARA ENVIAR DOCUMENTO ELECTRONICO DE REEMBOLSO A AEAT MEDIANTE PROGRAMA aduanetxml_10_0.jar

--

 
<div:DIVAAltaV1Ent xmlns:div="https://www3.agenciatributaria.gob.es/static_files/common/internet/dep/aduanas/es/aeat/addi/jdit/ws/DIVAAltaV1Ent.xsd" id="XXXXXXXXXXX" remitente="?" destinatario="?" fecha="?" hora="?" test="?" endPoint="es.aeat.addi.jdit.ws.DIVAAltaV1SOAP">
  <div:fechaDocumento>20181228</div:fechaDocumento>
  <div:identificadorLocalReferencia>XXXXXXXXXXXXXX</div:identificadorLocalReferencia>
- <div:factura>
  <div:numero>T1_750238</div:numero>
  <div:fecha>20181228</div:fecha>
  </div:factura>
- <div:establecimientoVenta>
  <div:nif>XXXXXXXXXXX</div:nif>
  <div:razonSocial>XXXXXXXXXXXXXXXX.</div:razonSocial>
  </div:establecimientoVenta>
- <div:viajero>
  <div:pasaporte>E01241079</div:pasaporte>
  <div:nombre>XXXXXXXXXXXXXXXX</div:nombre>
  <div:fechaNacimiento>19630702</div:fechaNacimiento>
  <div:pais>XX</div:pais>
  </div:viajero>
- <div:iva>
  <div:totalBaseImponible>384,47</div:totalBaseImponible>
  <div:totalIva>73,91</div:totalIva>
  </div:iva>
- <div:producto>
  <div:clasificacion>HOG</div:clasificacion>
  <div:descripcion>BOLSA COTILLON CAMARGUE</div:descripcion>
  <div:cantidad>160</div:cantidad>
  <div:baseImponible>177,18</div:baseImponible>
  <div:tipoImpositivo>21</div:tipoImpositivo>
  </div:producto>
.
.
.
- <div:producto>
  <div:clasificacion>HOG</div:clasificacion>
  <div:descripcion>VASO TUBO 31CL 24U HOSTELVIA</div:descripcion>
  <div:cantidad>2</div:cantidad>
  <div:baseImponible>8,31</div:baseImponible>
  <div:tipoImpositivo>21</div:tipoImpositivo>
  </div:producto>
  </div:DIVAAltaV1Ent>

--------

una vez enviado correctamente, se puede consultar en el enlace 

https://www.agenciatributaria.gob.es/AEAT.sede/procedimientoini/DB17.shtml

---
una vez sellado hay que descargarse el der con visado conforme
se copia el campo que aparece CSV DER visado (Código Seguro de Verificación)

con el valor de ese campo se puede descargar el documento en el enlace 
https://www.agenciatributaria.gob.es/AEAT.sede/tramitacion/ZZ05.shtml

-----------

cuando tenemos el visado conforme se puede devolver al cliente el importe del iva
y se comunica el pago en

https://www.agenciatributaria.gob.es/AEAT.sede/procedimientoini/DB17.shtml
-> opcion
Gestión de la comunicación del pago del IVA solicitado

-------------------

sii  hay que enviar la comunicacion tipo a5 con el numero der campo IAEAT

--- 

en contabilidad, registro del iva, crear un registro con el importe del iva en negativo


---- 
 
info@magasa.es

viernes, 18 de mayo de 2018

phpmailer

https://www.inmotionhosting.com/support/email/send-email-from-a-page/download-phpmailer

sábado, 17 de febrero de 2018

generar pdfs dinamicos en asp - php

1.-   php.ini

quitar comentarios de estas lineas:
extension=php_mbstring.dll
extension=php_exif.dll      ; Must be after mbstring as it depends on it

[mbstring]
mbstring.language = Neutral
mbstring.http_input = auto
mbstring.http_output = auto
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none
mbstring.func_overload = 0
mbstring.strict_detection = Off


2.-  descargar  mpdf, descomprimirlo y poner carpate en directorio de la web
http://www.mpdf1.com/mpdf/index.php
mPDF version 5.7 (.zip file 12MB)



3.- probar si funcionan los ejemplos que trae
http://192.168.1.16/mpdf/examples/example01_basic.php


4.- pagina asp que llama a pagina php

cadena1 ="<form  method='post' name='pdf' action='pdf.php'  >" & VBCrLf
cadena1 = cadena1 & "<input type='HIDDEN' name='texto' value='" & cad & "'/>" & VBCrLf
cadena1 = cadena1 & "</form>" & VBCrLf

response.write cadena1
           
           
%>
                <script>document.forms["pdf"].submit();</script>
<%

5.-  pagina php
<?php
    include("mpdf/mpdf.php");
    $cadena = $_POST['texto'];
    $mpdf=new mPDF();

    $mpdf->allow_charset_conversion = true;
    $mpdf->charset_in = 'iso-8859-4';

    $mpdf->WriteHTML($cadena);
    $mpdf->Output();
    exit;

?>



viernes, 20 de enero de 2017

Conexion Php a base de datos Access 32 bits en Windows7 64 bits (IIS)

en WINDOWS7 odbc de 32 bits

C:\Windows\SysWOW64\odbcad32.exe

crear dsn de sistema (dsn de usuario no sirve) para access en ordenador donde esta instalado iis y php


codigo php para conectar a la base de datos (en el ejemplo en nombre del dsn de sistema es bd10)


<?php
$dsn = "BD10";
//debe ser de sistema no de usuario
$usuario = "";
$clave="";

//realizamos la conexion mediante odbc
$cid=odbc_connect($dsn, $usuario, $clave);

if (!$cid){
    exit("<strong>Ya ocurrido un error tratando de conectarse con el origen de datos.</strong>");
}  

// consulta SQL $sql="Select * from FAMILIAS";

// generamos la tabla mediante odbc_result_all(); utilizando borde 1
$result=odbc_exec($cid,$sql)or die(exit("Error en odbc_exec"));
print odbc_result_all($result,"border=1");
?>


sábado, 2 de enero de 2016

iis7 carpeta sitio web compartida

en la carpeta donde esta sitio web, boton derecho propiedades
pestaña compartir, boton compartir
todos agregar  lectura y escritura