Buenas que tal con todos, estoy pasando mi codigo delphi, para C++ builder y hasta ahora he logrado esto :
MOSTRARE PRIMERO EL CODIGO DELPHI .-
procedure Tester();
var
ADD1:procedure;
ADD2:procedure;
begin
ADD1 := GetProcAddress(GetModuleHandleA(PAnsiChar('Verin.dll')), PAnsiChar('FUNCION1'));
ADD2 := GetProcAddress(GetModuleHandleA(PAnsiChar('VerinAllign3.dll')), PAnsiChar('FUNCION2'));
while(true) do begin
Sleep(40);
if (GetAsyncKeyState(VK_F1) <> 0) then begin;
asm
call ADD1
mov ecx, eax
mov edi, eax
call pADD2
end;
end;
end;
end;
ACA MOSTRARE EL CODIGO QUE HE LOGRADO HACER EN C++ BUILDER :P :
void __fastcall Tester()
{
PAnsiChar ADD1 = (PAnsiChar)GetProcAddress(GetModuleHandleA("Verin.dll"), "FUNCION1");
PAnsiChar ADD2 = (PAnsiChar)GetProcAddress(GetModuleHandleA("VerinAllign3.dll"), "FUNCION2");
while(true)
Sleep(40);
if (GetAsyncKeyState(VK_F1) != 0)
_asm
{
call ADD1
mov ecx, eax
mov edi, eax
call ADD2
}
}
Espero que me puedan ayudar, muchas gracias ! Saludos :rolleyes:
No pongas títulos en mayúsculas.
¿Cuál es tu problema al pasarlo?
okey, tomare en cuenta sobre el titulo.
Bueno al parecer el codigo que he pasado , si compila, pero no funciona..
quisiera algun ejemplo para poder continuar :s , soy nuevo en c++ .
Quisiera declarar estas variables de delphi para C++ Builder :
var
ADD1:procedure;
ADD2:procedure;
¿Qué es PAnsiChar en el código C++?
GetProcAddress retorna un puntero a función.
Los punteros a función se declaran en C/C++ así:
tipo_retorno(*nombre_variable)(parámetros);
void(*func)(int, char) = (void(*)(int, char)) GetProcAddress(...);
Aunque se suele poner el tipo en un using o un typedef:
using Funcion = void(*)(int, char);
typedef void(*Funcion2)(int, char);
Funcion f = (Funcion) GetProcAddress(...);
Funcion2 f2 = (Funcion2) GetProcAddress(...);
Error :$
(https://scontent.flim5-1.fna.fbcdn.net/v/t31.0-8/16300099_249446098833991_3328911925104646733_o.jpg?oh=8fb5625207f4cab03ba1a1ab062380d9&oe=5915903B)
¿Y los mensajes de error?
En cualquier caso, esas que te puse son 2 alternativas, no las uses ambas. O usas la una o la otra (para no mezclar).
"using" existe desde el estándar de C++11. No sé qué compilador, así que prueba con typedef solo.
De todos modos, sin mensajes de error, poco más puedo hacer.
EDITO: Olvida lo que dije (o no, segun los errores).
ADD1 y ADD2 ahora son tipos, no variables. Fíjate exactamente en cómo lo puse yo en mi ejemplo.
EDITO2: Y, nuevamente, pregunto. Qué es PAnsiChar.
ACA ESTA LA IMAGEN DEL ERROR...
(https://scontent.flim5-1.fna.fbcdn.net/v/t1.0-9/16298990_670777169770614_2079519784262379679_n.jpg?oh=8211ef0a09c83b59addedd04970fec86&oe=590EDD7F)
Si ADD2 ahora es un tipo, entonces:
ADD2 func = (ADD2) GetProcAddress(...)
Lo d ela doble declaración, pues es que no puedes declarar 2 variables o tipos con el mismo nombre.