![]() |
Hola,
Cita:
|
No sé cómo trabaja tu programa ni el otro, pero ¿cómo sabe ese programa que le están enviando algo en code64 (o code25 o code129, por decir algo) para aceptar 60 mil caracteres o más?
|
Hola,
Cita:
Ya. Ya sé que esto no tiene sentido. Además, conociendo un poco al programador de NeoBook (y su programa, y que lleva más de 20 años desarrollándolo) me es muy complicado asumir que el "problema" está en la parte que le toca a NeoBook. Quiero pensar y aun pienso que el problema está de mi parte. Ahora bien, dicho esto, que me expliquen lo que está pasando... :confused: |
Cita:
Ejemplo con PBYTE, pero puedes usar un Pointer...
Cita:
Ejemplo:
Saludos. |
Hola a todos,
Gracias escafandra. Aunque no comprendo muy bien de lo que se trata, sí sé que NeoBook usa ciertas funciones para "pasar" variables (funciones que nosotros los desarrolladores de DLL's tenemos que usar obligatoriamente), y, lo hace de forma muy similar a como tú dices. O sea, en realidad no me queda claro si podría hacer lo que tú me propones, pero, trataré de investigarlo. Pero, es que ahora ya casi estoy loco del todo, porque, probando a codificar/decodificar cadenas con mis DLL en Windows 7.... no tengo la limitación de 60.000 caracteres. Esto es verdaderamente para acabar atado. ¿Recuerda alguien que ayer comenté que había inconsistencias entre Windows 7 y Windows 8 que yo no podía entender? Parecía que se habían superado (de forma irracional, cambiando de los componentes Indy a otros) pero nada más lejos de la realidad. El asunto es que ahora mismo no sé ni cómo enfocar el problema: ¿resulta que en Windows 7 funciona algo que no funciona en Windows 8? ¿Algo tan "sencillo" como codificar y decodificar en "base 64"? Simplemente no me lo creo. Así que mañana (espero poder dejar esto por hoy y relajarme/ros un poco) quiero "terminar" la DLL y probarla en Windows 7 y Windows 8,... y ver qué pasa. Ya os contaré... :( ¡Gracias de nuevo a todos! |
Hola,
No os quiero dejar con las ganas de saber que al final he conseguido subsanar el problema. Con la ayuda de todos. Hay cosas que todavía no consigo comprender. Por ejemplo, ya no uso Indy para codificar en "base 64", pero, creo que no se trata de un problema de Indy, sino de cómo se comporta el programa "madre" de mi DLL. El caso es que, como suele pasar, desafortunadamente, más de una vez (por lo menos a tipos como a mí), todo se debía a un "malentendido". En efecto, imaginaros la situación: 1º Tengo dos casillas en una aplicación y dos botones: cifrar y descifrar. 2º Cifro el texto de la primera casilla, lo codifico en "base 64" y lo sitúo en la segunda casilla. 3º Descifro el texto de la segunda casilla para obtener el texto original. Hasta aquí todo correcto, excepto la inquietante cifra máxima de 60.000 caracteres. En efecto, nunca puedo obtener texto en claro más allá de esa cifra, y, de hecho la segunda casilla nunca llega a guardar más de esa misma cifra. ¿Qué está pasando aquí? Lo más obvio (ahora que se sabe): ¡las casillas del programa "madre" de mi DLL están configuradas, por defecto, para tener ese límite máximo de caracteres! En fin, no voy a decir que la ayuda del programa está errada en esta cuestión pues indica que si se establece como límite un "0", esto significa que no hay límite... pero lo cierto es que sí que lo hay (60.000) si se deja tal cual ese "0". Como digo la ayuda está errada, pero, no voy a culparla porque yo ni siquiera he mirado ahí. He tenido que hacer varias pruebas por mi cuenta para llegar a dicha conclusión. Y bueno, al final el problema se ha solucionado, aunque, como he dicho más arriba, no uso Indy para realizar la codificación, sino esta otra unidad (espero no estar infringiendo copyright alguno...), que usa la API de Windows y funciona como se espera: aunque insisto en que muy probablemente Indy funciona bien y el fallo está en otro sitio, pero, no tengo tiempo ni ganas para ponerme ahora a investigar sobre este asunto, mucho menos después de haber comprendido y solucionado el problema. ¡Gracias a todos vosotros! :) |
Todo tiene solución :), bueno, casi todo :( :p ;)
|
Hola,
Cita:
¡Gracias a todos! :) |
Cita:
:D:p |
Cita:
|
Cita:
Ten en cuenta que base64 no es un sistema seguro de encriptación, no se si esto es importante para tu propósito. Me alegra que hayas encontrado la solución. :) Saludos. |
Yo lo que entendí es que está haciendo ambas cosas: cifrar y codificar en base 64.
// Saludos |
Hola a todos,
Cita:
Cita:
¡Gracias de nuevo a todos! ;) |
Yo tuve los mismos problemas y también los solucioné usando base64. De hecho, hace muy poquito he vuelto a tenerlos, en javascript y php: en la nueva versión de gestor de contenidos/framework o lo que sea, existe la opción de guardar la contraseñas cifradas en una cokie y tambien se cifra antes de enviarla mediante post al hacer login. Bien, pues también uso Base64 para convertir a string.
Ah, y en Delphi tampoco usaba Indy, sino una función hecha en object Pascal, que alguien escribió alguna vez. |
Hola,
Así es Julián, no somos pocos los que nos hemos topado con este problema y hemos tomado "base 64" como solución. :) |
| La franja horaria es GMT +2. Ahora son las 05:20:14. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi