2010-08-03 3 views
2

저급 C 라이브러리를 Delphi로 변환 중입니다.C를 Delphi로 변환 - 지침

  1. 많은 캐스트가 있습니다. 나는 그것이 C 세계에서 정상이라고 생각한다. 나는 그들을 버리는 것이 안전하다고 생각한다. 정수는 32 비트입니다. 어떻게 생각해?

  2. 개체 등으로 변환하면 OOP의 오버 헤드가 될 수 있습니까?

  3. 마찬가지로 나는 try ... finally 및 exceptions의 비용을 알고 싶다.

유용한 정보가 있으면 알려주세요.

답변

0

절차 언어에서 OOP로 이동하는 것은 큰 도약입니다. OOP를 사용하면 많은 이점이 있습니다. OOP는 코드 작성 및 유지 관리가 더 쉽습니다. Delphi PL을 선택하는 것은 어셈블리 코드를 삽입하여 낮은 수준에서도 액세스 할 수 있기 때문에 좋은 선택입니다. try-catch는 예외 때문에 런타임에 프로그램 충돌을 방지하는 데 사용됩니다.

+0

OOP가 항상 코드 * 또는 * 유지 관리가 더 쉬울 수있는 것은 아닙니다. – Mick

+1

@Mick, 100 %가 동의합니다. OOP는 코딩 및 유지 관리가 더 쉬울 수 있지만 자동이 아닙니다. OOP는 복잡성을 관리하기위한 도구이지만 모든 도구와 마찬가지로 부적절하게 사용되면 하나의 크랙틱 스 혼란으로 끝날 수 있습니다. 지난 30 년 동안 모든 절차 적 프로그래머에게 OO로 도약했지만 패러다임을 결코 완전히 이해하지 못한 사람에게 물어보십시오. OO 프로그래머가 기능 언어로 옮겨가는 것에 대해서도 마찬가지라고 말할 수 있습니다. 서로 다른 도구에는 서로 다른 장단점이 있습니다. –

3

3 마찬가지로 try ... finally 및 exceptions의 비용을 알고 싶습니다.

타이트한 루프를 제외하고는 (결국 루프에 넣지 않고) try ...의 비용은 무시할 수 있습니다. 모든 인스턴스화/열기/할당과 자유/종료/할당 해제의 균형을 조정하여 모든 리소스를 보호 할 수 있도록 자유롭게 사용하십시오.

<code-to-open-a-file> 
try 
    ... 
finally 
    <code-to-close-the-file> 
end; 

try ... except의 비용이 눈에 띄게 높습니다. 그것들을 사용하여 발생하는 예외 상황에 대처할 수는 있지만, 예외에 대한 이유를 나타내는 카운터, 앱의 상위 레벨에서 손실 될 수있는 특정 정보를 기록하는 것과 같은 의미있는 조치를 실제로 취할 수있는 경우에만 예외를 사용하십시오. 그렇지 않으면 예외가 전파되도록합니다. 코드 호출자에게 (결국) 더 일반적인 수준에서 걸릴 수 있습니다.

응용 프로그램이나 라이브러리 또는 그 안에있는 스레드를 예외로 이스케이프하지 마십시오.

는 절대로 블록을 제외하고 빈을함으로써 예외를 "먹고"정말이

try 
    ... 
except 
end; 

이 말이 상황의 한 종류입니다 ... 예외를 기록 코드에서 예외를 잡기 그리고 항상 예외를 먹고있는 이유를 설명하는 코멘트를 추가하십시오.

+1

+1 "항상 예외를 먹는 이유를 말하면서 덧글을 달아주세요". –

1

당신은 SO에서이 질문에 대한 답변에 도움이되는 몇 가지 제안을 찾을 수 있습니다 : Best resources for converting C/C++ dll headers to Delphi?

당신은 또한 델파이 C에서 전환의 대부분을 자동화하는 것을 목표로 C-To-Pas project에서 살펴 봐야 할 수 있습니다.

+0

나는 C-To-Pas를 보았고 꽤 쓸만하지 못하다고 판명했습니다. 모든 것은 사실상 파서가 관련되어 있지 않기 때문에 기본적으로 몇 가지 매우 이상한 부작용을 가질 수있는 검색 및 교체 루틴의 묶음입니다. –