Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Comparar una cadena String con un directorio (https://www.clubdelphi.com/foros/showthread.php?t=54544)

dicatek 22-03-2008 17:48:40

Comparar una cadena String con un directorio
 
Hola comunidad! Estoy interesado en crear un pequeño sistema que me permita comparar una cadena string que introduzca el usuario con archivos que ubicaré en una pagina web:

(http://www.miweb.es/directorio/audi_a8_2.1.doc)
(http://www.miweb.es/directorio/audi_a6_2.1.doc)
(http://www.miweb.es/directorio/audi_a2_2.1.doc)
(http://www.miweb.es/directorio/jeep_ch_3.1.doc)
(...)

Mi idea es que cuando el usuario escoja la palabra audi, se permita la descarga de los documentos que contenga la palabra audi

Sé que la pregunta es muy sencilla por la complejidad del asunto, como por su madurez, pero visto que no tengo conocimiento alguno, me gustaria que alguien pudiera recomendarme algunos pasos previos antes de meterme en el asunto. ¿Que componentes se puede usar para este proposito? ¿es muy dificil de hacer (no soy programador)

Muchas gracias de antemano!

MaMu 22-03-2008 18:23:11

Esta función permite realizar dichas comparaciones entre 2 cadenas.
Utiliza dos parámetros: el primero la cadena en donde buscar y el segundo lo que estamos buscando, incluyendo posibles comodines. ("*" o "?")

Devolverá True o False dependiendo del resultado de la busqueda.
NOTA: La cadena en donde buscar no debe contener comodines.


Probá con esto:

Código Delphi [-]
function MatchStrings(source, pattern: String): Boolean;
      var
        pSource: Array [0..255] of Char;
        pPattern: Array [0..255] of Char;

        function MatchPattern(element, pattern: PChar): Boolean;

          function IsPatternWild(pattern: PChar): Boolean;
          var
            t: Integer;
          begin
            Result := StrScan(pattern,'*') <> nil;
            if not Result then Result := StrScan(pattern,'?') <> nil;
          end;

        begin
          if 0 = StrComp(pattern,'*') then
            Result := True
          else if (element^ = Chr(0)) and (pattern^ <> Chr(0)) then
            Result := False
          else if element^ = Chr(0) then
            Result := True
          else begin
            case pattern^ of
            '*': if MatchPattern(element,@pattern[1]) then
                   Result := True
                 else
                   Result := MatchPattern(@element[1],pattern);
            '?': Result := MatchPattern(@element[1],@pattern[1]);
            else
              if element^ = pattern^ then
                Result := MatchPattern(@element[1],@pattern[1])
              else
                Result := False;
            end;
          end;
        end;

      begin
        StrPCopy(pSource,source);
        StrPCopy(pPattern,pattern);
        Result := MatchPattern(pSource,pPattern);
      end;

Saludos

dicatek 22-03-2008 20:01:05

Hola mamu!

Gracias por la función que me has mandado. La he estado estudiando y aunque no acabo de entender todo el codigo creo que es un buen sistema. A mi entender este codigo es el motor basico para realizar las busquedas, la variable psource es lo que buscamos y la ppattern es el resultado. Me falla una cosa, quizás la más importante de todas y es que no sé como se puede implementar esta función en un programa sencillito que pueda realizar una busqueda en un directorio web.

Saludos!


La franja horaria es GMT +2. Ahora son las 04:12:44.

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