FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#41
|
||||
|
||||
Hola,
Sí; je je je... pero no puede ser Casimiro. Nada me gustaría más que desentenderme del asunto, y, si existiese esta limitación también en Delphi (tal vez incluso en la "especificación" de "base 64" o algo así) entonces tal vez no quedaría más remedio, pero, parece que esta limitación sólo se da en mi DLL y su relación con el programa "madre" en cuestión. Algo que no tiene lógica si se leen mis anteriores mensajes y que se resume en que podemos pasar cadenas mucho más largas de 60.000 caracteres, pero, por alguna razón, no si esta cadena está codificada en "base 64"... |
#42
|
||||
|
||||
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?
|
#43
|
||||
|
||||
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... Última edición por dec fecha: 02-06-2014 a las 23:22:34. |
#44
|
||||
|
||||
Cita:
Ejemplo con PBYTE, pero puedes usar un Pointer...
Cita:
Ejemplo:
Saludos. Última edición por escafandra fecha: 03-06-2014 a las 00:24:57. |
#45
|
||||
|
||||
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! Última edición por dec fecha: 03-06-2014 a las 00:56:40. |
#46
|
||||
|
||||
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! |
#47
|
||||
|
||||
Todo tiene solución , bueno, casi todo
|
#48
|
||||
|
||||
Hola,
¿Para qué preocuparnos por lo que tiene solución o por lo que no la tiene? Algo así dicen que dijo un mono sabio. Pero quien no es profesional corre el riesgo de entrar en miedo pánico. ¡Piensa que acaba de abrirse la tierra bajo sus pies! Un error que se añade al primero: errores. Pero en fin... al menos espero haber aprendido algo esta vez. ¡Gracias a todos! |
#49
|
||||
|
||||
Cita:
|
#50
|
||||
|
||||
Bueno; es que todos somos monos... y algunos más sabios que otros.
|
#51
|
||||
|
||||
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. |
#52
|
||||
|
||||
Yo lo que entendí es que está haciendo ambas cosas: cifrar y codificar en base 64.
// Saludos |
#53
|
||||
|
||||
Hola a todos,
Cita:
Cita:
¡Gracias de nuevo a todos! |
#54
|
||||
|
||||
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.
__________________
"la única iglesia que ilumina es la que arde" Anonimo |
#55
|
||||
|
||||
Hola,
Así es Julián, no somos pocos los que nos hemos topado con este problema y hemos tomado "base 64" como solución. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Recuperar BookMark despues de cerrar dataset... | verito_83mdq | Varios | 10 | 27-01-2011 00:03:18 |
Recuperar Informacion despues de un Commit | Kipow | Firebird e Interbase | 2 | 01-04-2009 19:04:02 |
Error al Tratar de Almacenar Cadena con Acepto | inferno | Firebird e Interbase | 3 | 04-10-2006 17:17:40 |
Recuperar autoinc. después de Insert to | aig | MS SQL Server | 2 | 22-09-2004 10:41:28 |
Recuperar autonumericos despues de Borrar, Cancelar ,Ect. | IcebergDelphi | Varios | 1 | 14-05-2003 07:55:02 |
|