본문 바로가기

Developement/DELPHI (pascal)

(8)
의문 : winsock 에서 connect 에서 ERROR_ACCESS_DENIED 반환 !!! 현재 간단한 소켓을 통한 메시지 전송(명령어 일종)을 구현 중인데, 이게 이상한게 gcc 에서 컴파일하거나 해서 돌리면 잘 도는 것이 동일한 Windows API 를 이용해서 Delphi 에서 구동시 위와 같이 오류가 난다는 것 입니다. 에러 내용은 , 먼저 socket() 을 통해 fd 값을 얻고, 이것으로 connect() 를 하려면, 오류가 -1 이 리턴. WSAGetLastError() 를 통해 얻어 오는 것이 5 로서, ERROR_ACCESSS_DENIED 에 해당 하는 값 입니다. 과연 이 문제가 왜 발생 하는지 몇일 동안 고민 하고 있습니다. DLL 로 만들어서 call 하더라도 동일하게 문제가 발생 하는 것을 보아, 이것이 단순 socket 문제는 아닌 것 같고, 그렇다고 Administr..
Delphi Application 에 Windows Vista/7 관련 설정 하기. 구형 Delphi Compiler 를 사용하는 본인의 경우엔, windows7 의 DWM 이나 달라진 메시지 처리 등을 해야 합니다. 특히 ALT 키가 눌려졌을 경우 기존 윈도우 시스템과 달리, WM_UPDATEUISTATE 와 같은 메시지 처리는 필히 해 주지 않으면, 각 컨트롤 (버튼과 같은) 이 사라져 버리는 둥의 어처구니 없는 경우를 격게 됩니다. 대부분의 Delphi 프로그래머 들은 상위의 컴파일러와 IDE 를 구비하고 있겠지만, 저와 같은 서민층의 불쌍한 프로그래머들은 고가의 Delphi 를 구매할 여력이 없습니다. 그래서 개인에게 License 를 배포 받아 쓸 수 있는 (기간이 제한적인) Enterprise 버젼을 쓰는 분들이 더러 있을 겁니다. 기본적으로 Pre-compile 된 comp..
C++ 에서 만든 DLL 과 math 연동시 오류 : Invalid Floating Point Operation 어느 댓글을 남겨 주신 광란의사랑님 말씀대로 이때까지 해 보지 않았던 math 연동 DLL 을 테스트 해 보았습니다. 일단 델파이 에서는 표시 할 수 없는 -1.#INF 가 나오므로 FloatToStr() 함수를 거치면 NAN 으로 표시 됩니다. 그냥 만들게 되면 Invalid Floating Point Operation 오류 가 발생 하는데, 이는 Delphi 의 FPU monitor 플래그 때문에 발생 하는 문제 입니다. 이 문제는 다음 실제 사용된 코드와 같이 쓰시면 해결이 가능합니다. 아래에 예제 샘플을 추가 합니다. 사용된 툴은 CodeBlocks 와 minGW , 그리고 TurboDelphi Explorer(2006) 입니다. 압축을 풀면 CUSTMATH 디렉터리와 , DELPHI 가 각각 있..
[DELPHI] 기본 문법 - 함수형, unit 델파이에서 사용되는 함수 형태는 크게 procedure 와 function 두가지 입니다. 이 둘의 차이는 C 에서 void 형인가 아닌가의 차이겠군요. 즉, 함수 자체가 인자를 받아서 함수 자체가 결과 값을 되돌려 주지 않는가 또는 주는가의 차이라 하곘습니다. 차이는 다음과 같이 알 수 있습니다. procedure testProc(input1 : integer); function testFunc(input1 : integer) : integer; procedure 인 testProc 는 입력인자로 integer 형으로 input1 이란 걸 받고 뭔가를 처리 할 것입니다. 반면 function 인 testFunc 는 입력으로 input1 을 받아서 뭔가를 다시 integer 형태로 결과를 돌려 주게 됩니..
[DELPHI] 기본 문법 - 구조체, 사용자 정의. 델파이는 기본적으로 구조체를 record 로 정의 하고 있습니다. 또한 이름은 관례적으로 T 를 앞에 붙이고 있습니다. type TstructExample = record testInt : integer; testByte : byte; testString : string; end; // of TstructExample; 이렇게 선언된 구조체는 class 내나 변수선언 부 에서 정의 할 수 있습니다. var structExample : TstructExample; 또한 이 구조체를 포인터로만 선언 하고 싶다면 다음과 같이 선언 할 수 있습니다. var pStructExample : ^TstructExample; C 에서 * 을 붙이는 것과 비슷하게 ^을 붙임으로서 포인터로 사용이 가능합니다. 하지만 델파이..
[DELPHI] 기본적인 문법 - 시작과 끝, 함수와 변수. 델파이는 기본적으로 pascal 문법을 사용하며, object pascal 형태로 C++ 과 함께 사용될 수 있습니다. 즉, DLL 을 class 로 만든 경우, 델파이에서도 그에 대응하는 class 를 구성함 으로서 사용이 가능하다는 것 입니다. 하지만 이런 방법 이전에 델파이가 사용하는 pascal 의 문법부터 알아 보는 시간을 가져야 겠습니다. 초창기의 pascal 은 매우 단순한 변수형들만 지원을 했습니다만, 컴파일러가 진화 하면서 점점 다양해 지기 시작 했습니다. 또한 pascal 은 상위언어에 속하는 지라 대소문자를 가리지 않습니다. (단, int64 와 Int64 는 다릅니다.) 기본적으로 수를 다루는 함수 형태는 다음과 같이 존재 합니다. Integer data types : Byte ( ..
[DELPHI] 델파이, 그 이전에 파스칼(PASCAL) 델파이 언어는 Object Pascal 이라는 객체지향 파스칼 언어에 해당합니다. 정확히는 Object Pascal 형의 언어가 되는 격 입니다 (코드기어 즉, 볼랜드 측에서는 델파이 랭귀지 라고 호칭합니다) C 에서도 C 와 C++ 이 존재 하듯이, Pascal 역시 Object Pascal 이 C++ 에 해당하는 구조라 하겠습니다. Pascal 의 경우는 C 와 달리 type casting이 매우 정확 해야 하며, 이로 인해 유연성이 C 에 비해 많이 떨어 지는 편 입니다. 그로 인해 델파이 에서는 그런 문제들을 위해 다양한 포인터를 지원하고 이로 인해 C 나 C++ 로 만든 DLL 과도 완벽한 호환이 가능하고 재사용이 가능합니다. 문법에 있어서는 C 이전에 나온 언어라 C 나 C++ 과 비슷한 면도..
SSangeOn 을 위한 TurboDelphi Explorer 기본강좌 시작합니다. 같이 일하는 우수 병특인재 인 SSangeOn 의 급 Delphi 파워를 맛들이기 시작한지라, 강좌를 시작 해 볼까 합니다. 사내 100명이 넘는 인원중 Delphi 를 아는 사람이 저 포함 아마 2명 정도 될듯 합니다. 사람들은 C 는 어설프게 알더라도 Delphi 는 뭔지 모르거나, 비교 자체가 기분 나쁜 M$ Visual Basic (비베) 과 비교하는 경우가 있습니다. 비베 따위와 비교 당하는 것은 무척이나 기분 나쁜 일이죠. 아무튼. SSangeOn 을 위해서라도, 양병규님의 정신을 전파하기 위해서라도, 제가 아는 얇팍한 윈도우32 어플리케이션 꽁수들을 위해서라도 짬짬히 강좌를 써 보도록 하겠습니다. 기본으로 포함되는 일부 라이브러리 문제점을 수정 할 수 있는 팁과. 향상된 라이브러리 처리 등등..