(Ayuda)Pasando codigo delphi para c++...

Iniciado por ByJørGe, 2 Febrero 2017, 16:16 PM

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

ByJørGe

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:

ivancea96

No pongas títulos en mayúsculas.


¿Cuál es tu problema al pasarlo?

ByJørGe

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;

ivancea96

¿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);
Código (cpp) [Seleccionar]
void(*func)(int, char) = (void(*)(int, char)) GetProcAddress(...);

Aunque se suele poner el tipo en un using o un typedef:

Código (cpp) [Seleccionar]
using Funcion = void(*)(int, char);
typedef void(*Funcion2)(int, char);

Funcion f = (Funcion) GetProcAddress(...);
Funcion2 f2 = (Funcion2) GetProcAddress(...);


ivancea96

#5
¿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.

ByJørGe


ivancea96

Si ADD2 ahora es un tipo, entonces:
Código (cpp) [Seleccionar]
ADD2 func = (ADD2) GetProcAddress(...)

Lo d ela doble declaración, pues es que no puedes declarar 2 variables o tipos con el mismo nombre.