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 30-09-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Problemas al crear TXT y asignar un String

Holas:

Estoy trabajando con archivos TXT, tengo unas rutinas que verifican si el archivo exista o no, si no existe lo creo y le asigno un String,pues aquí sucede siempre el problema, me da un error I/O Errror 103. No obstante si el archivo ya se encuentra creado no tengo ningún problema.

Les dejo el código:

Código Delphi [-]
 chdir('C:\');
   if not FileExists('BOL_FECHA.txt') then
     FileCreate('BOL_FECHA.txt');
   AbrirArchivo('BOL_FECHA.txt');

Código Delphi [-]
 procedure TFrmInterfaz.AbrirArchivo(Nombre : ShortString);
 begin
   chdir('C:\');
   try
     assignfile(Archivo,Nombre);
     append(Archivo);
   except
     closefile(Archivo);
     ShowMessage('Se ha producido un error al intentar abrir el archivo');
   end;
 end;
 

 procedure TFrmInterfaz.CerrarArchivo(Nombre : ShortString);
 begin
   closefile(Archivo);
 end;

Trabajo con Delphi 7...
Gracias anticipadas al que pueda brindarme una ayuda

Saludos
__________________
No todo es como parece ser...
Responder Con Cita
  #2  
Antiguo 30-09-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Necesitas manejar los archivos de texto de esa manera?

Por que también puedes usar la clase TStringList para hacer lo que necesitas.

Código Delphi [-]
var
  ATextFile: TStringList;

begin
  ATextFile := TStringList;
  try
    if FileExists('bol_fecha.txt') then
      ATextFile.LoadFromFile('bol_fecha.txt');
    // Aquí manipulas el archivo por ejemplo:
    ATextFile.Add('Una línea nueva al final');
    ATextFile.Insert(3, 'Insertando una línea en la 4ta. pocisión');
    ATextFile[0] := 'Cambiando el contenido de la primera línea');
    ATextFile.Delete(2); // Eliminando la 3ra. fila
    ATextFile.SaveToFile('bol_fecha.txt')
  finally
    ATextFile.Free
  end
end;
Responder Con Cita
  #3  
Antiguo 30-09-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

Yo creo que andaría bien, pero el problema me sucede cuando el archivo TXT no existe y por lo tanto yo lo tengo que crear..

__________________
No todo es como parece ser...
Responder Con Cita
  #4  
Antiguo 30-09-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

Olvidé escribir esto:

Código Delphi [-]
 procedure TfrmInterfaz.EscribirArchivo;
 begin
   writeln(Archivo,concatenacion);
   writeln(Archivo,' ');
   flush(Archivo);
 end;

y les dejo toda la rutina para que se comprenda mejor:

Código Delphi [-]
 procedure TFrmInterfaz.btnBolFechaClick(Sender: TObject);
 var
   tipo,boleta_id,rut,fecha,lote,codigo,monto,descuento,montomp,
   codigo_Doc,nro_documento,fecha_vcto,cod_articulo,cantidad,
   preciounitario : String;
   cantidad_doc : SmallInt;
   venta_id : String;
 begin
   chdir('C:\');
   if not FileExists('BOL_FECHA.txt') then
     FileCreate('BOL_FECHA.txt');
   AbrirArchivo('BOL_FECHA.txt');
   with DMServidores.OQryBoletaFecha do
   begin
     SQL.Clear;
     Close;
     SQL.Add('Select * from Out_Venta');
     Execute;
     while Eof = False do
     begin
       tipo := Uppercase(Field(0));
       boleta_id := UpperCase(Field(1));
       rut := QuitarGuion(UpperCase(Field(2)));
       fecha := FormatDateTime('ddmmyyyy', StrToDate(Field(3)));
       lote := UpperCase(Field(4));
       codigo := UpperCase(Field(5));
       monto := UpperCase(Field(6));
       descuento := UpperCase(Field(7));
       venta_id := UpperCase(Field(8));
       concatenar(tipo,boleta_id,rut,fecha,lote,codigo,
                  monto,descuento);
       With DMServidores.OQryMedioPago do
       begin
         SQL.Clear;
         Close;
         SQL.Add('Select * From Out_Venta_Medio_Pago');
         SQL.Add(' Where Venta_Id =' + venta_id );
         Execute;
         while EOF = False do
         begin
           cantidad_doc := RowsProcessed;
           montomp := UpperCase(Field(1));
           codigo_Doc := UpperCase(Field(2));
           //dateseparator := #0;
           if varisnull(Field(3)) or VarIsEmpty(Field(3)) then nro_documento := FormatDateTime('ddmmyyyy', date)
           else nro_documento := UpperCase(Field(3));
           //dateseparator := #0;
           fecha_vcto := FormatDateTime('ddmmyyyy', StrToDate(Field(4)));
           Concatenar(cantidad_doc,montomp,codigo_doc,nro_documento,fecha_vcto);
           Next;
         end;
 
       end;
       With DMServidores.OQryVentaDet do
       begin
         SQL.Clear;
         Close;
         SQL.Add('Select * from Out_Venta_Detalle');
         SQL.Add(' Where Venta_Id =' + venta_id );
         Execute;
         while EOF = False do
         begin
           cod_articulo := UpperCase(Field(1));
           cantidad := UpperCase(Field(2));
           preciounitario := UpperCase(Field(3));
           concatenar(cod_articulo,cantidad,preciounitario);
           Next;
         end;
       end;
       EscribirArchivo();
       next;
     end;
     Free;
     CerrarArchivo('bol_fecha.txt');
     Showmessage('Datos traspasados con exito');
     concatenacion := '';
   end;
 end;

insisto el problema solo sucede cuando el archivo TXT no existe

Saludos..
__________________
No todo es como parece ser...
Responder Con Cita
  #5  
Antiguo 30-09-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Parece que no me entendiste o no me explique bien... jejeje

Voy a tratar de usar tu código para que entiendas:

Código Delphi [-]
procedure TFrmInterfaz.btnBolFechaClick(Sender: TObject);
var
  // Todas tus declaraciones
  ATextFile: TStringList;

begin
  ATextFile := TStringList.Create;
  try
    chdir('C:\');
    // Si el archivo existe lo abrimos, si no, no hay problema
    if FileExists('BOL_FECHA.txt') then
      ATextFile.LoadFromFile('BOL_FECHA.txt');
    with DMServidores.OQryBoletaFecha do
    begin
      // Aquí tu código...
      // En donde usas el procedimiento Concatenar utiliza:
      ATextFile.Add(tipo + boleta_id + rut + fecha + lote + 
        codigo + monto + descuento)
    end;
    { Aquí guardas el contenido de ATextFile a un archivo, si no existe, 
      el método lo crea: }
    try
      ATextFile.SaveToFile('BOL_FECHA.txt')
    except
      ShowMessage('Ocurrió un error guardando el archivo')
    end
  finally
    ATextFile.Free
  end
end;

No se que hace exactamente el procedimiento o función Concatenar, pero me imagino que une el contenido de las variables en una sola línea y la agrega al archivo que estás manejando. Es por eso que solo use el (+) para unirlas de la misma manera.

Espero que con esto me de a entender mejor.


Saludos...
Responder Con Cita
  #6  
Antiguo 30-09-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

maeyanes, gracias resulto de maravilla, ya no se cae..
No quedo igual como lo expusiste tú ya que tendría que haber cambiado algunas cosas, pero lo acomodé a lo lógica del programa y está funcionando bien..

Nuevamente gracias..

Saludos

PD: No está malo saber porque de la otra forma se caía..
__________________
No todo es como parece ser...
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


La franja horaria es GMT +2. Ahora son las 07:58:08.


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