안녕하세요?
제가 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를 정의하는것과 함수를 참조하는것을 예를 들어서 갈켜주시면 감사하겠어요 그럼 수고하세요..
아래와 같은 형식으로 변환하세요...
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를 정의하는것과 함수를 참조하는것을 예를 들어서 갈켜주시면 감사하겠어요 그럼 수고하세요..
>