Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 13-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
no hace falta que me trates de usted . probablemente es que no se graba el archivo

Código Delphi [-]
       ....
        if slFile[i]='*Inicio' then 
        begin
          flgInicio := True;
          continue;
        end;
 
        if (slFile[i]='*Fin' then
        begin
          flgFin := True;   
          continue;
        end;
        
        if (flgInicio=True) and (flgFin=False) then //esto lo puedes simplificar, pero es solo para que se entienda
        begin
               showmessage('Dentro del bucle...')
            slFileNuevo.Add(slFile[i]); //añadimos en el nuevo
        end;
        ...

si, ejecutando el programa, no te aparece este showmessage, es que no se entra. Quiza sea entonces que los marcadores estan incorrectos (ten en cuenta que '*Inicio' es distinto de '*inicio')
Responder Con Cita
  #22  
Antiguo 13-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
¿puedes poner el codigo de la funcion?
Responder Con Cita
  #23  
Antiguo 13-07-2008
Avatar de mauser1985
mauser1985 mauser1985 is offline
Miembro
 
Registrado: feb 2008
Posts: 21
Poder: 0
mauser1985 Va por buen camino
Si ya coloque los marcadores que son correcos y he ahi donde me sale la excecion Sr Coso si quiere le mando el archivo problema y ahi usted vera que es lo que pasa.... pues el codigo que tengo es el mismo que me han sugerido solo con algunas modificaciones
Responder Con Cita
  #24  
Antiguo 13-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
no no, ponlo aqui enganchado, en un mensaje, por si a alguien luego le sale el mismo error...
Responder Con Cita
  #25  
Antiguo 13-07-2008
Avatar de mauser1985
mauser1985 mauser1985 is offline
Miembro
 
Registrado: feb 2008
Posts: 21
Poder: 0
mauser1985 Va por buen camino
Post

ok, este es la excepcion...
Project gid_1.exe raised excepcion class EStringlistError with message 'List Index out of bounds (3006)'. Process stopped. Use step or run to continue...
Responder Con Cita
  #26  
Antiguo 13-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
no, la excepcion no, el codigo
Responder Con Cita
  #27  
Antiguo 13-07-2008
Avatar de mauser1985
mauser1985 mauser1985 is offline
Miembro
 
Registrado: feb 2008
Posts: 21
Poder: 0
mauser1985 Va por buen camino
A ok .

unit gid1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Button4: TButton;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
slfile: tstringlist;
slfilenuevo:tstringlist;
filename:string;
Numerofile:integer;
flginicio,flgfin: boolean;
nombre:string;

implementation

{$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject);
begin
Application.Terminate;
end;

procedure TForm1.Button1Click(Sender: TObject);


begin

slfile:=tstringlist.create;
slfilenuevo:=tstringlist.create;

if opendialog1.execute then
begin
filename:=opendialog1.filename;
slfile.loadfromfile(filename);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
i: integer;
begin
flginicio:=false;
flgfin:= false;
numerofile:=1;
for i:=0 to slfile.count - 1 do
begin
if slfile[i]= '*Node' then
flginicio:=true;
if slfile[i]= '*Element' then
flgfin:=true;
if (flgInicio=True) and (flgFin=False) then
slFileNuevo.Add(slFile[i+1]);
if flgFin=True then
begin

showmessage(' Holaaaaa ');
slFileNuevo.SaveToFile(nombre+'.bas');
flgInicio := False;
flgFin := False;
Inc(NumeroFile);
end;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);


begin
nombre:= edit1.Text;
end;

end.
Responder Con Cita
  #28  
Antiguo 13-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
puedes ajuntar tambien el archivo de datos? es secuencial de texto no? yo en principio no le veo ningun fallo (liberar las tstringlist, como mucho)... (excepto lo comentado antes para no incluir el '*Fin'...) Supongo que pulsaras primero el 1, luego el 4, luego el 2 y finalmente el 3

Última edición por coso fecha: 13-07-2008 a las 23:03:55.
Responder Con Cita
  #29  
Antiguo 13-07-2008
Avatar de mauser1985
mauser1985 mauser1985 is offline
Miembro
 
Registrado: feb 2008
Posts: 21
Poder: 0
mauser1985 Va por buen camino
es que el archivo es muy largo si quiere me da su mail y se lo mando por correo, no creo que quepa por aqui de verdad
Responder Con Cita
  #30  
Antiguo 13-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
berserker9_94@hotmail.com
Responder Con Cita
  #31  
Antiguo 13-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
si, ya se lo que te ocurre. La linea con el marcador de final no es '*Element', es *Element, type=C3D4', por lo que sigue corriendo hasta llegar al final. La excepcion te debe venir probablemente por pasarte de largo en el numero de lineas (en la linea slFileNuevo.Add(slFile[i+1]), probablemente). Otro detalle, el 1 no esta en la primera columna, sino que aparece ' 1, ...'

por lo tanto : deberas canviar el if slFile[i] = '*Element' por if Pos(slFile[i],'*Element') <> 0 y el slFileNuevo.Add( añadir slFileNuevo.Add(Trim(strscan(PChar(TrimLeft(slFile[i]),',')) . Fijate, a más, en los posts anteriores que se comenta sobre el continue.

saludos
Responder Con Cita
  #32  
Antiguo 13-07-2008
Avatar de mauser1985
mauser1985 mauser1985 is offline
Miembro
 
Registrado: feb 2008
Posts: 21
Poder: 0
mauser1985 Va por buen camino
Sr. Coso modifique todo lo que ud sugirio ya no me sale la excepcion pero el archivo no me lo guarada como antes
Responder Con Cita
  #33  
Antiguo 13-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
y lo del hola te sale??
Responder Con Cita
  #34  
Antiguo 13-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
perdon, al reves : Pos('*Element',slFile[i]) altas horas ya por aqui
Responder Con Cita
  #35  
Antiguo 13-07-2008
Avatar de mauser1985
mauser1985 mauser1985 is offline
Miembro
 
Registrado: feb 2008
Posts: 21
Poder: 0
mauser1985 Va por buen camino
Buerno disculpe la molestia de verdad que verguenza con usted es que esto ya me tiene de cabeza, le acabo de modificar el pos, y ni me graba el archivo ni me sale el mensaje hola...

begin
flginicio:=false;
flgfin:= false;
numerofile:=1;
for i:=0 to slfile.count - 1 do
begin
if slfile[i]= '*Node' then
flginicio:=true;
continue;
if Pos('*Element, type=C3D4',slFile[i]) <> 0 then
flgfin:=true;
continue;
showmessage(' Holaaaaa ');
if (flgInicio=True) and (flgFin=False) then
slFileNuevo.Add(slFile[i]);

if flgFin=True then
begin
slFileNuevo.Add(Trim(strscan(PChar(TrimLeft(slFile[i])),',')));

slFileNuevo.SaveToFile(nombre+'.bas');
flgInicio := False;
flgFin := False;
Inc(NumeroFile);
end;
end;
end;
Responder Con Cita
  #36  
Antiguo 13-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
no, if Pos('*Element',slFile[i]) <> 0...
Responder Con Cita
  #37  
Antiguo 13-07-2008
Avatar de mauser1985
mauser1985 mauser1985 is offline
Miembro
 
Registrado: feb 2008
Posts: 21
Poder: 0
mauser1985 Va por buen camino
nada no me guarda el archivo
Responder Con Cita
  #38  
Antiguo 13-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
        ls,lg : TStringList;
        i, n ,r : longint;
        nm,ns : string;
begin
        if OpenDialog1.Execute then nm := OpenDialog1.Filename else exit; // cogemos nombre a cargar
        ls := TStringList.Create;  // creamos lista
        lg := TStringList.Create;  // creamos lista
        ls.LoadFromFile(nm); // cargamos fichero
        ns := ExtractFilePath(Application.Exename) + '\' + Edit1.Text; // preparamos nombre destino
        r := ls.Count; // numero lineas de fichero
        i := 0;
        n := 0;
        while i < r do 
        if Pos('*Node',ls[i]) <> 0 then // si se encuentra '*Node' en ls[i]...
        begin
          inc(i); // para saltar la linea con el node
          inc(n); // numero archivo
          while (Pos('*Element',ls[i]) = 0) and (i < r) do // mientras no se encuentra element y no se ha llegado al final
          begin
            lg.Add(Trim(strscan(PChar(TrimLeft(ls[i])),','))); // añadimos, eliminando la primera columna
            inc(i);
          end;
          lg.SavetoFile(ns + inttostr(n) + '.txt'); // se ha encontrado element o final, grabamos
        end
        else inc(i); // si no, seguimos
        ls.Free; // liberamos
        lg.Free;
end;

es raro, el codigo anterior parecia que no tuviese ningun error. Mañana le echare un vistazo. Este funciona.

Última edición por coso fecha: 14-07-2008 a las 00:01:36.
Responder Con Cita
  #39  
Antiguo 14-07-2008
Avatar de mauser1985
mauser1985 mauser1985 is offline
Miembro
 
Registrado: feb 2008
Posts: 21
Poder: 0
mauser1985 Va por buen camino
Muchas gracias Sr Coso ahora con este codigo si me guarda lo que espero
Responder Con Cita
  #40  
Antiguo 14-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Código Delphi [-]
if slfile[i]= '*Node' then
begin
flginicio:=true;
continue;
end;
if Pos('*Element',slFile[i]) <> 0 then
begin
flgfin:=true;
continue;
end;
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
Ayuda: Necesito refrescar la aplicación MIENTRAS se copian archivos muy grandes Black_Ocean Varios 7 10-04-2008 21:07:51
Necesito ayuda para recuperar unos archivos ddd_ddd Varios 2 24-10-2007 15:49:26
Manejo de archivos binarios en Delphi rodrigo19 Varios 6 26-05-2007 02:36:52
Necesito ayuda con indices .ndx para archivos dbf dinover7 Conexión con bases de datos 1 21-05-2007 21:41:34
Necesito ayuda para manerjar archivos meosre Varios 2 08-09-2005 18:37:34


La franja horaria es GMT +2. Ahora son las 05:05:13.


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