1) Uninstall Delphi 2007.

2) Remove the Program Files\CodeGear\RAD Studio\5.0 directory.

For Windows Vista:

3a) Remove the Program Data\CodeGear\RAD Studio\5.0 directory.

3b) Remove the Program Data\{AB3EC276... directory.

3c) Remove the User\All Users\CodeGear\RAD Studio\5.0 directory.

For pre-Vista Windows OS:

3a) Remove the Documents and Setting\All Users\Application Data\CodeGear\RAD Studio\5.0 directory.

3b) Remove the Documents and Setting\All Users\Application Data\{AB3EC276... directory.

4) If you had the Trial or Enterprise version installed and are now installing the Professional version, then run Regedit and remove the key: HKEY_CURRENT_USER\Software\Borland\BDS\5.0

5) Re-install Delphi 2007.
윈도우 프로그램을 짜면서 제일 짜증나는 부분이 printf 를 제대로 쓸수 없다는 것이다.
printf 는 표준 화면으로 출력을 내보내기 때문에...
그래서 Memo 로 출력할때 IntToStr , StrToInt 등을 무진장 써야된다.
하지만 sprintf 를 쓰면 Dos 에서 printf 를 쓰듯이 모든 형식지정자를 다 사용할 수 있으며
간단히 메모장으로 출력을 할 수 있다.


또는


와 같이 해도 된다.

하지만 다른 C program 과의 호환성을 생각해 보면 Ansistring 의 Method
쓰는것은 별로 좋지 않을듯...

볼랜드포럼 향기님 글에서 발췌...


메시지 다이얼로그가 매일 같은것만 보기가 싫어서 조금 변경해 보았다..

전역 함수로 놔두고 쓰면 괜찮을듯.

인자 처리만 몇개 더 처리하면 편할듯...

#define PI 3.1415926535897932384626433832795028841971693993751058209749445923078164064862089986280348253421170679821480865132823066479384460955058231725

double tmpA, tmpB,tmpC;
tmpB = edtX2->Text.ToDouble() - edtX1->Text.ToDouble();
tmpC = edtY2->Text.ToDouble() - edtY1->Text.ToDouble();
tmpA = sqrt(pow(tmpB, 2) + pow(tmpC, 2));

lblA->Caption = "빗변 :" + (String)tmpA;
lblB->Caption = "
밑변 :" + (String)tmpB;
lblC->Caption = "
높이 :" + (String)tmpC;

// 직각
lblAngleA->Caption =  "각도 A : " + (String)((atan2(tmpB, tmpC) + atan2(tmpC, tmpB)) * 180 / PI);

// 밑변에 인접한 각    tmpB tmpA의 각
lblAngleB->Caption =  "각도 B : " + (String)(atan2(tmpB, tmpC) * 180 / PI);

// 높이에 인접한 각    tmpC  tmpA의 인법한 각
lblAngleC->Caption =  "각도 C : " + (String)(atan2(tmpC, tmpB) * 180 / PI);


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

한변과 한 각을 알때 처리..


밑변이 x 이고 한각이 a 이고 다른 한각이 90도일때의

높이 구하는 방법은

? = x * tan(a) ;

간단히 구할수 있음...

컴포넌트를 작성하거나 남이 만든 컴포넌트를 사용하다보면 아이콘이 맘에 들지 않거나 없는 경우가 많이 있다.

이럴 경우 X박스를 그냥 써도 되나..

존심상 나타나게 하고 싶을때..는

다음과 같은 방법을 사용하면 된다..

만약 소스에 dcr이나 res 파일이 있다면 그 파일을 사용하면 된다..
이 경우 이름이 같으면 된다(뭐.. 이름이 다르다면 소스와 같은 이름으로 만들면 된다..
가끔씩 이름만 같아도 안 되는 경우가 있다..
이럴때는 Resource 에디터를 이용해 리소스를 열어보면 리소스 명이 소스명과 다를 경우가 태반이다..
리소스명을 소스와 같은 파일로 작성해 준다..(어렵지도 않음)

compile과 make 작업을 다시 해주면 짜잔~~ 하고 나타날 것이다.. (가끔은 해당 컴포넌트를 제거하고 재설치 해야 되는 경우도 있다)

소스 상단부에 해당 리소스를 넣거나 파일 추가시 넣어주는 방법도 있으나 위의 작업이 되지 않는다면 어차피 나타나지 않는다..
직접 리소르를 넣어줄경우 가끔씩 이미 패스가 지정되어서 안 된다고 할때는 기존 패스를 삭제하고 리소스를 추가하면 나타날 것이다..

허접한 팁하나를 올림...

전에 만들어 보았던 이벤트 다이얼로그의 VCL 판이다..

MFC에서는 여러 함수를 사용했는데.. BDS에서는 간단하게 구성해 보았다..

스플래쉬 폼이랑 비슷하지만.. 이번것은 메시지를 2개 처리하고 시간을 초단위(1초 = 1)로 처리하고 위치를 지정할 수 있게 바꾸어 보았다.

생성부 함수를 조금 변경해서 작성했다..

타이머를 하나 얹어서 타이머 시간이 되면 사라지는 방식이다.(정밀한 시간 제어가 필요없는 것이어서.. 그냥.. 간단하게 작성했다..)

전과 다른점은 화면 배경을 jpg 화면을 올려서 구분을 지어 주었다..

차후에 변경한다면.. 이벤트에 맞는 그림 처리까지 해서 더 자세한 설명을 해주는것도 하나의 방법일 듯 싶다..
그리고, 빠트린 창을 클릭하면 자동으로 사라지는 것도 추가해야 될듯 싶다..

그리고, 한가지 더.. 영역을 임의로 정해서 투명창을 작성하였다.. 이 방법은 추후 다른 프로그램에서도 사용이 가능할 듯 싶다..


예전에 작업하던것을 날려 버렸다.. ㅠㅠ

그래서, 어제 오늘 맘 잡고 다시 시작했다...

어느 정도 작업이 된듯하다.. 매끄럽지 않은 부분도 많지만...

그래도 내 혼자 쓰기에는 아무런 문제가 없는듯.. 뭐.. 이상한 부분은 다시 수정하면 되니까..

우선 1차 수정안을 올려 놓는다...

추후에 변경되면 화일을 변경하면 되니까..

저작권 문제가 있을지 모르니...

암호는 걸어놔야겠군.

수정기간 : 1.5day
invalid-file

Comp32x

간단하지만.. 자주 까먹는 관계로 정리..
VCL에서 날짜는 상수부분에서 처리
시간은 소수점 이하 지수부에서 처리..
시간 날짜 동시에 처리할 경우에는 double이나..TDateTime 변수 사용..

///////////////. hpp ///////////////////////////////////////
#include "time.h"

// 변수 정의
 TTime  tMin;    // 경과시간
 TTime  tEnd;    // 마지막 정지 시간
 TTime  tNow;   // 현재 사용 시간 
 TTime  tPost;   // 사용 시간 임시 저장용..  
 TTime  tStart;   // 사용 시간 임시 저장용..

 TTime d_time ;

// TTime 은 시간만 처리시(소수점 이하만 구함)
// TDate 는 날짜만 처리히(상수부만 처리)
// TDateTime 는 상수와 지수부분 모두 처리.

/////////////// .cpp //////////////////////////////////////

   //변수 기본값 처리..
   tMin = 0;
   tEnd  = Now();   // 날짜와 시간 모두 처리.. 시간만 처리시는 Time(),  날짜만 처리시는 Data()
   tPost = 0;  
   tStart = Now();  

   // 일시 멈춤시 이전값 저장..
    tPost =  tMin;


    // 시간 구하기..
    tNow = Now(); 
    tMin = tNow - tEnd + tPost;

   // 시간 표시.
 d_time = Global->tMin;  
 DecodeTime(d_time, Hour, Min, Sec, MSec);
 lbl_UseTime->Caption = AnsiString().sprintf("작업 시간 : %02d:%02d:%02d", Hour, Min, Sec);

+ Recent posts