Ver Mensaje Individual
  #2  
Antiguo 22-03-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Reputación: 19
MaMu Va por buen camino
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
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita