최근 객체지향 프로그래밍 언어라면 누구나 갖고 있는 인터페이스, 델파이에도 있다. 하지만 다른 언어처럼 ‘이렇게 쓰면 되겠지!’ 하다간 문제가 생길 수도 있다. 잘 모르고 쓰면 위험하지만 잘 쓰면 많은 도움이 되는 델파이의 인터페이스. 이번 글에서 제대로 알아보자. 레퍼런스 카운트가 뭐길래 델파이의 인터페이스는 평범한 인터페이스가 아니라, 레퍼런스 카운트 인터페이스이다. 직접적으로 차이나는 부분은 레퍼런스 카운팅이 된다는 사실이다. 레퍼런스 […]
Category Archives: Delphi tip
[델파이와 시큐어 코딩] 안전한 디렉토리 제거 방법
델파이와 시큐어 코딩에서 이어지는 글입니다. 지난번에 살펴본 소스에는 StrPCpy가 들어가서 문제가 있었다. 그렇다면 StrPCpy를 뺀 소스가 있을까? 당연하다. 사실 해당 부분은 없어도 되는 부분이다. 다음은 해당 소스이다. 함수를 쪼갠 이유는 수정시 편의를 위해서이니 만약 불편하다면 합쳐서 써도 상관없다. [snippet slug=delphi-directory-secure-removal lang=pascal]
델파이와 시큐어 코딩
C로는 시큐어 코딩 관련한 이야기들이 수도 없이 쌓여있지만, 델파이로는 많이 없다. 데브기어에 올라온 문의는 무시당한 것으로 보인다. 델파이는 과연 보안 관련한 문제가 없는가? 하면 그렇지 않다. 사실 당연한 게 자바 시큐어 코딩 가이드도 나오는 세상에, 네이티브 언어가 안전하리라고 생각하는 게 너무 순진한 생각 아닌가. 이 슬라이드를 보면 알겠지만 델파이는 명시적 외곽 체크도 없고(배열 등을 [0..X]로 […]
델파이에서 상속받은 형을 인자로 객체 생성할 땐 제너릭 대신 메타클래스로
만약에 어떤 형이 있고 상속받은 형이 있을 때, 상속받은 형을 인수로 넣어서 생성하려 한다면 처음 생각나는 건 제너릭일 것이다. 대략 식으로 선언을 하게 되면 T.Create를 부를 수가 있다. 그런데 여기에는 문제가 있는게, T.Create가 기본형이면 몰라도 T.Create에 어떤 인수가 들어가면 문제가 생긴다는 점이다. 그럴 때는 메타클래스를 쓰면 좋다. 메타클래스의 기본적인 사항에 대해서는 이 링크를 참고하자. 예를 […]
델파이에서 싱글턴 메모리 누수, Create 문제 없이 구현하기
델파이에서 싱글턴을 한다고 하면 보통 다음과 같은 소스를 많이 제시한다. 델파이에서 싱글턴 구현… 이런 소스의 문제는 1. 종료할 때 해제가 안 된다는 점 2. 여전히 Create가 가능하다는 점 이 있다. 첫째의 경우 싱글턴의 특성상 누수의 양이 많아서 문제가 되는 건 아니다. 어차피 인스턴스는 하나만 존재하기 때문이다. 그러나 ReportMemoryLeaksOnShutdown같은 옵션을 쓴다면 경고가 신경쓰이며 잘못하면 진짜 누수를 […]