Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-08-2007
c4_esp_VR c4_esp_VR is offline
Registrado
 
Registrado: ago 2007
Posts: 5
Poder: 0
c4_esp_VR Va por buen camino
struct y record

Hola amigos:

Soy nuevo en el foro, así que espero que me perdonen en el caso de cometer algún error como postear donde no se debe...

LLevo programando 6 meses en Delphi7 y la verdad es que por el momento es el mejor compilador que he programado hasta ahora, pero tiene la desventaja de que en muchas ocasiones hay que pasar código de Visual C++ a Delphi y me acao de encontrar con una peculiaridad y es la siguiente:

C++ permite definir estructuras con el comando struct, al igual que Delphi lo permite con el comando record, así que para pasar C++ a Delphi no hay más que reordenar dicho código...

Visual C++:

struct EFFECTS_NODE
{
LPDIRECTINPUTEFFECT pDIEffect;
DWORD dwPlayRepeatCount;
EFFECTE_NODE* pNext;
}

Delphi7:

type
TEFFECTS_NODE = record
pDIEffect : IDIRECTINPUTEFFECT;
dwPlayRepeatCount : Cardinal;
pNext : ^TEFFECTS_NODE
end;

Resulta que Visual C++ puede definir en el interior de struct una variable puntero dentro de si mismo, pero Delphi7 no deja hacerlo dando el siguiente error:

Type TEFFECTS_NODE is not yet completely defined

No sé si definiedo antes la estructura en algún sitio y luego definiendola no me dará error...seguro que a vosotros se os ocurre alguna forma...

El código no es más que implementar DirectInput9 para Delphi para crear un ForceFeedBack.

Espero que la explicación sea correcta...no la quiro fastidiar en mi primer post

Un saludete y gracias

__________________________________________________________________________________________
http://www.muchotrasto.com

Última edición por c4_esp_VR fecha: 13-12-2007 a las 22:13:41.
Responder Con Cita
  #2  
Antiguo 06-08-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
En pascal, y por lo tanto en delphi, se resuelve ese problema de la siguiente manera:
Código:
type
  PEFFECTS_NODE = ^TEFFECTS_NODE;
  TEFFECTS_NODE = record
    pDIEffect: IDIRECTINPUTEFFECT;
    dwPlayRepeatCount : Cardinal;
    pNext : PEFFECTS_NODE;
  end;
Responder Con Cita
  #3  
Antiguo 06-08-2007
c4_esp_VR c4_esp_VR is offline
Registrado
 
Registrado: ago 2007
Posts: 5
Poder: 0
c4_esp_VR Va por buen camino
Gracias seoane, me imaginaba que se resolvería de dicha forma, pues es una lista que se recorre a si misma, bueno ya os comentaré si ha dado resultado tu respuesta ya que aún me estoy dando cabezazos con el programita, aunque desde luego así ya no me da error de compilación.
Responder Con Cita
  #4  
Antiguo 07-08-2007
c4_esp_VR c4_esp_VR is offline
Registrado
 
Registrado: ago 2007
Posts: 5
Poder: 0
c4_esp_VR Va por buen camino
Efectivamente después de mucho pelear con la lista y con los punteros en Delphi he conseguido que no me diese error y programarlo, gracias por tu gran respuesta seoane, por cierto un tanto diferente esta forma de hacer listas enlazadas en Delphi .

Un saludete a los foreros.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
REcord/key deleted Luis Castillo Varios 1 02-11-2005 00:22:37
No current Record TheRafa Conexión con bases de datos 0 23-08-2005 10:15:48
evento on new record? istradlin Conexión con bases de datos 8 12-04-2005 23:15:00
Diferencia conceptual entre struct y typedef struct Crandel C++ Builder 2 27-12-2004 01:06:35


La franja horaria es GMT +2. Ahora son las 09:27: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
Copyright 1996-2007 Club Delphi