Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problema compilar GHFreebrary (https://www.clubdelphi.com/foros/showthread.php?t=68895)

fjcg02 13-07-2010 18:50:57

Problema compilar GHFreebrary
 
Hola a todos,
estoy intentado utilizar la estupenda biblioteca de funciones de propósito general de Al González GHFreebrary, pero cuando intento compilarla, me da un error.

Concretamente, en la línea 196 del archivo GHFRoutines.pas, donde pone

Function ghCall (Const Obj :TObject; Const MethodAddress, Param :Pointer)
:Pointer; Overload;
Begin
Result := TghParamPtrMethod (ghMethod (Obj, MethodAddress)) (
Param);
End; <- AQUI

Me da el siguiente error: (Fatal Error) GHFRoutines.pas (196) Internal error : C13081

Agradecería a quien haya tenido el mismo problema me indicara cómo lo ha solucionado.
Al resto, agradecería que si saben dónde está el problema, me echaran una mano.

Gracias a todos por su colaboración.

Un saludo

Neftali [Germán.Estévez] 14-07-2010 11:00:16

En el caso de Delphi6, que es en el que yo las estuve probando en su día, es necesario desactivar la optimización para algunos bleuqes de código y evitar así el error C12911; Tal vez el tuyo sea por una cuestión similar:

En el caso de GHFRoutines.pas, aestos tres procedimientos que te uestro a continuación debes añadirles antes y después las directivas de compilación que te adjunto (línea 191 aprox.):

Código Delphi [-]
{$IFDEF VER140}
  // Para Delphi 6 desactivar la optimización
  // Internal error: C12911
  {$OPTIMIZATION OFF}
{$ENDIF}
  Function ghCall (Const Obj :TObject; Const MethodAddress, Param :Pointer)
    :Pointer; Overload;
  Begin
    Result := TghParamPointerMethod (ghMethod (Obj, MethodAddress)) (
      Param);
  End;


  Function ghCall (Const Obj :TObject;
    Const MethodAddress, Param1, Param2 :Pointer) :Pointer; Overload;
  Begin
    Result := TghTwoParamsPointerMethod (ghMethod (Obj, MethodAddress)) (
      Param1, Param2);
  End;


  Function ghCall (Const Obj :TObject; Const MethodAddress, Param1, Param2,
    Param3 :Pointer) :Pointer; Overload;
  Begin
    Result := TghThreeParamsPointerMethod (ghMethod (Obj, MethodAddress)) (
      Param1, Param2, Param3);
  End;
{$IFDEF VER140}
  {$OPTIMIZATION ON}
{$ENDIF}

Si estás con otra versión de Delphi, modifica la directiva para que te funcione.

Código Delphi [-]
  • VER80 - Delphi 1
  • VER90 - Delphi 2
  • VER100 - Delphi 3
  • VER120 - Delphi 4
  • VER130 - Delphi 5
  • VER140 - Delphi 6
  • VER150 - Delphi 7
  • VER160 - Delphi 8
  • VER170 - Delphi 2005
  • VER180 - Delphi 2006
  • VER180 - Delphi 2007
  • VER185 - Delphi 2007
  • VER200 - Delphi 2009
  • VER210 - Delphi 2010

Casimiro Notevi 14-07-2010 11:45:16

Pregunta off topic, ¿delphi 2007 es ver180 y ver185?, ¿qué versión es la 'turbo'?

Neftali [Germán.Estévez] 14-07-2010 12:44:39

Cita:

Empezado por Casimiro Notevi (Mensaje 370332)
Pregunta off topic, ¿delphi 2007 es ver180 y ver185?, ¿qué versión es la 'turbo'?

No lo se seguro, pero supongo que los Turbo equivaldrán a Delphi2006 o Delphi2005, ya que en realidad eran esa versión recortada.

fjcg02 14-07-2010 16:55:36

Neftali, un 10.

Compila perfectamente.

Lo de funcionar es otro tema, ya que depende de mi, y eso es otro cantar.

Muchas gracias y un saludo


La franja horaria es GMT +2. Ahora son las 20:59:42.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi