La búsqueda de favoritos
Utiliza TSearchRec bucle a través de la Explorer favoritos, que realmente son inifiles. El resultado es que son colocados en HTML y archivos de texto.
NOTA: Este artículo es de hace un par de años. Y mientras que el código funciona bien todavía como un ejemplo del uso de inifiles y recursiva de las búsquedas de Internet Explorer ha tenido posibilidades de exportación integrada en el programa.
**
Recolección de Explorer Favoritos
Johan Lindgren
Recientemente una persona en el trabajo fue dejando para otra empresa. Hacer un periodista, que estaba muy interesado en llevar a la larga lista de favoritos enlaces de internet que ella había recogido durante su tiempo con nosotros. Esto es realmente un valueble herramienta periodística en estos días. Bien, si ella se va a una empresa también equipado con Windows y Explorer usted puede simplemente copiar la carpeta de la celebración de los favoritos. Pero desde que ella iba a un MAC basado en la empresa a través de Netscape era una situación diferente. No podría ser una forma en que el Explorador de hacer esto. Y puede que hay programas por ahí haciendo esto. Pero he encontrado ninguno así que hice un programa para hacerlo. Lo que hace el programa es simplemente buscar de forma recursiva en la carpeta con el Explorador de favoritos y añadir todo a un archivo de texto y HTML archivo. La gran ventaja de almacenar el resultado en el formato HTML es que puede hacer que los enlaces activos y por lo tanto el archivo útil en cualquier navegador.
en Primer lugar, existe un archivo ini con la configuración de la searchpath a los favoritos y el searchpath y los nombres de los archivos donde el resultado va a ser almacenada. El archivo se denomina 'favoriter.ini' y se coloca en la misma carpeta que el archivo exe. (Algunas de las palabras que vas a encontrar en sueco!)
El inifile:
[Favoriter]
WindowsFavoriter=c:/windows/favoriter/
HTMLsave=c:/favoriter.html
TEXTsave=c:/favoriter.txt
es importante para obtener la ruta de búsqueda a la derecha para que el programa funcione.
El programa consiste en un richedit para sostener el resultado de texto, un botón de inicio, un botón para cerrar y una barra de estado. (No es necesario en absoluto.)
El funcionamiento es bastante sencillo. Cuando usted haga clic en el botón de inicio el código adjunto para que el botón se ejecuta. Comienza la búsqueda y si una subcarpeta se encuentra un procedimiento independiente que se llama. Este procedimiento es recordado para cada subcarpeta encontrado. Por lo que el programa va a buscar cada subcarpeta.
Este es el bloque de búsqueda desde el evento click. La rutina en el procedimiento es muy similar. (Ver el programa completo de la lista.)
& nbsp & nbsp & nbsp & nbsp prueba := FindFirst(sokmapp '*.*', faAnyFile, SearchRec) //a Ver si podemos conseguir cualquier resultado de nuestra primera búsqueda
& nbsp & nbsp & nbsp & nbsp caso de que la prueba = 0 then //si llegamos a un resultado. Indicado por un 0 en el FindFirst función!!
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras test = 0 do begin //siempre y cuando llegamos 0 de nuestras Búsquedas hay más archivos o carpetas de proceso
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp caso searchrec.Attr de //Comprobar para ver qué atributo de la searchresult había
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp 16 : begin //Si fue un 16 es una sub carpeta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (searchrec.nombre de <> '.') y (searchrec.nombre de <> '..') entonces //Comprobar que no es una . o .. que son símbolos de la carpeta de arriba y en la misma carpeta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SokIEnMapp (remitente,sokmapp '/' searchrec.nombre,searchrec.nombre) //Si se trataba de otra carpeta, llame a una subrutina para investigar la carpeta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp 32 : begin //Si fue un 32 se trata de un archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si ansilowercase(extractfileext(searchrec.nombre)) = '.la dirección url' then begin //si el nombre del archivo termina con .la url es un explorador favorito
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp inifil := tinifile.crear (sokmapp searchrec.nombre); //Crear un inifile objeto de este archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp temptext :=inifil.readstring ('InternetShortcut','URL',') //Leer el enlace del archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp richedit1.Líneas.Agregar (stringreplace(searchrec.nombre,extractfileext(searchrec.nombre),') '=' temptext) //Mostrar el nombre del archivo y el enlace en el richedit
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp statusbar1.Simple text := searchrec.nombre //Mostrar el nombre de archivo en la barra de estado
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp statusbar1.Actualización //Actualización de la barra de estado
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp aplicación.processmessages //Y dar de windows oportunidad de ponerse al día
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp lia salinas.Add ('
' stringreplace(searchrec.nombre,extractfileext(searchrec.nombre),') '') //Añadir el favorito de nuestros temporal fconnectionlog
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp inifil.Free /Libre/el inifile objeto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp prueba := findnext(searchrec) //Llamada findnext a ver si hay más archivos o carpetas
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp findclose(searchrec) //Libera el objeto de búsqueda
El HTML resultante-archivo contiene el nombre del enlace y el enlace en una
...
Johan Lindgren es un ex-periodista, que ahora trabaja con el desarrollo técnico de la agencia sueca de Noticias (Agencia de Tidningarnas Telegrambyrå). Implica un trabajo con SGML, XML y XSL. Él utiliza Delphi para producir las diferentes piezas de software que se necesita. Él puede ser alcanzado en
[email protected]Fuente:
unidad de favvo
interfaz
usos
& nbsp & nbsp Windows, Messages, SysUtils, Classes, Graphics, Controles, Formularios, cuadros de diálogo,
& nbsp & nbsp StdCtrls, ComCtrls,inifiles, ExtCtrls
tipo
& nbsp & nbsp Tfavu = class(TForm)
& nbsp & nbsp & nbsp & nbsp RichEdit1: TRichEdit
& nbsp & nbsp & nbsp & nbsp Panel1: TPanel
& nbsp & nbsp & nbsp & nbsp startsearch: TButton
& nbsp & nbsp & nbsp & nbsp StatusBar1: TStatusBar
& nbsp & nbsp & nbsp & nbsp Button1: TButton
& nbsp & nbsp & nbsp & nbsp procedimiento startsearchClick(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento Button1Click(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento FormCreate(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento SokIEnMapp (sender : Tobject sokpath,katalog : string)
& nbsp & nbsp & nbsp & nbsp procedimiento FormDestroy(Sender: TObject)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp { Private declarations }
& nbsp & nbsp pública
& nbsp & nbsp & nbsp & nbsp { Public declarations }
& nbsp & nbsp & nbsp & nbsp SearchRec: TSearchRec //El general de búsqueda de objetos
& nbsp & nbsp & nbsp & nbsp sokmapp, htmlut, textut : cadena //Cadenas para la celebración de la carpeta de búsqueda y los archivos de los resultados de la búsqueda
& nbsp & nbsp & nbsp & nbsp htmlspar : tstringlist //String lista para celebrar el archivo HTML
& nbsp & nbsp final
& nbsp & nbsp función KollaSlutet (rad,puta : string) : string
& nbsp & nbsp función StringReplace (texto,byt,mot : string ) :cadena
var
& nbsp & nbsp favu: Tfavu
aplicación
{$R *.DFM}
//======= Cuando el programa se inicia ========//
procedimiento Tfavu.FormCreate(Sender: TObject)
var
& nbsp & nbsp inifil : TIniFile //Inifile-objeto de leer preferencias del usuario
& nbsp & nbsp exepath : string //Searchpath para la aplicación
begin
& nbsp & nbsp exepath := extractfilepath (application.exename) //Extracto de la searchpath para la aplicación
& nbsp & nbsp exepath := kollaslutet(exepath,'/') //Llamar a una función que comprueba que la primera cadena termina con la segunda cadena
& nbsp & nbsp inifil := tinifile.crear(exepath 'favoriter.ini'); //Crear el inifile objeto con el exepath combinado con el inifile nombre.
& nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp sokmapp := inifil.readstring('Favoriter','WindowsFavoriter','c:/windows/favoriter/') //Obtener el searchpath para la carpeta que contiene el explorador de favoritos
& nbsp & nbsp & nbsp & nbsp sokmapp := kollaslutet(sokmapp,'/') //llama a la rutina 'kollaslutet' para asegurarse de que la cadena termina con un /
& nbsp & nbsp & nbsp & nbsp htmlut := inifil.readstring('Favoriter','HTMLsave','c:/favoriter.html') //Obtener el nombre y la ruta del archivo donde se encuentra el html resultado se almacena
& nbsp & nbsp & nbsp & nbsp textut := inifil.readstring('Favoriter','TEXTsave','c:/favoriter.txt') //Obtener el nombre y la ruta de acceso al archivo donde se encuentra el resultado de texto que se almacena el
& nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp inifil.libre //liberar los recursos para la inifile objeto
& nbsp & nbsp final
& nbsp & nbsp htmlspar := tstringlist.crear //Crear el fconnectionlog para mantener el código HTML de resultados
fin
//====== haciendo Clic en el botón para iniciar la recopilación de los favoritos ========//
procedimiento Tfavu.startsearchClick(Sender: TObject)
var
& nbsp & nbsp inifil : TIniFile //Inifile objeto de obtener el contenido de los favoritos
& nbsp & nbsp temptext : string //cadena Temporal para el almacenamiento
& nbsp & nbsp prueba : entero //Entero para la comprobación de los resultados de la búsqueda
& nbsp & nbsp lia salinas : TStringList //STring lista para celebrar searchresult de una carpeta
begin
& nbsp & nbsp pantalla.cursor := crHourglass //Mostrar el reloj de arena para que el usuario sepa estamos ocupados
& nbsp & nbsp lia salinas := TStringList.crear //Crear el fconnectionlog
& nbsp & nbsp htmlspar.add ('
Favoritos de Internet') //Conjunto de los primeros elementos HTML que fconnectionlog
& nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp prueba := FindFirst(sokmapp '*.*', faAnyFile, SearchRec) //a Ver si podemos conseguir cualquier resultado de nuestra primera búsqueda
& nbsp & nbsp & nbsp & nbsp caso de que la prueba = 0 then //si llegamos a un resultado. Indicado por un 0 en el FindFirst función!!
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras test = 0 do begin //siempre y cuando llegamos 0 de nuestras Búsquedas hay más archivos o carpetas de proceso
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp caso searchrec.Attr de //Comprobar para ver qué atributo de la searchresult había
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp faDirectory : begin //Si fue un 16 es una sub carpeta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (searchrec.nombre de <> '.') y (searchrec.nombre de <> '..') entonces //Comprobar que no es una . o un .. que son símbolos de la carpeta de arriba y en la misma carpeta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SokIEnMapp (remitente,sokmapp '/' searchrec.nombre,searchrec.nombre) //Si se trataba de otra carpeta, llame a una subrutina para investigar la carpeta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp 32 : begin //Si fue un 32 se trata de un archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si ansilowercase(extractfileext(searchrec.nombre)) = '.la dirección url' then begin //si el nombre del archivo termina con .la url es un explorador favorito
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp inifil := tinifile.crear (sokmapp searchrec.nombre); //Crear un inifile objeto de este archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp temptext :=inifil.readstring ('InternetShortcut','URL',') //Leer el enlace del archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp richedit1.Líneas.Agregar (stringreplace(searchrec.nombre,extractfileext(searchrec.nombre),') '=' temptext) //Mostrar el nombre del archivo y el enlace en el richedit
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp statusbar1.Simple text := searchrec.nombre //Mostrar el nombre de archivo en la barra de estado
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp statusbar1.Actualización //Actualización de la barra de estado
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp aplicación.processmessages //Y dar de windows oportunidad de ponerse al día
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp lia salinas.Add ('
' stringreplace(searchrec.nombre,extractfileext(searchrec.nombre),') '') //Añadir el favorito de nuestros temporal fconnectionlog
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp inifil.Free /Libre/el inifile objeto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final //try finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp end //si .url
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final //caso 32
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final //caso
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp prueba := findnext(searchrec) //Llamar a findnext a ver si hay más archivos o carpetas
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final //mientras que
& nbsp & nbsp & nbsp & nbsp & nbsp findclose(searchrec) //Libera el objeto de búsqueda
& nbsp & nbsp & nbsp & nbsp & nbsp htmlspar.Texto := htmlspar.texto '
Varios enlaces' //Añadir en el código HTML fconnectionlog una línea de encabezado y los resultados de esta carpeta
& nbsp & nbsp & nbsp & nbsp & nbsp htmlspar.add ('') //por último, añadir el cierre de los elementos HTML
& nbsp & nbsp & nbsp & nbsp & nbsp htmlspar.SaveToFile (htmlut) //Guardar el HTML fconnectionlog designado para el nombre de
& nbsp & nbsp & nbsp & nbsp & nbsp richedit1.líneas.SaveToFile (textut) //Guardar las líneas de la richedit para el archivo designado. Asegúrese de tener plaintext=true en el richedit
& nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp lia salinas.free /Libre/el fconnectionlog
& nbsp & nbsp & nbsp & nbsp pantalla.cursor := crDefault //Restaurar el cursor
& nbsp & nbsp final
fin
//======= Procedimiento para buscar en una carpeta específica =====//
procedimiento Tfavu.SokIEnMapp (sender : Tobject sokpath,katalog : string)
var
& nbsp & nbsp undermapp : tsearchrec //Searchresult para esta carpeta específica
& nbsp & nbsp inifil : tinifile //Inifile para leer el contenido de la url de archivos
& nbsp & nbsp temptext : string //cadena Temporal
& nbsp & nbsp test2 : entero //Entero para ver qué resultados de la búsqueda llegamos
begin
& nbsp & nbsp richedit1.líneas.agregar (katalog) //Inicio añadiendo el nombre de la carpeta en la que se busca para el richedit
& nbsp & nbsp statusbar1.Simple text := katalog //Hacemos lo mismo con la barra de estado
& nbsp & nbsp statusbar1.Actualización //Actualización de la barra de estado
& nbsp & nbsp aplicación.processmessages //asegúrese de que las ventanas obtener una oportunidad
& nbsp & nbsp htmlspar.add ('
' catálogo '') //Agregar el nombre de la carpeta a la carpeta HTML de la cadena de lista
& nbsp & nbsp test2 := findfirst(sokpath '/*.*',faAnyFile,Undermapp) //Inicio de una búsqueda en la sub carpeta
& nbsp & nbsp si prueba2 = 0 then //Si obtenemos un 0 se anotó un éxito
& nbsp & nbsp & nbsp & nbsp mientras prueba2 = 0 do begin //siempre y cuando se mantenga la búsqueda de nuevas carpetas o archivos
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp caso undermapp.attr de //Comprobar que el atributo de los resultados de la búsqueda
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp 16 : begin //Si fue un 16 es una subcarpeta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (undermapp.nombre de <> '.') y (undermapp.nombre de <> '..') entonces //siempre y cuando el nombre no lo es . o .. continuamos nuestra búsqueda
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SokIEnMapp (remitente,sokpath '/' undermapp.nombre,undermapp.nombre) //Llamar a la misma rutina para mantener la búsqueda subcarpetas
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final //16
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp 32 : begin //32 significa que un archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si ansilowercase(extractfileext(undermapp.nombre)) = '.la dirección url' then begin //Si el nombre termina con .la url es un explorador favorito
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp inifil := tinifile.crear (sokpath '/' undermapp.nombre); //Crear un inifile objeto de este archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp temptext :=inifil.readstring ('InternetShortcut','URL',') //Leer el enlace en el archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp richedit1.Líneas.Agregar (stringreplace(undermapp.nombre,extractfileext(undermapp.nombre),') '=' temptext) //Agregar este a la richedit
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp statusbar1.Simple text := undermapp.nombre //Mostrar el nombre del archivo en la barra de estado
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp statusbar1.Actualización //Actualización de la barra de estado
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp aplicación.processmessages //Dejar a windows que hacerlo de negocios
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp htmlspar.Add ('- ' stringreplace(undermapp.nombre,extractfileext(undermapp.nombre),') '
') //Agregar el nombre de archivo y el enlace con el HTML fconnectionlog
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp inifil.Free /libre/el inifile objeto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final //prueba con
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp end //si
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final //32
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp test2 := findnext (undermapp) //llamada en buscar siguiente para mantener la búsqueda
& nbsp & nbsp & nbsp & nbsp final //mientras que
& nbsp & nbsp & nbsp & nbsp htmlspar.add ('
') //Agregamos una etiqueta de cierre para la cadena html de la lista
& nbsp & nbsp & nbsp & nbsp findclose (undermapp) //Llamada a encontrar cerrar para cerrar el objeto de búsqueda
fin
//======== Cuando se cierra el programa ==========//
procedimiento Tfavu.Button1Click(Sender: TObject)
begin
& nbsp & nbsp cerca de //Cierre de la aplicación
fin
procedimiento Tfavu.FormDestroy(Sender: TObject)
begin
& nbsp & nbsp htmlspar.free /Libre/el resourse para la cadena html de la lista
fin
//================ Funciones ==============//
//========== Compruebe que la cadena termina con una cadena específica =============//
función KollaSlutet (rad,puta : string) : string
begin
& nbsp & nbsp si longitud(rad)>0 then //asegúrese de que hay algo allí para comprobar
& nbsp & nbsp & nbsp & nbsp si rad[longitud(rad)] <> puta, a continuación, rad := rad puta //Si no termina con la correcta terminación - añadir
& nbsp & nbsp resultado := rad //devuelve la cadena
fin
//========== Función para cambiar la primera ocurrencia de byt en contra de la itv en el texto ===========//
función StringReplace (texto,byt,mot : string ) :string
var
& nbsp & nbsp & nbsp plats : integer
begin
& nbsp & nbsp si pos(byt,texto) > 0 then begin //si byt existen en el texto
& nbsp & nbsp & nbsp & nbsp plats := pos(byt,texto) //Nota donde se
& nbsp & nbsp & nbsp & nbsp eliminar (texto,los planos,la longitud(byt)) //Eliminar la parte coincidente byt
& nbsp & nbsp & nbsp & nbsp insertar (mot,texto,plats) //insertar mot en el lugar adecuado
& nbsp & nbsp end //si byt existía en el texto
& nbsp & nbsp resultado := texto //en cualquier caso, devolver el texto
fin
final.
La busqueda de favoritos
La busqueda de favoritos : Multi-millones de consejos para hacer su vida mas facil.
Utiliza TSearchRec bucle a traves de la Explorer favoritos, que realmente son inifiles. El resultado es que son colocados en HTML y archivos de texto.
NOTA: Este articulo es de hace un par de años. Y mientras que el codigo funciona bien todavia como un ejemplo del uso de inifiles y recursiva de las busquedas de Internet Explorer ha tenido posibilidades de exportacion integrada en el programa.
**
Recoleccion de Explorer Favoritos
Johan Lindgren
Recientemente una persona en el trabajo fue dejando para otra empresa. Hacer un periodista, que estaba muy interesado en llevar a la larga lista de favoritos enlaces de internet que ella habia recogido durante su tiempo con nosotros. Esto es realmente un valueble herramienta periodistica en estos dias. Bien, si ella se va a una empresa tambien equipado con Windows y Explorer usted puede simplemente copiar la carpeta de la celebracion de los favoritos. Pero desde que ella iba a un MAC basado en la empresa a traves de Netscape era una situacion diferente. No podria ser una forma en que el Explorador de hacer esto. Y puede que hay programas por ahi haciendo esto. Pero he encontrado ninguno asi que hice un programa para hacerlo. Lo que hace el programa es simplemente buscar de forma recursiva en la carpeta con el Explorador de favoritos y añadir todo a un archivo de texto y HTML archivo. La gran ventaja de almacenar el resultado en el formato HTML es que puede hacer que los enlaces activos y por lo tanto el archivo util en cualquier navegador.
en Primer lugar, existe un archivo ini con la configuracion de la searchpath a los favoritos y el searchpath y los nombres de los archivos donde el resultado va a ser almacenada. El archivo se denomina 'favoriter.ini' y se coloca en la misma carpeta que el archivo exe. (Algunas de las palabras que vas a encontrar en sueco!)
El inifile:
[Favoriter]
WindowsFavoriter=c:/windows/favoriter/
HTMLsave=c:/favoriter.html
TEXTsave=c:/favoriter.txt
es importante para obtener la ruta de busqueda a la derecha para que el programa funcione.
El programa consiste en un richedit para sostener el resultado de texto, un boton de inicio, un boton para cerrar y una barra de estado. (No es necesario en absoluto.)
El funcionamiento es bastante sencillo. Cuando usted haga clic en el boton de inicio el codigo adjunto para que el boton se ejecuta. Comienza la busqueda y si una subcarpeta se encuentra un procedimiento independiente que se llama. Este procedimiento es recordado para cada subcarpeta encontrado. Por lo que el programa va a buscar cada subcarpeta.
Este es el bloque de busqueda desde el evento click. La rutina en el procedimiento es muy similar. (Ver el programa completo de la lista.)
& nbsp & nbsp & nbsp & nbsp prueba := FindFirst(sokmapp '*.*', faAnyFile, SearchRec) //a Ver si podemos conseguir cualquier resultado de nuestra primera busqueda
& nbsp & nbsp & nbsp & nbsp caso de que la prueba = 0 then //si llegamos a un resultado. Indicado por un 0 en el FindFirst funcion!!
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras test = 0 do begin //siempre y cuando llegamos 0 de nuestras Busquedas hay mas archivos o carpetas de proceso
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp caso searchrec.Attr de //Comprobar para ver que atributo de la searchresult habia
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp 16 : begin //Si fue un 16 es una sub carpeta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (searchrec.nombre de <> '.') y (searchrec.nombre de <> '..') entonces //Comprobar que no es una . o .. que son simbolos de la carpeta de arriba y en la misma carpeta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SokIEnMapp (remitente,sokmapp '/' searchrec.nombre,searchrec.nombre) //Si se trataba de otra carpeta, llame a una subrutina para investigar la carpeta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp 32 : begin //Si fue un 32 se trata de un archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si ansilowercase(extractfileext(searchrec.nombre)) = '.la direccion url' then begin //si el nombre del archivo termina con .la url es un explorador favorito
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp inifil := tinifile.crear (sokmapp searchrec.nombre); //Crear un inifile objeto de este archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp temptext :=inifil.readstring ('InternetShortcut','URL',') //Leer el enlace del archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp richedit1.Lineas.Agregar (stringreplace(searchrec.nombre,extractfileext(searchrec.nombre),') '=' temptext) //Mostrar el nombre del archivo y el enlace en el richedit
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp statusbar1.Simple text := searchrec.nombre //Mostrar el nombre de archivo en la barra de estado
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp statusbar1.Actualizacion //Actualizacion de la barra de estado
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp aplicacion.processmessages //Y dar de windows oportunidad de ponerse al dia
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp lia salinas.Add ('
' stringreplace(searchrec.nombre,extractfileext(searchrec.nombre),') '') //Añadir el favorito de nuestros temporal fconnectionlog
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp inifil.Free /Libre/el inifile objeto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp prueba := findnext(searchrec) //Llamada findnext a ver si hay mas archivos o carpetas
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp findclose(searchrec) //Libera el objeto de busqueda
El HTML resultante-archivo contiene el nombre del enlace y el enlace en una
...
Johan Lindgren es un ex-periodista, que ahora trabaja con el desarrollo tecnico de la agencia sueca de Noticias (Agencia de Tidningarnas Telegrambyrå). Implica un trabajo con SGML, XML y XSL. El utiliza Delphi para producir las diferentes piezas de software que se necesita. El puede ser alcanzado en
[email protected]Fuente:
unidad de favvo
interfaz
usos
& nbsp & nbsp Windows, Messages, SysUtils, Classes, Graphics, Controles, Formularios, cuadros de dialogo,
& nbsp & nbsp StdCtrls, ComCtrls,inifiles, ExtCtrls
tipo
& nbsp & nbsp Tfavu = class(TForm)
& nbsp & nbsp & nbsp & nbsp RichEdit1: TRichEdit
& nbsp & nbsp & nbsp & nbsp Panel1: TPanel
& nbsp & nbsp & nbsp & nbsp startsearch: TButton
& nbsp & nbsp & nbsp & nbsp StatusBar1: TStatusBar
& nbsp & nbsp & nbsp & nbsp Button1: TButton
& nbsp & nbsp & nbsp & nbsp procedimiento startsearchClick(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento Button1Click(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento FormCreate(Sender: TObject)
& nbsp & nbsp & nbsp & nbsp procedimiento SokIEnMapp (sender : Tobject sokpath,katalog : string)
& nbsp & nbsp & nbsp & nbsp procedimiento FormDestroy(Sender: TObject)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp { Private declarations }
& nbsp & nbsp publica
& nbsp & nbsp & nbsp & nbsp { Public declarations }
& nbsp & nbsp & nbsp & nbsp SearchRec: TSearchRec //El general de busqueda de objetos
& nbsp & nbsp & nbsp & nbsp sokmapp, htmlut, textut : cadena //Cadenas para la celebracion de la carpeta de busqueda y los archivos de los resultados de la busqueda
& nbsp & nbsp & nbsp & nbsp htmlspar : tstringlist //String lista para celebrar el archivo HTML
& nbsp & nbsp final
& nbsp & nbsp funcion KollaSlutet (rad,puta : string) : string
& nbsp & nbsp funcion StringReplace (texto,byt,mot : string ) :cadena
var
& nbsp & nbsp favu: Tfavu
aplicacion
{$R *.DFM}
//======= Cuando el programa se inicia ========//
procedimiento Tfavu.FormCreate(Sender: TObject)
var
& nbsp & nbsp inifil : TIniFile //Inifile-objeto de leer preferencias del usuario
& nbsp & nbsp exepath : string //Searchpath para la aplicacion
begin
& nbsp & nbsp exepath := extractfilepath (application.exename) //Extracto de la searchpath para la aplicacion
& nbsp & nbsp exepath := kollaslutet(exepath,'/') //Llamar a una funcion que comprueba que la primera cadena termina con la segunda cadena
& nbsp & nbsp inifil := tinifile.crear(exepath 'favoriter.ini'); //Crear el inifile objeto con el exepath combinado con el inifile nombre.
& nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp sokmapp := inifil.readstring('Favoriter','WindowsFavoriter','c:/windows/favoriter/') //Obtener el searchpath para la carpeta que contiene el explorador de favoritos
& nbsp & nbsp & nbsp & nbsp sokmapp := kollaslutet(sokmapp,'/') //llama a la rutina 'kollaslutet' para asegurarse de que la cadena termina con un /
& nbsp & nbsp & nbsp & nbsp htmlut := inifil.readstring('Favoriter','HTMLsave','c:/favoriter.html') //Obtener el nombre y la ruta del archivo donde se encuentra el html resultado se almacena
& nbsp & nbsp & nbsp & nbsp textut := inifil.readstring('Favoriter','TEXTsave','c:/favoriter.txt') //Obtener el nombre y la ruta de acceso al archivo donde se encuentra el resultado de texto que se almacena el
& nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp inifil.libre //liberar los recursos para la inifile objeto
& nbsp & nbsp final
& nbsp & nbsp htmlspar := tstringlist.crear //Crear el fconnectionlog para mantener el codigo HTML de resultados
fin
//====== haciendo Clic en el boton para iniciar la recopilacion de los favoritos ========//
procedimiento Tfavu.startsearchClick(Sender: TObject)
var
& nbsp & nbsp inifil : TIniFile //Inifile objeto de obtener el contenido de los favoritos
& nbsp & nbsp temptext : string //cadena Temporal para el almacenamiento
& nbsp & nbsp prueba : entero //Entero para la comprobacion de los resultados de la busqueda
& nbsp & nbsp lia salinas : TStringList //STring lista para celebrar searchresult de una carpeta
begin
& nbsp & nbsp pantalla.cursor := crHourglass //Mostrar el reloj de arena para que el usuario sepa estamos ocupados
& nbsp & nbsp lia salinas := TStringList.crear //Crear el fconnectionlog
& nbsp & nbsp htmlspar.add ('
Favoritos de Internet') //Conjunto de los primeros elementos HTML que fconnectionlog
& nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp prueba := FindFirst(sokmapp '*.*', faAnyFile, SearchRec) //a Ver si podemos conseguir cualquier resultado de nuestra primera busqueda
& nbsp & nbsp & nbsp & nbsp caso de que la prueba = 0 then //si llegamos a un resultado. Indicado por un 0 en el FindFirst funcion!!
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp mientras test = 0 do begin //siempre y cuando llegamos 0 de nuestras Busquedas hay mas archivos o carpetas de proceso
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp caso searchrec.Attr de //Comprobar para ver que atributo de la searchresult habia
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp faDirectory : begin //Si fue un 16 es una sub carpeta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (searchrec.nombre de <> '.') y (searchrec.nombre de <> '..') entonces //Comprobar que no es una . o un .. que son simbolos de la carpeta de arriba y en la misma carpeta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SokIEnMapp (remitente,sokmapp '/' searchrec.nombre,searchrec.nombre) //Si se trataba de otra carpeta, llame a una subrutina para investigar la carpeta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp 32 : begin //Si fue un 32 se trata de un archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si ansilowercase(extractfileext(searchrec.nombre)) = '.la direccion url' then begin //si el nombre del archivo termina con .la url es un explorador favorito
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp inifil := tinifile.crear (sokmapp searchrec.nombre); //Crear un inifile objeto de este archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp temptext :=inifil.readstring ('InternetShortcut','URL',') //Leer el enlace del archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp richedit1.Lineas.Agregar (stringreplace(searchrec.nombre,extractfileext(searchrec.nombre),') '=' temptext) //Mostrar el nombre del archivo y el enlace en el richedit
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp statusbar1.Simple text := searchrec.nombre //Mostrar el nombre de archivo en la barra de estado
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp statusbar1.Actualizacion //Actualizacion de la barra de estado
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp aplicacion.processmessages //Y dar de windows oportunidad de ponerse al dia
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp lia salinas.Add ('
' stringreplace(searchrec.nombre,extractfileext(searchrec.nombre),') '') //Añadir el favorito de nuestros temporal fconnectionlog
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp inifil.Free /Libre/el inifile objeto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final //try finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp end //si .url
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final //caso 32
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final //caso
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp prueba := findnext(searchrec) //Llamar a findnext a ver si hay mas archivos o carpetas
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final //mientras que
& nbsp & nbsp & nbsp & nbsp & nbsp findclose(searchrec) //Libera el objeto de busqueda
& nbsp & nbsp & nbsp & nbsp & nbsp htmlspar.Texto := htmlspar.texto '
Varios enlaces' //Añadir en el codigo HTML fconnectionlog una linea de encabezado y los resultados de esta carpeta
& nbsp & nbsp & nbsp & nbsp & nbsp htmlspar.add ('') //por ultimo, añadir el cierre de los elementos HTML
& nbsp & nbsp & nbsp & nbsp & nbsp htmlspar.SaveToFile (htmlut) //Guardar el HTML fconnectionlog designado para el nombre de
& nbsp & nbsp & nbsp & nbsp & nbsp richedit1.lineas.SaveToFile (textut) //Guardar las lineas de la richedit para el archivo designado. Asegurese de tener plaintext=true en el richedit
& nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp lia salinas.free /Libre/el fconnectionlog
& nbsp & nbsp & nbsp & nbsp pantalla.cursor := crDefault //Restaurar el cursor
& nbsp & nbsp final
fin
//======= Procedimiento para buscar en una carpeta especifica =====//
procedimiento Tfavu.SokIEnMapp (sender : Tobject sokpath,katalog : string)
var
& nbsp & nbsp undermapp : tsearchrec //Searchresult para esta carpeta especifica
& nbsp & nbsp inifil : tinifile //Inifile para leer el contenido de la url de archivos
& nbsp & nbsp temptext : string //cadena Temporal
& nbsp & nbsp test2 : entero //Entero para ver que resultados de la busqueda llegamos
begin
& nbsp & nbsp richedit1.lineas.agregar (katalog) //Inicio añadiendo el nombre de la carpeta en la que se busca para el richedit
& nbsp & nbsp statusbar1.Simple text := katalog //Hacemos lo mismo con la barra de estado
& nbsp & nbsp statusbar1.Actualizacion //Actualizacion de la barra de estado
& nbsp & nbsp aplicacion.processmessages //asegurese de que las ventanas obtener una oportunidad
& nbsp & nbsp htmlspar.add ('
' catalogo '') //Agregar el nombre de la carpeta a la carpeta HTML de la cadena de lista
& nbsp & nbsp test2 := findfirst(sokpath '/*.*',faAnyFile,Undermapp) //Inicio de una busqueda en la sub carpeta
& nbsp & nbsp si prueba2 = 0 then //Si obtenemos un 0 se anoto un exito
& nbsp & nbsp & nbsp & nbsp mientras prueba2 = 0 do begin //siempre y cuando se mantenga la busqueda de nuevas carpetas o archivos
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp caso undermapp.attr de //Comprobar que el atributo de los resultados de la busqueda
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp 16 : begin //Si fue un 16 es una subcarpeta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (undermapp.nombre de <> '.') y (undermapp.nombre de <> '..') entonces //siempre y cuando el nombre no lo es . o .. continuamos nuestra busqueda
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SokIEnMapp (remitente,sokpath '/' undermapp.nombre,undermapp.nombre) //Llamar a la misma rutina para mantener la busqueda subcarpetas
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final //16
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp 32 : begin //32 significa que un archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si ansilowercase(extractfileext(undermapp.nombre)) = '.la direccion url' then begin //Si el nombre termina con .la url es un explorador favorito
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp inifil := tinifile.crear (sokpath '/' undermapp.nombre); //Crear un inifile objeto de este archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp temptext :=inifil.readstring ('InternetShortcut','URL',') //Leer el enlace en el archivo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp richedit1.Lineas.Agregar (stringreplace(undermapp.nombre,extractfileext(undermapp.nombre),') '=' temptext) //Agregar este a la richedit
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp statusbar1.Simple text := undermapp.nombre //Mostrar el nombre del archivo en la barra de estado
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp statusbar1.Actualizacion //Actualizacion de la barra de estado
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp aplicacion.processmessages //Dejar a windows que hacerlo de negocios
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp htmlspar.Add ('- ' stringreplace(undermapp.nombre,extractfileext(undermapp.nombre),') '
') //Agregar el nombre de archivo y el enlace con el HTML fconnectionlog
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp inifil.Free /libre/el inifile objeto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final //prueba con
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp end //si
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final //32
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp test2 := findnext (undermapp) //llamada en buscar siguiente para mantener la busqueda
& nbsp & nbsp & nbsp & nbsp final //mientras que
& nbsp & nbsp & nbsp & nbsp htmlspar.add ('
') //Agregamos una etiqueta de cierre para la cadena html de la lista
& nbsp & nbsp & nbsp & nbsp findclose (undermapp) //Llamada a encontrar cerrar para cerrar el objeto de busqueda
fin
//======== Cuando se cierra el programa ==========//
procedimiento Tfavu.Button1Click(Sender: TObject)
begin
& nbsp & nbsp cerca de //Cierre de la aplicacion
fin
procedimiento Tfavu.FormDestroy(Sender: TObject)
begin
& nbsp & nbsp htmlspar.free /Libre/el resourse para la cadena html de la lista
fin
//================ Funciones ==============//
//========== Compruebe que la cadena termina con una cadena especifica =============//
funcion KollaSlutet (rad,puta : string) : string
begin
& nbsp & nbsp si longitud(rad)>0 then //asegurese de que hay algo alli para comprobar
& nbsp & nbsp & nbsp & nbsp si rad[longitud(rad)] <> puta, a continuacion, rad := rad puta //Si no termina con la correcta terminacion - añadir
& nbsp & nbsp resultado := rad //devuelve la cadena
fin
//========== Funcion para cambiar la primera ocurrencia de byt en contra de la itv en el texto ===========//
funcion StringReplace (texto,byt,mot : string ) :string
var
& nbsp & nbsp & nbsp plats : integer
begin
& nbsp & nbsp si pos(byt,texto) > 0 then begin //si byt existen en el texto
& nbsp & nbsp & nbsp & nbsp plats := pos(byt,texto) //Nota donde se
& nbsp & nbsp & nbsp & nbsp eliminar (texto,los planos,la longitud(byt)) //Eliminar la parte coincidente byt
& nbsp & nbsp & nbsp & nbsp insertar (mot,texto,plats) //insertar mot en el lugar adecuado
& nbsp & nbsp end //si byt existia en el texto
& nbsp & nbsp resultado := texto //en cualquier caso, devolver el texto
fin
final.
La búsqueda de favoritos
By Consejos Y Trucos
La búsqueda de favoritos : Multi-millones de consejos para hacer su vida más fácil.