Cita:
Empezado por maeyanes
Hola...
El problema que veo es que tratas de ejecutar código luego del break, lo cual no es posible, ya que el break rompe el ciclo for.
Saludos...
|
Cita:
Empezado por ecfisa
Hola Delshire, bienvenido a los foros de Club Delphi
La observación maeyanes es correcta, y dado que en el código original usas return yo emplearía el procedimiento Exit en lugar de Break.
No hice comprobaciónes, pero fijate si te funciona de este modo:
Código Delphi [-]
function Match(pData: PByte; bMask: PByte; szMask: PChar): Boolean;
begin
Result := True;
while (szMask^ <> #0) and Result do
begin
if (szMask^ = 'x') and (pData^ <> bMask^) then
begin
Result := False;
Exit;
end;
Inc(szMask);
Inc(pData);
Inc(bMask);
end;
Result := szMask^ = #0;
end;
Saludos 
|
Gracias por sus respuestas y su bienvenida!
La funcion parece compilar perfectamente, el problema es que la tengo ligada a otra funcion (la llamo de otra funcion) y probarla se hace un poco dificil, como soy nuevo en delphi y estoy traduciendo puramente de C++ seguramente tengo errores pero estoy investigando lo mas profundo posible.
Código:
Function FindPattern(dwAddress, dwLen : Cardinal; bMask : PBYTE; szMask : PCHAR) : Cardinal ; stdcall;
var
i : Cardinal;
begin
for i := 0 to dwLen do
if(Match(PBYTE(dwAddress + i), bMask, szMask)) then
Result := Cardinal((dwAddress + i))
else
Result := 0;
end;
Esta es la funcion en C++:
Código:
DWORD FindPattern(DWORD dwAddress, DWORD dwLen, BYTE * bMask, char * szMask)
{
for (DWORD i = 0; i < dwLen; i++)
if (Match((BYTE*)(dwAddress + i), bMask, szMask))
return (DWORD)(dwAddress + i);
return 0;
}
Muchas Gracias por la ayuda!