Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-06-2006
jonmendi jonmendi is offline
Miembro
 
Registrado: dic 2004
Posts: 110
Poder: 20
jonmendi Va por buen camino
file of, caracter de separación

hola a todos!
No se si es el lugar más adecuado, ya que ahora estoy programando en Pascal, pero supongo que muchos de vosotros habréis hecho pinitos (y más) con él.
Estoy haciendo un programilla que debe guardar unos registros de un tipo determinado (tipoNuevo) en un fichero en disco. Creo un file of tipoNuevo, y al grabar o leer los registros me los graba / lee bien. El problema surge cuando edito el archivo como texto. Entre campo y campo de cada registro veo que me ha insertado un carácter variable (puede ser cualquiera). El asunto es que necesito quitar este caracter, pues las ristras que le dejo yo las usa otro programa que no espera encontrar nada ahí.
He probado a escribir todo como un archivo de texto, pero el problema es que al permitir solo reset, rewrite, append no puedo acceder a la fila que yo quiero y modificarla.
¿Alguien me puede dar laguna pista?
Muuuuuuuuuuchísimas gracias.
Jon
Responder Con Cita
  #2  
Antiguo 07-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Como archivo de texto, si usas Rewrite te borrará el archivo, pero con Reset te puedes situar la principio, y despues con ReadLn puedes ir leyendo hasta situarte en la línea adecuada, para modificar, usas WriteLn.

Si usas un File of TRecord, no puedes modificar despues a mano el archivo, porque se crean las marcas de fin de registro, si lo modificas, despues al leer dará fallos.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 07-06-2006
jonmendi jonmendi is offline
Miembro
 
Registrado: dic 2004
Posts: 110
Poder: 20
jonmendi Va por buen camino
gracias Lepe,
es lo que he intentado, pero existe el siguiente problema. Si abro con reset el archivo es solo de lectura (ya que es de texto), por lo que aunque lea las líneas y me posiciones en la que yo quiero, a la hora de escribir tendré que hacer un rewrite, con lo que me borrará el archivo y me creará uno vacío.
¿Alguna ideas más?

Muchas gracias,
Jon
Responder Con Cita
  #4  
Antiguo 07-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Quizás fuera conveniente leer todo el archivo en memoria ¿es muy grande?

Si no lo es, 2000 o 3000 registros, puedes usar un TStringList y quitarte de todos esos problemas:

Código Delphi [-]
var Archivo:TStringList;
begin
  Archivo := TStringList.Create;
  Archivo.LoadFromFile('c:\mio.txt');
  if Archivo.Count > 129 then // si tiene más de 129 líneas
    Archivo[128] := 'Por la cara modifico el texto';
  if Archivo.Count > 0 then
    Archivo[0] := Archivo[0] + ' Añado texto a la primera fila';

  if Archivo.Count > 3 then
    Archivo.Insert(2,'inserto en la posición 3, recuerda empieza en cero');
  Archivo.Add('añado al final este texto');
  Archivo.Delete(0); // borro la primera linea
  Archivo.SaveToFile('c:\mio.txt');
  FreeAndNil(Archivo);
end;

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 07-06-2006
jonmendi jonmendi is offline
Miembro
 
Registrado: dic 2004
Posts: 110
Poder: 20
jonmendi Va por buen camino
muchas gracias lepe, pero (parezco el hombre de los peros) me temo que en turbo pascal no existe TStringList (o al menos yo no lo conozco). Lo único que se me ocurre es antes de escribir leer todo, añadir en el sitio adecuado la ristra que quiero y volver a escribir todo. Pero no me convence en absoluto.

Un saludo
Jon
Responder Con Cita
  #6  
Antiguo 07-06-2006
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
porque no pruebas a bajar el FreePascal? si mal no recuerdo ya tiene la clase de TStrings o TStringList,

otra opcion seria que hicieras el guardado de registros a mano, pero guardandolos como texto delimitado por comas, y donde cada registro es un renglon por ejemplo
"reg1campo1","reg1campo2","reg1Campo3","etc"
"reg2campo1","reg2campo2","etc","etc"

lo que si, es que es mas chamba, sin embargo, no dudo que haya por ahi una unidad ya hecha para leer y guardar datos en este formato...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayudaaaa!!! Tabla ASCII: El carácter Ñ vs. carácter ¥ Berto2003 Varios 5 26-07-2005 15:37:48
mainmenu y barritas de separación unreal4u Varios 2 22-04-2005 21:19:46
Caracter \r\n FRANKER Varios 3 03-06-2004 10:02:43
busqueda caracter a caracter Irina SQL 3 20-05-2003 13:12:53
sql a file jsanchez SQL 2 13-05-2003 21:34:03


La franja horaria es GMT +2. Ahora son las 01:47:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi