![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Hola.
Cita:
Para salir de toda duda hice una pequeña prueba y las sorpresas no terminaron. Al revisar el archivo prueba.txt veo que en todos los casos la primera posición mas allá del último caracter de un AnsiString contiene el valor cero. Me dije "suerte otra vez... vamos a seguir probando pero trabajando menos": Corrí la prueba tres veces y resultó que en los cientos de millones de casos, siempre obtuve el mismo resultado: La primera posición despues del último caracter de un AnsiString tiene el valor cero (no controlé mas allá). O no estoy haciendo las pruebas correctas o Delphi está inicializando el espacio contiguo de algún modo. Sigo sin encontrar la explicación... Saludos ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#2
|
||||
|
||||
|
Cita:
Cita:
"Hola que tal" se transforma en "Hola que tal" si metes el nulo final, en caso contrario será "Hola que tal tal". ¿Porqué? porque la cadena original terminaba en nulo. De esta forma, el cast PCHAR(Cadena) es lo mismo que hacer @Cadena[1], que es justo el casting que realizo para tratarla desde ensamblador. Te sorprenderías al saber la cantidad de analogías existentes entre delphi y C a bajo nivel, por ejemplo, los arrays se tratan idénticamente. Si tienes curiosidad, sigue este hilo donde hicimos una investigación sobre el tema, y este otro hilo que demuestra lo mismo. Saludos. Última edición por escafandra fecha: 16-10-2015 a las 01:10:40. |
|
#3
|
||||
|
||||
|
Hola escafandra.
Si conocía algunas de las similitudes y el manejo de las conversiones, pero el árbol me tapó el bosque .¡ Tenía la respuesta ahí nomas !, como dicen por aca: "Si hubiera sido una víbora me picaba"... Cita:
Declarando como AnsiString la cadena que usaste, sería almacenada así: Código:
[1][12][Hola que tal\0] Saludos y muchas gracias ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 16-10-2015 a las 05:17:26. |
|
#4
|
||||
|
||||
|
Es posible que así sea. De todas formas, hay que recordar que en delphi, un tipo string, más que una cadena de texto, es una cadena de bytes y puede almacenar cualquier cosa, incluyendo el #0. Por tanto, confiar en que el #0 marca el final de un string es incorrecto.
// Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Cómo quitar espacios inicial y final en cadena | bulc | Varios | 0 | 22-03-2014 18:24:33 |
| Quitar Espacios en Sql | El_Perrito | Firebird e Interbase | 3 | 25-02-2005 12:49:12 |
| Quitar espacios al final de una cadena | gescoto99 | SQL | 1 | 04-08-2004 00:02:43 |
| Quitar espacios de campos CHAR | cartmanrules | Firebird e Interbase | 3 | 22-07-2004 10:53:06 |
| Quitar espacios en blanco | Javier_A | OOP | 3 | 09-06-2004 10:29:27 |
|