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 15-04-2007
Kpoch Kpoch is offline
Registrado
 
Registrado: oct 2006
Posts: 6
Poder: 0
Kpoch Va por buen camino
Simple para los que saben (delfile)

Buenas, he leido los 393 trucos y no encuentro uno adecuado a loq ue busco.

Bien espero que me ayuden y si no pues pongan que no :P

como puedo hacer para borrar varios archivos de un directorio y crear "falsas copias" y ponerlo como solo lectura? un ejemplo aki

Código:
@echo off
//elimino el atributo de solo lectura de los archivos a reemplazar
attrib -r C:\ARCHIV~1\UG\key1.ctt
attrib -r C:\ARCHIV~1\UG\acc2.ctt
attrib -r C:\ARCHIV~1\UG\registry3.ctt

//los borro

del C:\ARCHIV~1\UG\key1.ctt
del C:\ARCHIV~1\UG\acc2.ctt
del C:\ARCHIV~1\UG\registry3.ctt

// aqui incuyo los archivos ya modificados junto con el BAT para su copia

copy C:\ARCHIV~1\UG\key1.ctt
copy C:\ARCHIV~1\UG\acc2.ctt
copy C:\ARCHIV~1\UG\registry3.ctt

//aplico los atributos de solo lectura a los nuevos archivos

attrib +r C:\ARCHIV~1\UG\key1.ctt
attrib +r C:\ARCHIV~1\UG\acc2.ctt
attrib +r C:\ARCHIV~1\UG\registry3.ctt

end
Bueno espero que entiendan lo que quiero dar a entender.

- como es esto en delphi
- como podria incluir los archivos *.ctt dentro del exe
- como poner varias rutas a buscar dado que puede ser
"C:\ARCHIV~1\UG2\"


Autorespuesta (necesita mejoras)

Bueno mas o menos asi, le he añadido mas code dado que el que tenia era un ejemplo.
lee los Edit que he puesto en la GUI, pero solo le el primero, los otros dos "paths" donde debian estar los archivos, no lo los lee, alguna sugerencia?

Código:
procedure TForm1.Button1Click(Sender: TObject);
var
  APath: string;
  APath2: string;
  APath3: string;
  MySearch: TSearchRec;
  MySearch2: TSearchRec;
  MySearch3: TSearchRec;
begin
  APath:=Edit1.Text;
  APath2:=Edit2.Text;
  APath3:=Edit3.Text;
  FindFirst(APath+'\*.ctt', faAnyFile, MySearch);
  FindFirst(APath2+'\*.ctt', faAnyFile, MySearch2);
  FindFirst(APath3+'\*.ctt', faAnyFile, MySearch3);
  Memo1.Lines.Add(MySearch.Name);
  Memo1.Lines.Add(MySearch2.Name);
  Memo1.Lines.Add(MySearch3.Name);
  DeleteFile(APath+'\*.ctt'+MySearch.Name);
  DeleteFile(APath2+'\*.ctt'+MySearch2.Name);
  DeleteFile(APath3+'\*.ctt'+MySearch3.Name);
  while FindNext(MySearch)=0 do
  begin
    Memo1.Lines.Add(MySearch.Name);
    Memo1.Lines.Add(MySearch2.Name);
    Memo1.Lines.Add(MySearch3.Name);
    DeleteFile(APath+'\*.ctt'+MySearch.Name);
    DeleteFile(APath2+'\*.ctt'+MySearch2.Name);
    DeleteFile(APath3+'\*.ctt'+MySearch3.Name);
  end;
  FindClose(MySearch);
  FindClose(MySearch2);
  FindClose(MySearch3);
end;
Responder Con Cita
  #2  
Antiguo 15-04-2007
Kpoch Kpoch is offline
Registrado
 
Registrado: oct 2006
Posts: 6
Poder: 0
Kpoch Va por buen camino
Autorespuesta:
Bueno siento que solo me motivo y me ayudo, lo voy poniendo como avanze para que mas o menos me entiendan ok? y para la gente que desse algo parecido :P

Logre obtener el root de la carpeta no importa donde esta instalado + la carpeta de las keys dado que esa no se guarda en el registro, seria asi

MyString+'\keys\*.ctt, dado que la llave de registro no "entra" hasta la carpeta keys, Ok logro obtener los datos en el memo de que los files existen pero No se pueden borrar (no estan usandose ni en modo lectura)

Código:
procedure TForm1.Button1Click(Sender: TObject);
const
MyKey = '\SOFTWARE\UG\Data';
  var
  MyString2 : String;
  MySearch: TSearchRec;
begin
with TRegistry.Create do
    try
      RootKey := HKEY_LOCAL_MACHINE;
      if OpenKey(MyKey, False) then
      begin
        MyString2 := ReadString('Storage');
        CloseKey;
      end;
    finally
      Free;
  FindFirst(MyString2+'\Keys\*.ctt', faAnyFile, MySearch);
  Memo1.Lines.Add(MySearch.Name);
  DeleteFile(MyString2+'\Keys\*.ctt');+MySearch.Name);
  while FindNext(MySearch)=0 do
  begin
    Memo1.Lines.Add(MySearch.Name);
    DeleteFile(MyString2+'\Keys\*.ctt'+MySearch.Name);
  end;
  FindClose(MySearch);
end;
  end;
end.
Responder Con Cita
  #3  
Antiguo 15-04-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
¿Seguro que esto te compila?
Código Delphi [-]
DeleteFile(MyString2+'\Keys\*.ctt');+MySearch.Name);

De todas formas, ¿que intentas hacer con esto?
Código Delphi [-]
DeleteFile(MyString2+'\Keys\*.ctt'+MySearch.Name);

Responder Con Cita
  #4  
Antiguo 15-04-2007
Kpoch Kpoch is offline
Registrado
 
Registrado: oct 2006
Posts: 6
Poder: 0
Kpoch Va por buen camino
Si si me compila,

el source basico si borra pero dandole la direccion en un Tedit

Source basico:

Código:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Memo1: TMemo;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  APath: string;
  MySearch: TSearchRec;
begin
  APath:=Edit1.Text;
  FindFirst(APath+'\*.*', faAnyFile, MySearch);
  Memo1.Lines.Add(MySearch.Name);
  DeleteFile(APath+'\'+MySearch.Name);
  while FindNext(MySearch)=0 do
  begin
    Memo1.Lines.Add(MySearch.Name);
    DeleteFile(APath+'\'+MySearch.Name);
  end;
  FindClose(MySearch);
end;

end.
compilalo y pon una ruta la que sea y lo enlista en el memo1 y lo borra (cuidado que no sea c:\)

pero la ruta que quiero borrar es dinamica, osea cambia en varias pc's asi que decidi leer desde el registro.

si me enumera los files en el memo1 pero No los borra ese es el unico problema


1.- Si compila
2.- borrar los archivos con extencion ctt que encuentre

Gracias amigo por contestar
Responder Con Cita
  #5  
Antiguo 15-04-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Espero que te des cuenta de que, tanto aquí:
Código Delphi [-]
DeleteFile(APath+'\*.ctt'+MySearch.Name);

como aquí:
Código Delphi [-]
DeleteFile(MyString2+'\Keys\*.ctt'+MySearch.Name);

estas haciendo algo muy diferente a lo que muestras en tu ultimo mensaje:
Código Delphi [-]
DeleteFile(APath+'\'+MySearch.Name);

Si el ultimo funciona, la cosa va a ser que en los otros sobra el '*.ctt'
Responder Con Cita
  #6  
Antiguo 15-04-2007
Kpoch Kpoch is offline
Registrado
 
Registrado: oct 2006
Posts: 6
Poder: 0
Kpoch Va por buen camino
Listo lo he logrado, muchas gracias por escucharme, :P

aki esta el source final con 0 errors

Código:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, registry, Buttons;


type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
  public
    end;

var
  Form1: TForm1;
  DKey:AnsiString;
  RegKeyExist: Boolean;

implementation

{$R *.DFM}


{----erlf file coded by Kpoch -------}
{ OMG 0 ERROR SOURCE, PWNZ }

procedure TForm1.Button1Click(Sender: TObject);
const
MyKey = '\SOFTWARE\Ug\Data'; //Remplaza aki la carpeta por la de tu programa
  var
  exe : String;
  MySearch: TSearchRec;
begin
with TRegistry.Create do
    try
      RootKey := HKEY_LOCAL_MACHINE;
      if OpenKey(MyKey, False) then
      begin
        exe := ReadString('ExecPath');//execpath es donde se guardan las keys
  exe := ReadString('ExecPath');
  FindFirst(exe+'\key\*.ctt', faAnyFile, MySearch);// exe+\key*.ctt = C:\archivos de programa\Ug\data\Key\*.ctt - Guarda la lista de archivos en Mysearch
  Memo1.Lines.Add(MySearch.Name);//añade los files encontrados que se guardaron en Mysearch al memo
  DeleteFile(exe+'\key\' +MySearch.Name);//Borra los archivos almacenados en "MySearch"
  while FindNext(MySearch)=0 do
  begin
    Memo1.Lines.Add(MySearch.Name);
    DeleteFile(exe+'\key\' +MySearch.Name);
  end;
  FindClose(MySearch);
end;
finally
free
  end;
end;
end.

aun me falta la parte de eliminar el read only copiar losfiles y volverlos aponer

Última edición por Kpoch fecha: 15-04-2007 a las 08:55:51.
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
Saben programar los Iron Maiden?? Bicho La Taberna 2 21-09-2006 15:08:42
de flash saben algo? elcigarra HTML, Javascript y otros 4 01-06-2006 15:02:38
Consulta para los que saben del twebbrowser Mage Internet 3 24-04-2006 18:44:34
Saben donde puedo conseguir el compoenten KBMW para poderlos instalar Luis Alberto Varios 4 23-12-2005 19:51:35
Para aprender de los que saben... delphi.com.ar Humor 1 16-07-2004 02:47:25


La franja horaria es GMT +2. Ahora son las 16:07: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