FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 - 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; |
#2
|
|||
|
|||
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. |
#3
|
||||
|
||||
#4
|
|||
|
|||
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. 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 |
#5
|
||||
|
||||
Espero que te des cuenta de que, tanto aquí:
como aquí:
estas haciendo algo muy diferente a lo que muestras en tu ultimo mensaje:
Si el ultimo funciona, la cosa va a ser que en los otros sobra el '*.ctt' |
#6
|
|||
|
|||
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. |
|
|
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 |
|