Ir al contenido


Foto

Consulta con FindFirst


  • Por favor identifícate para responder
30 respuestas en este tema

#1 monchito_elroro

monchito_elroro

    Advanced Member

  • Miembros
  • PipPipPip
  • 259 mensajes

Escrito 22 octubre 2011 - 12:28

Buenas amiguitos, disculpen si los interrumpo en sus labores
pero les quiero pedir un favorcito:

si me pueden ayudar informandome para que sirve y como se usa la
función de buscar archivos "FindFirst" y si fuera posible con un ejemplillo
el más sencillin...... gracias  :)
  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 23 octubre 2011 - 06:31

Es igual que en delphi.

FindFirst y FindNext trabajan juntos para navegar por las carpetas y archivos. La ayuda de delphi te puede ser muy útil. Si realizas una búsqueda en el foro encontrarás numerosos ejemplos de uso.

En la ayuda de Lazarus tienes un ejemplo que te cito aquí:


delphi
  1. Program Example43;
  2.  
  3. { This program demonstrates the FindFirst function }
  4.  
  5. Uses SysUtils;
  6.  
  7. Var Info : TSearchRec;
  8.     Count : Longint;
  9.  
  10. Begin
  11.   Count:=0;
  12.   If FindFirst ('*',faAnyFile and faDirectory,Info)=0 then
  13.     begin
  14.     Repeat
  15.       Inc(Count);
  16.       With Info do
  17.         begin
  18.         If (Attr and faDirectory) = faDirectory then
  19.           Write('Dir : ');
  20.         Writeln (Name:40,Size:15);
  21.         end;
  22.     Until FindNext(info)<>0;
  23.     end;
  24.   FindClose(Info);
  25.   Writeln ('Finished search. Found ',Count,' matches');
  26.  
  27. End.



Saludos.
  • 0

#3 monchito_elroro

monchito_elroro

    Advanced Member

  • Miembros
  • PipPipPip
  • 259 mensajes

Escrito 23 octubre 2011 - 10:00

Amigo y que vendrían a ser "faAnyFile" y "faDirectory"......... gracias....... :)
  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 23 octubre 2011 - 12:19

Amigo y que vendrían a ser "faAnyFile" y "faDirectory"......... gracias....... :)

Son constantes definidas para los atributos que puede tener un archivo.
Cada constante representa un atributo. Por ejemplo faDirectory hace referencia a que el archivo es un directorio, faAnyFile corresponde a un archivo cualquiera.

Cada constante representa un valor numérico, y se puede varios atributos (y debe, en realidad) combinarse con ands y ors.

Como ha dicho escafandra, ¡lee la ayuda de Delphi que allí está documentado! por favor.

Saludos,
  • 0

#5 monchito_elroro

monchito_elroro

    Advanced Member

  • Miembros
  • PipPipPip
  • 259 mensajes

Escrito 24 octubre 2011 - 12:43

Amigos aquí yo de nuevo, les cuento mis avances....
resulta que todo lo que me han recomendado me ha ayudado mucho
pero me he cruzado con otro inconveniente y es el siguiente:

De momento estoy practicando con este código para cambiar atributos
recursivamente:



delphi
  1. procedure ChangeAttributes(const path:String);
  2.   var
  3.     search : TSearchRec;
  4.     nFiles : integer;
  5.     cPath : String;
  6.  
  7.   begin
  8.   cpath:=path {GetCurrentDir+'\';};
  9.   nfiles:=findfirst(cpath + '*.*', faanyfile, search);
  10.   while nfiles = 0 do
  11.   begin
  12.     if search.Attr = fadirectory then
  13.     begin
  14.       if (search.Name<>'.') and (search.Name<>'..') then
  15.       begin
  16.         setfileattributes(Pchar(cpath+search.Name), FILE_ATTRIBUTE_NORMAL);
  17.         ChangeAttributes(path + search.Name + '\');
  18.       end;
  19.     end
  20.     else
  21.     SetFileAttributes(PChar(cPath + search.Name),FILE_ATTRIBUTE_NORMAL);
  22.     ChangeAttributes(path + search.Name + '\');
  23.     nFiles:=FindNext(Search);
  24.     end;
  25.   //begin
  26.     FindClose(search);
  27.   //end;
  28.   end;



El código es estupendo pero cuando lo ejecuto me sale error:



delphi
  1. unit1.pas(47,26) Error: Identifier not found "setfileattributes"
  2. unit1.pas(47,74) Error: Identifier not found "FILE_ATTRIBUTE_NORMAL"
  3. unit1.pas(52,22) Error: Identifier not found "SetFileAttributes"
  4. unit1.pas(52,71) Error: Identifier not found "FILE_ATTRIBUTE_NORMAL"
  5. unit1.pas(93) Fatal: There were 4 errors compiling module, stopping



Lo cual lo arreglo aumentando la Uses "windows" .....

pero aquí viene otro problema que después de agregar dicha uses cuando está compilando
me lanza otro error que basicamente dice:



delphi
  1. unit1.pas(57,21) Error: Incompatible type for arg no. 1: Got "TSearchRec", expected "QWord"



y me indica que es del comando "FindClose(search);" que he puesto......

ahora..... veo que esto es debido al uses "windows" que he puesto
(sin lo cual los demás comandos no funcionan) pero entonces que debo hacer....

Gracias por la ayuda... :)

PD: estoy usando Lazarus

  • 0

#6 monchito_elroro

monchito_elroro

    Advanced Member

  • Miembros
  • PipPipPip
  • 259 mensajes

Escrito 24 octubre 2011 - 07:43

Por favor ayudenme...... :
  • 0

#7 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 25 octubre 2011 - 12:19

Aquí te respondí a esta misma cuestión. ¿Recuerdas?

Constant    Value    Description
__________________________

faReadOnly    $00000001    Read-only files
faHidden      $00000002    Hidden files
faSysFile      $00000004    System files
faVolumeID    $00000008    Volume ID files
faDirectory    $00000010    Directory files
faArchive    $00000020    Archive files
faAnyFile    $0000003F    Any file



Saludos.

  • 0

#8 monchito_elroro

monchito_elroro

    Advanced Member

  • Miembros
  • PipPipPip
  • 259 mensajes

Escrito 25 octubre 2011 - 06:31

Buenas amiguitos agradezco sus comentarios y ayuda. Les comento que ya pude realizar mi cometido, y sobre
el problema con el "findclose" resulta que lo que tenía que hacer era o bien
anteponer el USES "windows" al de "sysutils" o sino en vez de poner:



delphi
  1. findclose(search);



tenía que poner:


delphi
  1. SysUtils.FindClose(search);



ahora les enseño el código que estoy usando:




delphi
  1. unit Unit1;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   //Classes, windows, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, SysUtils ;
  9.     Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, windows  ;
  10. type
  11.  
  12.   { TForm1 }
  13.  
  14.   TForm1 = class(TForm)
  15.     Button1: TButton;
  16.     Edit1: TEdit;
  17.     Label1: TLabel;
  18.     procedure Button1Click(Sender: TObject);
  19.   private
  20.     { private declarations }
  21.   public
  22.     { public declarations }
  23.   end;
  24.  
  25. var
  26.   Form1: TForm1;
  27.  
  28.  
  29. implementation
  30.  
  31. {$R *.lfm}
  32.  
  33. { TForm1 }
  34. procedure ChangeAttributes(const path:String);
  35.   var
  36.     search : TSearchRec;
  37.     nFiles : integer;
  38.     cPath : String;
  39.   begin
  40.  
  41.   cpath:=path {GetCurrentDir+'\';};
  42.   nfiles:=findfirst(cpath + '*.*', faanyfile, search);
  43.   if nfiles = 0 then
  44.   begin
  45.     if search.Attr = fadirectory then
  46.     begin
  47.     repeat
  48.       //showmessage(search.Name);    //funciona
  49.       //label1.caption:=search.Name;  //no funca
  50.       if (search.Name<>'.') and (search.Name<>'..') then
  51.       begin
  52.           setfileattributes(Pchar(cpath+search.Name), FILE_ATTRIBUTE_NORMAL);
  53.           ChangeAttributes(path + search.Name + '\');
  54.       end;
  55.       until (FindNext(search) <> 0);
  56.     end
  57.     {else
  58.     SetFileAttributes(PChar(cPath + search.Name),FILE_ATTRIBUTE_NORMAL);
  59.     ChangeAttributes(path + search.Name + '\');
  60.  
  61.     nFiles:=FindNext(Search);}
  62.     end;
  63.     SysUtils.FindClose(search);
  64.  
  65.   end;
  66.  
  67. procedure TForm1.Button1Click(Sender: TObject);
  68. begin
  69.     ChangeAttributes(GetCurrentDir+'\');
  70.     //label1.Caption:=search.Name;
  71. end;
  72. end.




Con este código puedo realizar mi cometido para cambiar todos los atributos
de todos los archivos (recursivamente) en donde se encuentre mi programa...

A la vez quisiera hacerles una consulta...

como puedo mostrar todos los archivos que procesa en un label, tedit o tmemo

si se fijan bien en una parte de mi código quize hacerlo con:


delphi
  1. label1.caption:=search.Name;



pero no me funciona pues no lo reconoce
a que se deberá.......

espero su ayuda.  :)

  • 0

#9 monchito_elroro

monchito_elroro

    Advanced Member

  • Miembros
  • PipPipPip
  • 259 mensajes

Escrito 27 octubre 2011 - 07:09

Holitas amigos, ya pude meter el :


delphi
  1. label1.caption

dentro del

delphi
  1. procedure ChangeAttributes(const path:String);



tenía que poner este último dentro del procedimiento del tbutton.....

lo cual quedaría algo así:



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. procedure ChangeAttributes(const path:String);
  3.   var
  4.     search : TSearchRec;
  5.     nFiles : integer;
  6.     cPath : String;
  7.   begin
  8.  
  9.   cpath:=path {GetCurrentDir+'\';};
  10.   nfiles:=findfirst(cpath + '*.*', faanyfile, search);
  11.   if nfiles = 0 then
  12.   begin
  13.     if search.Attr = fadirectory then
  14.     begin
  15.     repeat
  16.       label1.caption:=search.Name;  // ahora si se puede usar este código
  17.       if (search.Name<>'.') and (search.Name<>'..') then
  18.       begin
  19.           setfileattributes(Pchar(cpath+search.Name), FILE_ATTRIBUTE_NORMAL);
  20.           ChangeAttributes(path + search.Name + '\');
  21.       end;
  22.       until (FindNext(search) <> 0);
  23.     end
  24.     {else
  25.     SetFileAttributes(PChar(cPath + search.Name),FILE_ATTRIBUTE_NORMAL);
  26.     ChangeAttributes(path + search.Name + '\');
  27.  
  28.     nFiles:=FindNext(Search);}
  29.     end;
  30.     SysUtils.FindClose(search);
  31.  
  32.   end;
  33.  
  34. begin
  35.     ChangeAttributes(GetCurrentDir+'\');
  36.    
  37. end;




pero ahora tengo otro problemilla.....
resulta que el código que les mande me trabaja bien pero cuando hay varios archivos el programita se cuelga y sólo cambia los atributos a algunos....

ustedes creen que este bien este código que les puse o no...... gracias :)


  • 0

#10 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 27 octubre 2011 - 09:17

Hola

Intenta cambiando esto:



delphi
  1. if (search.Name<>'.') and (search.Name<>'..')



por esto:



delphi
  1. if (search.Name<>'.') OR (search.Name<>'..')



SaludOS
  • 0

#11 monchito_elroro

monchito_elroro

    Advanced Member

  • Miembros
  • PipPipPip
  • 259 mensajes

Escrito 28 octubre 2011 - 07:34

Gracias lo intentaré y luego les cuento....  :) :)
  • 0

#12 monchito_elroro

monchito_elroro

    Advanced Member

  • Miembros
  • PipPipPip
  • 259 mensajes

Escrito 28 octubre 2011 - 12:36

Bueno resulta que intente cambiando:


delphi
  1. if (search.Name<>'.') and (search.Name<>'..') then



por


delphi
  1. if (search.Name<>'.') or (search.Name<>'..') then



pero sigue igual se cuelga el programita, pero sólo en donde hay
muchos archivos (como mi memoria USB).

Pero tratando y tratando he logrado hacerlo funcionar con el siguiente
código:

NOTA: recalco que lo que deseo es que el programita me cambie todos
los atributos de todos los archivos y carpetas recursivamente en donde
lo ejecute.

este es el código:



delphi
  1. unit Unit1;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   //Classes, windows, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, SysUtils ;
  9.     Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, windows, UNIT2  ;
  10. type
  11.  
  12.   { TForm1 }
  13.  
  14.   TForm1 = class(TForm)
  15.     Button1: TButton;
  16.     Edit1: TEdit;
  17.     procedure Button1Click(Sender: TObject);
  18.   private
  19.     { private declarations }
  20.   public
  21.     { public declarations }
  22.   end;
  23.  
  24. var
  25.   Form1: TForm1;
  26.   //nFiles : integer;
  27.  
  28. implementation
  29.  
  30. {$R *.lfm}
  31.  
  32. { TForm1 }
  33. procedure ChangeAttributes(const path:String);
  34.   var
  35.     search : TSearchRec;
  36.     nFiles : integer;
  37.     cPath : String;
  38.   begin
  39.  
  40.   cpath:=path {GetCurrentDir+'\';};
  41.   nfiles:=findfirst(cpath + '*.*', faanyfile, search);
  42.   while nfiles = 0 do
  43.   //repeat
  44.   begin
  45.     //repeat
  46.     if search.Attr = fadirectory then
  47.     begin
  48.     repeat
  49.       if (search.Name<>'.') and (search.Name<>'..') then
  50.       begin
  51.           setfileattributes(Pchar(cpath+search.Name), FILE_ATTRIBUTE_NORMAL);
  52.           ChangeAttributes(path + search.Name + '\');  //original
  53.  
  54.       end;
  55.       until (FindNext(search) <> 0);
  56.  
  57.     end
  58.     else
  59.     repeat
  60.     SetFileAttributes(PChar(cPath + search.Name),FILE_ATTRIBUTE_NORMAL);
  61.     ChangeAttributes(path + search.Name + '\');    //original}
  62.  
  63.     until FindNext(search) <> 0;
  64.     //until FindNext(search) <> 0;
  65.     nFiles:=FindNext(Search);
  66.     end;
  67.     //until FindNext(search) <> 0;
  68.  
  69.     SysUtils.FindClose(search);
  70.  
  71.     {begin
  72.     if  nfiles= then
  73.     form2.Close;
  74.  
  75.     end;}
  76.  
  77.     end;
  78.  
  79. procedure TForm1.Button1Click(Sender: TObject);
  80.  
  81. begin
  82. {Form2 := Tform2.Create(Self);
  83. Form2.Show;}
  84.  
  85.     ChangeAttributes(GetCurrentDir+'\');
  86.  
  87. end;
  88.   //end;
  89. end.



Disculpen si es medio torpe este código pero es lo mejor que puedo hacer
(aparte de que me ha roto la cabeza)....

Espero sus opiniones y comentarios.

PD: Agradezco a escafandra por su código mas lo estoy dejando para el final
pues este que estoy usando lo quiero entender bien primero.


  • 0

#13 monchito_elroro

monchito_elroro

    Advanced Member

  • Miembros
  • PipPipPip
  • 259 mensajes

Escrito 28 octubre 2011 - 07:08

Buenas les cuento que al código le he implementado un Tmemo
para ver los archivos que procesa, lo adjunto al final y el código es este:



delphi
  1. unit Unit1;
  2. {$mode objfpc}{$H+}
  3. interface
  4.  
  5. uses
  6.   //Classes, windows, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, SysUtils ;
  7.     Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, windows, UNIT2  ;
  8. type
  9.  
  10.   { TForm1 }
  11.   TForm1 = class(TForm)
  12.     Button1: TButton;
  13.     Edit1: TEdit;
  14.     Label1: TLabel;
  15.     Memo1: TMemo;
  16.     StaticText1: TStaticText;
  17.     procedure Button1Click(Sender: TObject);
  18.   private
  19.     { private declarations }
  20.   public
  21.     { public declarations }
  22.   end;
  23.  
  24. var
  25.   Form1: TForm1;
  26.   //nFiles : integer;
  27.  
  28. implementation
  29.  
  30. {$R *.lfm}
  31.  
  32. { TForm1 }
  33.  
  34. procedure TForm1.Button1Click(Sender: TObject);
  35.   procedure ChangeAttributes(const path:String);
  36.       var
  37.         search : TSearchRec;
  38.         nFiles : integer;
  39.         cPath : String;
  40.       begin
  41.       cpath:=path {GetCurrentDir+'\';};
  42.       nfiles:=findfirst(cpath + '*.*', faanyfile, search);
  43.  
  44.       while nfiles = 0 do
  45.       {repeat
  46.       label1.Caption:=search.Name;
  47.       until (FindNext(search) <> 0); }
  48.  
  49.       begin
  50.         if search.Attr = fadirectory then
  51.         begin
  52.         repeat
  53.         memo1.Lines.Add(search.Name);      // FUNCIONA
  54.  
  55.        
  56.           if (search.Name<>'.') and (search.Name<>'..') then
  57.           begin
  58.          
  59.               setfileattributes(Pchar(cpath+search.Name), FILE_ATTRIBUTE_NORMAL);
  60.               ChangeAttributes(path + search.Name + '\');  //original
  61.  
  62.           end;
  63.           until (FindNext(search) <> 0);
  64.           end
  65.  
  66.         else
  67.         repeat
  68.        
  69.         SetFileAttributes(PChar(cPath + search.Name),FILE_ATTRIBUTE_NORMAL);
  70.         ChangeAttributes(path + search.Name + '\');    //original
  71.  
  72.         until FindNext(search) <> 0;
  73.      
  74.         nFiles:=FindNext(Search);
  75.         end;
  76.         SysUtils.FindClose(search);
  77.        
  78.         {begin
  79.         if  nfiles= then
  80.         form2.Close;
  81.         end;}
  82.         end;
  83.  
  84. begin
  85. {Form2 := Tform2.Create(Self);
  86. Form2.Show;}
  87.  
  88.     ChangeAttributes(GetCurrentDir+'\');
  89. end;
  90. end.





A la vez preguntarles porque cuando el programa se ejecuta se pone como
colgado hasta que acabe la operación..... me gustaría saber si se puede hacer
algo para que en vez de colgarse permita ejecutar otro proceso simultaneamente.

gracias.  :)

  • 0

#14 monchito_elroro

monchito_elroro

    Advanced Member

  • Miembros
  • PipPipPip
  • 259 mensajes

Escrito 28 octubre 2011 - 07:12

Se me olvidaba  :o, lo he creado con lazarus x64..... solo funciona en windows de 64bits
mañana les pondré el de 32bits .
  • 0

#15 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 31 octubre 2011 - 07:07

A la vez preguntarles porque cuando el programa se ejecuta se pone como
colgado hasta que acabe la operación..... me gustaría saber si se puede hacer
algo para que en vez de colgarse permita ejecutar otro proceso simultaneamente.


Threads.


Saludos.
  • 0

#16 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 01 noviembre 2011 - 02:34

Hombre, escafandra, tampoco hace falta ser "tan drástico" jejeje, no se si en Lazarus existirá el ProcessMessages que hay en Delphi en el objeto Application, pero si lo hay, yo creo que con eso bastaría.

A parte de eso, no entiendo por qué tanto bucle, con un único bucle que pasara por los archivos de la carpeta en curso tendría que ser suficiente, Simplemente mirar si es o no directorio, y si lo es entrar en él recursivamente.

Pongo un ejemplo de código, que no cambia atributos pero borra archivos jejeje



delphi
  1. procedure DeleteTmpFiles(TmpDir, Mask: string);
  2. var
  3.   Search: TSearchRec;
  4.   Files: integer;
  5. begin
  6.   if TmpDir = '' then Exit;
  7.  
  8.   TmpDir := IncludeTrailingPathDelimiter(TmpDir);
  9.  
  10.   Files := FindFirst(TmpDir + Mask, faAnyFile, Search);
  11.   while Files = 0 do
  12.   begin
  13.     if Search.Attr <> faDirectory then
  14.       DeleteFile(TmpDir + Search.Name)
  15.     else
  16.       if (Search.Name <> '.') and (Search.Name <> '..') then
  17.         DeleteDir(TmpDir + Search.Name);
  18.  
  19.     Files := FindNext(Search);
  20.   end;
  21.   FindClose(Search);
  22. end;



Espero te sirva de orientación

Nos leemos
cadetill
  • 0

#17 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 01 noviembre 2011 - 03:26

Hombre, escafandra, tampoco hace falta ser "tan drástico" jejeje, no se si en Lazarus existirá el ProcessMessages que hay en Delphi en el objeto Application, pero si lo hay, yo creo que con eso bastaría.

ProcessMessages existe en Lazarus pero no me gusta. Tratándose de una función recursiva debemos evitar la reentrada a la misma hasta que no termine... Esto obligaría al uso de banderas y el código no queda limpio... Prefiero y son mas seguros los threads. :)


A parte de eso, no entiendo por qué tanto bucle, con un único bucle que pasara por los archivos de la carpeta en curso tendría que ser suficiente, Simplemente mirar si es o no directorio, y si lo es entrar en él recursivamente.


Totalmente de acuerdo y así se lo sugerí:  *-)

Aquí te respondí a esta misma cuestión. ¿Recuerdas?



Saludos.
  • 0

#18 monchito_elroro

monchito_elroro

    Advanced Member

  • Miembros
  • PipPipPip
  • 259 mensajes

Escrito 01 noviembre 2011 - 10:47

Muchas Gracias por responder, les comento que puse varios bucles por que al principio no me andaba el proceso o simplemente se colgaba, les recalco que soy principiante en lazarus y es por eso que a veces los códigos los realizo hasta donde los entiendo y lo demás los trato de mezclar a la suerte hasta que me funcione uno..... es por eso que puse un "While" con tantos "repeat" porque al principio no me funcionaba el programita........ y ahora al menos realiza lo que deseo.

Voy a probar sus sugerencias....... y les cuento....

PD: que significa:

delphi
  1. IncludeTrailingPathDelimiter


de:


delphi
  1. TmpDir := IncludeTrailingPathDelimiter(TmpDir);


y gracias por recordarme que siempre el código debe estar limpio. :) :)

  • 0

#19 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 01 noviembre 2011 - 12:39

ProcessMessages existe en Lazarus pero no me gusta. Tratándose de una función recursiva debemos evitar la reentrada a la misma hasta que no termine... Esto obligaría al uso de banderas y el código no queda limpio... Prefiero y son mas seguros los threads. :)


Bueno, eso se complica más o menos dependiendo desde dónde se ejecute el código. Si por ejemplo se realiza desde un botón, bastaría con deshabilitar ese botón y volverlo a habilitar a su finalización. Pero sí, estoy de acuerdo contigo de que en los procesos recursivos se debería de evitar la reentrada. De echo no me gusta la reentrada en general, puede provocar errores inesperados y mejor evitarla (excepto en funciones recursivas, claro jejejeje).

Referente a tus dudas, monchito_elroro, con un simple vistazo a la ayuda verás que IncludeTrailingPathDelimiter lo único que hace es asegurarte de que un determinado path esté finalizado por el caracter de cambio de directorio, es decir, con el carácter "\" en Windows o "/" en Linux

Imagino que esta función también estará disponible en Lazarus, sino, su implementación es sencilla ;-)

Nos leemos
cadetill
  • 0

#20 monchito_elroro

monchito_elroro

    Advanced Member

  • Miembros
  • PipPipPip
  • 259 mensajes

Escrito 01 noviembre 2011 - 09:54

Gracias cadetill y disculpen por mi ignorancia..... de algo se comienza.....

PD: seguiré al tanto  :)

  • 0




IP.Board spam blocked by CleanTalk.