• Domingo 28 de Abril de 2024, 23:08

Autor Tema:  Editar Una Vcard  (Leído 4422 veces)

Gandalf_malaga7

  • Miembro MUY activo
  • ***
  • Mensajes: 162
    • Ver Perfil
Editar Una Vcard
« en: Martes 24 de Enero de 2006, 12:10 »
0
Hola amigos,

tras buscar en el foro y no encontrar nada relacionado,tengo la siguiente duda:

supongo que sabréis lo que es una Vcard (un archivo con extensión vcf), bueno pues los que yo estoy usando,si lo abres con el bloc de notas tienen la siguiente pinta:

BEGIN:VCARD
VERSION:2.1
N:GANDALF
NOTE;ENCODING=QUOTED-PRINTABLE: Les deseo Feliz Año a todos
END:VCARD

donde pone "Les deseo Feliz año a todos",es el mensaje que se lee en la Vcard.Bien,pues yo este mensaje lo leo de una BBDD como una string.Lo que necesito es modificar el mensaje que hay en la VCard,escribiendo el nuevo mensaje que haya leido de la BBDD.Es decir,si ahora leo de la BBDD,y el nuevo mensaje es "Hola amigos de elguille",la Vcard al abrirla desde el bloc de notas debe quedar así:

BEGIN:VCARD
VERSION:2.1
N:GANDALF
NOTE;ENCODING=QUOTED-PRINTABLE: Hola amigos de Foros de SoloCodigo
END:VCARD

espero haberme explicado bien,

un saludo amigos!!!!!!
...Gandalf El Gris,ese era mi nombre;soy Gandalf El Blanco y en los albores de la tempestad vuelvo a vosotros.

Güorker

  • Miembro MUY activo
  • ***
  • Mensajes: 383
    • Ver Perfil
Re: Editar Una Vcard
« Respuesta #1 en: Martes 24 de Enero de 2006, 13:34 »
0
Hola,

Lo que tendrías que hacer es utilizar las Clases StreamReader y StreamWriter para modificar el archivo.

Mira esto: StreamReader

En esa pagina vienn ejemplos muy sencillos de entender para leer y escribir en archivos.

Saludos
[size=109]Ondo ibili, gutxi gastau eta bueltak amari[/size]
[size=109]Pasalo bien, gasta poco y las vueltas a tu madre[/size]

Gandalf_malaga7

  • Miembro MUY activo
  • ***
  • Mensajes: 162
    • Ver Perfil
Re: Editar Una Vcard
« Respuesta #2 en: Miércoles 25 de Enero de 2006, 23:12 »
0
Hola de nuevo :hola: ,he hecho lo siguiente:


Código: Text
  1.  
  2. private bool editaVcard(string mensaje)
  3.     {
  4.       string LogFile = "vcard.vcf";
  5.       string linea1 = "BEGIN:VCARD";
  6.       string linea2 = "VERSION:2.1";
  7.       string linea3 = "N:GANDALF";
  8.       string linea4 = "NOTE;ENCODING=QUOTED-PRINTABLE: " + mensaje;
  9.       string linea5 = "END:VCARD";
  10.       
  11.       StreamWriter temp= File.CreateText(LogFile);
  12.       temp.Close();
  13.       StreamWriter sw = File.AppendText(LogFile);
  14.  
  15.       try
  16.       {
  17.         sw.WriteLine(linea1);
  18.         sw.WriteLine(linea2);
  19.         sw.WriteLine(linea3);
  20.         sw.WriteLine(linea4);
  21.         sw.WriteLine(linea5);
  22.         return true;
  23.       }
  24.       catch
  25.       {
  26.         return false;
  27.       }
  28.       finally
  29.       {
  30.         sw.Flush();
  31.         sw.Close();
  32.       }
  33.     }
  34.  
  35.  

y funcionar funicona.Cada vez que llamo a la función y le paso una cadena,crea una nueva vcard que sobreescribe a la anterior,modificando sólo el mensaje.Me gustaría que me comentaráis si es correcto lo que he hecho,y si hay una forma más correca de realizar esto,

muchas gracias de nuevo,

salu2!!!!!!! :kicking:
...Gandalf El Gris,ese era mi nombre;soy Gandalf El Blanco y en los albores de la tempestad vuelvo a vosotros.

Güorker

  • Miembro MUY activo
  • ***
  • Mensajes: 383
    • Ver Perfil
Re: Editar Una Vcard
« Respuesta #3 en: Jueves 26 de Enero de 2006, 08:31 »
0
Hola,

Creo que no te hace falta crear 2 StreamWriters.
puedes utilizar el mismo StreamWriter "temp" para crear el archivo y escribir texto en el.

Saludos
[size=109]Ondo ibili, gutxi gastau eta bueltak amari[/size]
[size=109]Pasalo bien, gasta poco y las vueltas a tu madre[/size]

Gandalf_malaga7

  • Miembro MUY activo
  • ***
  • Mensajes: 162
    • Ver Perfil
Re: Editar Una Vcard
« Respuesta #4 en: Jueves 26 de Enero de 2006, 14:22 »
0
Hola Güorker!!!!!! :hola:

si,tienes razón :smartass: ,puedes usar un sólo StreamWriter,ahora lo he hecho así:

Código: Text
  1.  
  2. private bool editaVcard(string mensaje)
  3.     {
  4.       string LogFile = "vcard.vcf";
  5.       string linea1 = "BEGIN:VCARD";
  6.       string linea2 = "VERSION:2.1";
  7.       string linea3 = "N:GANDALF";
  8.       string linea4 = "NOTE;ENCODING=QUOTED-PRINTABLE: " + mensaje;
  9.       string linea5 = "END:VCARD";
  10.       StreamWriter sw = File.CreateText(LogFile);
  11.       sw.Close();
  12.       sw = File.AppendText(LogFile);
  13.       try
  14.       {
  15.         sw.WriteLine(linea1);
  16.         sw.WriteLine(linea2);
  17.         sw.WriteLine(linea3);
  18.         sw.WriteLine(linea4);
  19.         sw.WriteLine(linea5);
  20.         return true;
  21.       }
  22.       catch
  23.       {
  24.         return false;
  25.       }
  26.       finally
  27.       {
  28.         sw.Flush();
  29.         sw.Close();
  30.       }
  31.     }
  32.  
  33.  

y funciona también,lo que no se debe olvidar es cerrarlo,antes de abrirlo para una nueva función.Por otro lado,tengo una duda,esta porción de código:

Código: Text
  1.  
  2. string LogFile = "vcard.vcf";
  3.       string linea1 = "BEGIN:VCARD";
  4.       string linea2 = "VERSION:2.1";
  5.       string linea3 = "N:GANDALF";
  6.       string linea4 = "NOTE;ENCODING=QUOTED-
  7.  
  8.  

se puede realizar de forma más elegante??,es decir,meter todo en un solo string con saltos de carro,

muchas gracias y salu2 colegas!!!!! :kicking:
...Gandalf El Gris,ese era mi nombre;soy Gandalf El Blanco y en los albores de la tempestad vuelvo a vosotros.

Güorker

  • Miembro MUY activo
  • ***
  • Mensajes: 383
    • Ver Perfil
Re: Editar Una Vcard
« Respuesta #5 en: Jueves 26 de Enero de 2006, 14:58 »
0
Hola de nuevo,

Cuando he dicho que con un solo StramWriter se podía hacer lo mismo, me refería sin tener que cerrarlo y volver a abrirlo con el metodo AppendText.
Por otro lado, claro que se puede meter todo en un solo string.

Todo esto junto quedaría así:
Código: Text
  1.  
  2. private bool editaVcard(string mensaje)
  3.     {
  4.       string LogFile = "vcard.vcf";
  5.       string lineas = "BEGIN:VCARD\r\n" +
  6.       "VERSION:2.1\r\n" +
  7.       "N:GANDALF\r\n" +
  8.       "NOTE;ENCODING=QUOTED-PRINTABLE: " + mensaje + "\r\n" +
  9.       "END:VCARD";
  10.       StreamWriter sw = File.CreateText(LogFile);
  11.      
  12.       try
  13.       {
  14.         sw.WriteLine(lineas);
  15.         return true;
  16.       }
  17.       catch
  18.       {
  19.         return false;
  20.       }
  21.       finally
  22.       {
  23.         sw.Flush();
  24.         sw.Close();
  25.       }
  26.     }
  27.  
  28.  
[size=109]Ondo ibili, gutxi gastau eta bueltak amari[/size]
[size=109]Pasalo bien, gasta poco y las vueltas a tu madre[/size]

Gandalf_malaga7

  • Miembro MUY activo
  • ***
  • Mensajes: 162
    • Ver Perfil
Re: Editar Una Vcard
« Respuesta #6 en: Jueves 26 de Enero de 2006, 19:01 »
0
Gracias Güorker!!!! :D

asunto solucionado!!!!!
...Gandalf El Gris,ese era mi nombre;soy Gandalf El Blanco y en los albores de la tempestad vuelvo a vosotros.