Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

TMemoryStream versus documento texto

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: TMemoryStream versus documento texto Responder citando

Yo imaginaba que usar Write sobre TMemoryStream, era como escribir en un documento texto, en donde se añadía el texto sucesivamente, intercalando los tabuladores y saltos de línea en los lugares donde uno quería. Pero no me está resultando así.

Repasando una pregunta de 2002 existente en el foro, he hecho un programa que funciona perfectamente si hago lo siguiente:

TMemoryStream * memoria = new TMemoryStream();
TTreeView * TreeView1;
memoria->LoadFromFile("INDICES.DAT");
memoria->Position = 0;
TreeView1->LoadFromStream(memoria);

En "INDICES.DAT", tengo escrito un árbol donde cada nodo es una línea y su jerarquía me la da el número de tabs ('\t') que preceden a cada línea.

Quiero sustituir:
memoria->LoadFromFile("INDICES.DAT");
por una escritura directa en el TMemoryStream, que mantenga la estructura de un árbol (tabs, líneas de texto, y saltos de línea \n).

Como no mr prermite emplear WriteAnsiString, he usado:
memoria->Write("Linea1",sizeof(Linea1));
memoria->Write("Linea2",sizeof(Linea2));
memoria->Write("Linea3",sizeof(Linea3); etc.
Pero el TreeView1 sólo me muestra la primera linea.

También he intentado:
memoria->Write("Linea1\n",sizeof(Linea1)+1);
memoria->Write("\tLinea2\n",sizeof(Linea1)+2);
memoria->Write("\t\tLinea3\n",sizeof(Linea1)+3);

Con el mismo mal resultado, TreeView1 sólo me muestra la primera linea.

¿Alguien tiene una solución?. Gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Solucion Responder citando

Dado que he encontrado la solución indico cual es por si le interesa a alguien.
Es suficiente hacer:
memoria->Write("Linea1\n",sizeof(Linea1));
o bien
memoria->Write("Linea1",sizeof(Linea1)-1);
memoria->Write("\n",1);

Por lo visto Write cuando escribe una Linea añade algo al final que impidedia que luego se leyese el salto de línea.

De todas formas gracias a los que he molestado con la pregunta

beta
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.