funcion ExtractString [pascal].

Iniciado por WarZ0n3, 26 Abril 2013, 11:56 AM

0 Miembros y 1 Visitante están viendo este tema.

WarZ0n3

Saludos!
Bueno hace no mucho empece a programar un troyano bancario en delphi 7(que pronto publicare...), tenia un problema y era que usando los sockets tenia que
extraer determinados strings de parametros defectuosos (desde - hasta)... Así nació esta funcion la cual es muy útil usada ya sea en APIS hasta en tareas triviales como las que acabo de describir.
Aquí el código:
Código (pascal) [Seleccionar]

{$Optimization On}
{/*************************************\}
{ ExtractString Function @por WarZ0n3   }
{\*************************************/}
{ Explicación:                          }
{ Esta funcion es utilizada para extraer}
{ un string de una cadena determinada.  }
{ Funcion muy util para rutinas de      }
{ programación en sockets...            }
{\*************************************/}
{ Mode de uso:                          }
{ Los parametros son los siguientes:    }
{ __ExtractString(                      }
{  ListaDeStrings, Char(desde),         }
{  string(Palabra), Char(hasta)         }
{  );                                   }
{/*************************************\}
{ Ejemplo:                              }
{ __ExtractString(lStr, '&', '@%&Hola Mundo|#$', '|'); }
{ Devuelve: Hola Mundo                  }
{\*************************************/}
function __ExtractString(lStr:TStringList; from_s:Char; ExtractStr:string; to_s:Char): string;
var
 reverse   : integer;
 PosStr    : integer;
 CpyStr    : string;
 StrRip    : string;
 sNull     : string;
begin
 reverse:= LastDelimiter(to_s, pChar(ExtractStr));
 SetLength(ExtractStr, reverse);
 PosStr:= Pos(from_s, pChar(ExtractStr));
 
 CpyStr:= Copy(pChar(ExtractStr), PosStr+$1, reverse);
 StrRip:= StringReplace(CpyStr, to_s, sNull, [rfReplaceAll, rfIgnoreCase]);
 lStr.Add(StrRip);
end;

{ ***Ejemplo de uso en un Button1 del Form*** }
procedure TForm1.Button1Click(Sender: TObject);
var
 lStr:TSTRINGLIST;
begin
 lStr:= TstringList.Create;
  { Llamada de la función }
 __ExtractString(lStr, '&', '@%&HOLA_MUNDO|#$', '|'); { Ejemplo de uso }
 ShowMessage(lStr.GetText);
end;

end.