Q&A

  • C++소스를 델파이로 변환에 있어서 조언좀...
안녕하세요?

제가 C++을 이해를 못해서 그런데 다음 소스좀 델파이로 변환하는데 문제가 있네요..갈쳐주세요.



Rudder.h

---------------------------------------------------------------------------------

// Rudder.h: interface for the CRudder class.



//



//////////////////////////////////////////////////////////////////////







#if !defined(AFX_RUDDER_H__F488B307_C1DF_11D4_A944_00E04C392C3E__INCLUDED_)



#define AFX_RUDDER_H__F488B307_C1DF_11D4_A944_00E04C392C3E__INCLUDED_







#if _MSC_VER > 1000



#pragma once



#endif // _MSC_VER > 1000







#include "Motion.h"



#include "Propeller.h"



class CRudder



{



public:



double smm_NormalForce;



double smm_RudderXForce,smm_RudderYForce,smm_RudderNMoment;



public:



CRudder();



virtual ~CRudder();



void RudderFN(CMotion &motion,CPropeller &propeller); // 이 부분을 델파이로...



double RudderXForce(CMotion &motion,CPropeller &propeller); // 이 부분을 델파이로.



double RudderYForce(CMotion &motion,CPropeller &propeller);// 이 부분을 델파이로.



double RudderNMoment(CMotion &motion,CPropeller &propeller);// 이 부분을 델파이로.



void Steer();



};



#endif // !defined(AFX_RUDDER_H__F488B307_C1DF_11D4_A944_00E04C392C3E__INCLUDED_)

---------------------------------------------------------------------------------





Rudder.cpp입니다.

----------------------------------------------------------------------------------

// Rudder.cpp: implementation of the CRudder class.



//



//////////////////////////////////////////////////////////////////////







#include "stdafx.h"



#include "Rudder.h"



#include "math.h"







//////////////////////////////////////////////////////////////////////



// Construction/Destruction



//////////////////////////////////////////////////////////////////////







CRudder::CRudder() //이 부분을 델파이로..



{



}



CRudder::~CRudder() //이 부분을 델파이로..



{



}



double CRudder::RudderYForce(CMotion &motion,CPropeller &propeller) //이 부분을 델파이로..

{

RudderFN(motion,propeller);

smm_RudderYForce = -(1.0+smm_AH)*smm_NormalForce*cos(smm_RudderAngle);

return smm_RudderYForce;

}



double CRudder::RudderNMoment(CMotion &motion,CPropeller &propeller) //이 부분을 델파이로...

{

RudderFN(motion,propeller);

smm_RudderNMoment = -(smm_RudderXPosition+smm_AH*smm_XH)*motion.smm_LBP*smm_NormalForce*cos(smm_RudderAngle);

return smm_RudderNMoment;

}



void CRudder::Steer()

{

smm_OrderRudderAngle = smm_OrderRudderAngleD*PI/180.0;

smm_Dot_RudderAngle = (smm_OrderRudderAngle-smm_RudderAngle)/smm_TE;

if(fabs(smm_Dot_RudderAngle) > smm_Dot_MaxRudderAngle)

{

if(smm_Dot_RudderAngle > 0.0) smm_Dot_RudderAngle = smm_Dot_MaxRudderAngle;

else smm_Dot_RudderAngle = -smm_Dot_MaxRudderAngle;

}

}

----------------------------------------------------------------------------------



이 부분중에서 제가 특히 이해가 안가는 부분은 생성자의 소멸자를 다루는건데요.

위의 부분중에서 하나입니다.

double RudderNMoment(CMotion &motion,CPropeller &propeller);



Motion.h의 Class를 델파이로 변환시에는

procedure RuddreNMoment(?) double;



그리고 Cpp문에서도

double CRudder::RudderNMoment(CMotion &motion,CPropeller &propeller)

이렇게 정의하는 부분 있지요

이걸 델파이의 한 Unit로 구성할때는 Class를 정의하는것과 함수를 참조하는것을 예를 들어서 갈켜주시면 감사하겠어요 그럼 수고하세요..



1  COMMENTS
  • Profile
    최용일 2001.12.27 18:50
    안녕하세요. 최용일입니다.



    아래와 같은 형식으로 변환하세요...



    unit Rudder;



    interface



    ......



    type

    TRudder = class // 델파이에서 객체형에 사용되는 prefix는 T입니다...

    public

    smm_NormalForce: Double;

    ......



    constructor Create; // CRudder();

    destructor Destroy; override; // ~CRudder();



    procedure RudderFN(motion: TMotion; propeller: TPropeller);

    function RudderXForce(motion: TMotion; propeller: TPropeller): Double;

    function RudderYForce(motion: TMotion; propeller: TPropeller): Double;

    function RudderNMoment(motion: TMotion; propeller: TPropeller): Double;

    procedure Steer;

    end;



    implementation



    { TRudder }



    constructor TRudder.Create;

    begin

    ......

    end;



    destructor TRudder.Destroy;

    begin

    ......

    end;



    procedure TRudder.RudderFN(motion: TMotion; propeller: TPropeller);

    begin

    ......

    end;



    function TRudder.RudderNMoment(motion: TMotion; propeller: TPropeller): Double;

    begin

    RudderFN(motion, propeller);

    smm_RudderNMoment := -(smm_RudderXPosition+smm_AH*smm_XH)*motion.smm_LBP*smm_NormalForce*cos(smm_RudderAngle);

    Result := smm_RudderNMoment ......

    end;



    function TRudder.RudderXForce(motion: TMotion; propeller: TPropeller): Double;

    begin

    ......

    end;



    function TRudder.RudderYForce(motion: TMotion; propeller: TPropeller): Double;

    begin

    ......

    end;



    procedure TRudder.Steer;

    begin

    ......

    end;



    ^^ 항상 즐코하세요...



    우나기 wrote:

    > 안녕하세요?

    > 제가 C++을 이해를 못해서 그런데 다음 소스좀 델파이로 변환하는데 문제가 있네요..갈쳐주세요.

    >

    > Rudder.h

    > ---------------------------------------------------------------------------------

    > // Rudder.h: interface for the CRudder class.

    >

    > //

    >

    > //////////////////////////////////////////////////////////////////////

    >

    >

    >

    > #if !defined(AFX_RUDDER_H__F488B307_C1DF_11D4_A944_00E04C392C3E__INCLUDED_)

    >

    > #define AFX_RUDDER_H__F488B307_C1DF_11D4_A944_00E04C392C3E__INCLUDED_

    >

    >

    >

    > #if _MSC_VER > 1000

    >

    > #pragma once

    >

    > #endif // _MSC_VER > 1000

    >

    >

    >

    > #include "Motion.h"

    >

    > #include "Propeller.h"

    >

    > class CRudder

    >

    > {

    >

    > public:

    >

    > double smm_NormalForce;

    >

    > double smm_RudderXForce,smm_RudderYForce,smm_RudderNMoment;

    >

    > public:

    >

    > CRudder();

    >

    > virtual ~CRudder();

    >

    > void RudderFN(CMotion &motion,CPropeller &propeller); // 이 부분을 델파이로...

    >

    > double RudderXForce(CMotion &motion,CPropeller &propeller); // 이 부분을 델파이로.

    >

    > double RudderYForce(CMotion &motion,CPropeller &propeller);// 이 부분을 델파이로.

    >

    > double RudderNMoment(CMotion &motion,CPropeller &propeller);// 이 부분을 델파이로.

    >

    > void Steer();

    >

    > };

    >

    > #endif // !defined(AFX_RUDDER_H__F488B307_C1DF_11D4_A944_00E04C392C3E__INCLUDED_)

    > ---------------------------------------------------------------------------------

    >

    >

    > Rudder.cpp입니다.

    > ----------------------------------------------------------------------------------

    > // Rudder.cpp: implementation of the CRudder class.

    >

    > //

    >

    > //////////////////////////////////////////////////////////////////////

    >

    >

    >

    > #include "stdafx.h"

    >

    > #include "Rudder.h"

    >

    > #include "math.h"

    >

    >

    >

    > //////////////////////////////////////////////////////////////////////

    >

    > // Construction/Destruction

    >

    > //////////////////////////////////////////////////////////////////////

    >

    >

    >

    > CRudder::CRudder() //이 부분을 델파이로..

    >

    > {

    >

    > }

    >

    > CRudder::~CRudder() //이 부분을 델파이로..

    >

    > {

    >

    > }

    >

    > double CRudder::RudderYForce(CMotion &motion,CPropeller &propeller) //이 부분을 델파이로..

    > {

    > RudderFN(motion,propeller);

    > smm_RudderYForce = -(1.0+smm_AH)*smm_NormalForce*cos(smm_RudderAngle);

    > return smm_RudderYForce;

    > }

    >

    > double CRudder::RudderNMoment(CMotion &motion,CPropeller &propeller) //이 부분을 델파이로...

    > {

    > RudderFN(motion,propeller);

    > smm_RudderNMoment = -(smm_RudderXPosition+smm_AH*smm_XH)*motion.smm_LBP*smm_NormalForce*cos(smm_RudderAngle);

    > return smm_RudderNMoment;

    > }

    >

    > void CRudder::Steer()

    > {

    > smm_OrderRudderAngle = smm_OrderRudderAngleD*PI/180.0;

    > smm_Dot_RudderAngle = (smm_OrderRudderAngle-smm_RudderAngle)/smm_TE;

    > if(fabs(smm_Dot_RudderAngle) > smm_Dot_MaxRudderAngle)

    > {

    > if(smm_Dot_RudderAngle > 0.0) smm_Dot_RudderAngle = smm_Dot_MaxRudderAngle;

    > else smm_Dot_RudderAngle = -smm_Dot_MaxRudderAngle;

    > }

    > }

    > ----------------------------------------------------------------------------------

    >

    > 이 부분중에서 제가 특히 이해가 안가는 부분은 생성자의 소멸자를 다루는건데요.

    > 위의 부분중에서 하나입니다.

    > double RudderNMoment(CMotion &motion,CPropeller &propeller);

    >

    > Motion.h의 Class를 델파이로 변환시에는

    > procedure RuddreNMoment(?) double;

    >

    > 그리고 Cpp문에서도

    > double CRudder::RudderNMoment(CMotion &motion,CPropeller &propeller)

    > 이렇게 정의하는 부분 있지요

    > 이걸 델파이의 한 Unit로 구성할때는 Class를 정의하는것과 함수를 참조하는것을 예를 들어서 갈켜주시면 감사하겠어요 그럼 수고하세요..

    >