사이드바 영역으로 건너뛰기

[펌]쉽게 따라 하는 콤보박스 Object 삽입방법(1년미만 초보분만보세요)

퍼온곳 : 한국델파이동호회 델마당

URL :  http://www.delmadang.com/community/bbs_view.asp?bbsNo=3&bbsCat=0&st=S&keyword=%uCF64%uBCF4%uBC15%uC2A4&indx=197440&keyword1=콤보박스&keyword2=&page=1

 

중복이라면 댓글 달아주세요 삭제할께요..

1. Integer형 넣기

with Query do
begin
First;
while not(Eof) do
begin
Combobox1.Items.AddObject(FieldByName('상품명').AsString,
TObject(FieldByName('상품id').AsInteger));
Next;
end;
end;


빼쓰기

GoodID := LongInt(Combobox1.Items.Objects[Combobox1.ItemIndex]);


2. String형 넣기

with Query do
begin
First;
while not(Eof) do
begin
Combobox1.Items.AddObject(FieldByName('상품명').AsString,
TObject(LongInt(NewStr(FieldByName('상품id').AsString))));
Next;
end;
end;


빼쓰기

GoodID := PString(Combobox1.Items.Objects[combobox1.ItemIndex])^;


3. 잊지말고 메모리 해제합시다.

OnDestroy 이벤트에 코딩해줍니다.

for i := 0 to combobox1.Items.Count-1 do
DisposeStr(PString(combobox1.Items.Objects[i]));

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

오라클 인스톨

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

CentOS 5.2 에 Oracle 10g R2 Install

작업에 필요해서 오라클을 깔게 되었다.

 

지난주 금요일에 시작해서 오늘에서야 겨우.... 도대체 뭐가 문제인지 알수는 없지만 그동안 괴롭혔던 문제들이 해결되어서 그 과정을 적는다.

 

실패의 시간들

 

1./etc/hosts 에 데이터가 제대로 안들어가 있어서 문제였던 부분들이 있다. 고정IP 가 아니라고 할지라도 오라클 인스톨 할 때는 제대로 입력해주는게 좋은 거같다.

   예) 192.168.1.10     db.myhost.co.kr db

와 같은 형태로

 

2.버전 문제도 있는거 같다. 11g를 깔아볼려고 그 애를 써도 안깔리더니 10gR2는 잘 깔린다. 게다가 http://www.oracle.com 으로 들어가서 모두다운로드 링크타고 들어가서 받아온 10g는 인스톨중에 에러내고 안깔리더니 http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10201linuxsoft.html 에서 받은 10g는 잘 깔렸다. 이건 뭔 경우여...

 

ORA-12154 에러를 만날때마다 내가 뭐를 그렇게 잘 못 설정했나 싶었는데 선택의 문제도 있나 보다.(하지만 내가 세팅 잘못한 어떤 값때문일 확률이 높다. 다른 사람들은 성공한 사람도 많은거 보면..)

 

오라클 설치

 

1.사전 준비

    ㄱ.리눅스 설치

         설치는 centos 5.2 버전으로 했다.

         서버에 설치되어 있는 램은 4G 로 swap 도 4G 를 주어서 포맷했다.(오라클 문서에 보면 메모리가 1~4G 에서는 메모리만큼 swap 을 주도록 적혀져 있는데 그냥 맘편하게 4G 해주는게 warning 안만나고 좋을거 같다.)

         오라클 설치가 xwindow 에서 되기 때문에 설치유형에서 [Server-Gui]를 선택하고 사용자유형에 체크해줘서 설치될 개별 패키지를 선택했다. KDE 를 선택하고 개발용 라이브러리는 모두 선택,서버는 모두 선택안함(리눅스가 좋은 것 중의 하나가 꼭 필요하지 않은 서비스를 보다 쉽게 컨트롤 할 수 있는거다.)

         설치가 끝나고 난 후 kde 상에서 로그인 후에 소프트웨어 업데이트를 통해 업데이트 가능한 모든 패키지를 업데이트 시킨다.

 

    ㄴ.오라클 유저 생성

           groupadd oinstall

          groupadd dba

          useradd -g oinstall -G dba oracle

 

   ㄷ.소프트웨어 압축해제   

           unzip 10210_database_linux32.zip (이건 oracle 유저로 )

 

   ㄹ.필요한 패키지 확인

필요한 패키지는 대충 아래와 같다. 처음 리눅스 설치할 때 어떻게 했느냐에 따라 다르게 나올거고 사실 오라클 설치하다가 보면 문제가 있다고 나오면 그때 설치해도 문제는 없다.

 

yum list 패키지 이름

으로 확인해서 없는 경우에는

yum install 패키지 이름으로 설치했다.

 

setarch-2.0-1.1
glibc-2.5-24.el5_2.2
compat-gcc-34-3.4.6-4
make-3.81-3.el5
compat-libstdc++-33-3.2.3-61
libaio-0.3.106-3.2

libaio-devel.i386 0:0.3.106-3.2
gcc-4.1.2-42.el5

libXp-1.0.0-8.1.el15

libXp-devel.i386 0:1.0.0-8.1.el5

openmotif.i386 0:2.3.0-0.5.el5

compat-db.i386 0:4.2.52-5.1

 

   ㅁ.kernel 파라미터

오라클 설치할 때 확인하는 값은 아래와 같다.

kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144

각 값들이 이보다 커야 설치에 문제가 없다.

뭐 이것도 사실 설치하다가 메시지 뜨면 그때 설정해도 문제는 없다.

 

각 값이 어떻게 되어 있는지 보려면

/sbin/sysctl -a | grep 파라미터 이름

예)  /sbin/sysctl -a | grep shm

vm.hugetlb_shm_group = 0
kernel.shmmni = 4096
kernel.shmall = 268435456
kernel.shmmax = 4294967295

 

값들을 변경시키려면 /etc/sysctl.conf 를 수정하면 된다.

 

[root@db ~]# vi /etc/sysctl.conf

# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536

# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 4294967295

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 268435456

 

와 같이 되어 있는 파일의 마지막에 변경하고자 하는 값들을 적어준다.

kernel.sem = 250 32000 100 128
#fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144

 

여기서 file-max는 문서에 보면 프로세서 * 512 값이라고 되어있다.

 

저장하고 나서

 

[root@db ~]# /sbin/sysctl -p

했을 때 에러나지 않고 저장한 값들이 화면에 죽 뜨면 잘 된거다.

[root@db ~]# /sbin/sysctl -a

 해서 마침

 

 

   ㅂ.oracle directory

[root@db ~]# mkdir -p /u01/app/oracle
[root@db ~]# mkdir -p /u01/tmp
[root@db ~]# chown -R oracle:oinstall /u01/app/
[root@db ~]# chown -R oracle:oinstall /u01/tmp 

 

   ㅅ.oracle shell 환경설정

 

[root@db ~]# vi /etc/pam.d/login

마지막에

session required /lib/security/pam_limits.so

입력해준다.

 

[root@db ~]# vi /etc/security/limits.conf

soft nproc 2047
hard nproc 16384
soft nofile 1024
hard nofile 65536  

 

입력해준다.

 

[root@db ~]# su - oracle
[oracle@db ~]$ vi .bash_profile

 

TMP=/u01/app/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/10gR2; export ORACLE_HOME
ORACLE_SID=hexpo; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH

 

입력해준다.

입력후

[oracle@db ~]$ . .bash_profile 나 [oracle@db ~]$ source .bash_profile 하여 변경내용을 적용시킨다.

 

 

  2. 오라클 설치

 

 

        

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

1년에 한번하는 회원의 권리와 의무를 행사못했다.

http://center.jinbo.net/emeeting2009/

 

난 진보넷 회원이다.

 

벌써 몇년된거 같은데.. 1년중 회원으로서의 권리와 의무를 행사하는 유일한(가끔가다 소식지나 책자를 받아보긴 하지만 그건 받아보는 거지 행사하는 건 아니고.) 행위가 총회 참가다. 그걸 작년과 올해 연속해서 못가고 있다. 먹고살기 바빠서....(ㅜ.ㅜ. 올해는 상사가 등뒤에 앉아있었다. 저녁 9시까지.)

 

 

아이 둘 낳고(뭐 내가 낳은 건 아니고 마님이 낳았지만) 먹이고 입히고 놀아주자면 내 시간의 반은 회사에, 반의 반은 잠자고 쉬는데, 반의 반의 반은 토끼같은 마님과 호랑이같은 아이들에게, 나머지는 공부하거나 사람들을 만나는데 써야 한다.

 

진보넷은 이런 불량회원(그러고 보니 저번달 회비가 통장에서 빠져나간건지 애매하네..)을 위한 사업들도 좀 조직하고 교육해주시라. 회비를 강탈해가면서 꼭 강탈당해야만 할 일이었다고 느끼게 만들어주시라. 벌써 몇년째 1개월에 10,000원인데 자발적으로 올리긴 살떨리는 일이니 강제적으로 인상해주시라.

 

그래도 예전에는 총회할 때 전화도 하고 하더만.. 이번엔 메일(편지와 전자메일 둘다.. 그러고 보니 한총리 생각이 나네.) 보내고 땡.  총회관련 내용도 좀 잘 보이는 곳에 게시해주었으면 하는 소망도.

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

야만인 코난 1 칼날 위의 불사조

야만인 코난 1 칼날 위의 불사조(Cona the Barbarian)

 

로버트 E 하워드 지음

권 기대 옮김

베가북스

 

검마소설의 효시라고 한다.

 

어린 시절(국민학교땐가 아님 중학교 땐가 ) 아버지가 사다주신 귤색 표지의 전집에 있던 이야기였던거 같다. 코난이 왕에서 쫓겨난 후 다시 왕위를 찾던 내용으로 기억되는데 이 시리즈 번역된 줄 모르고(번역 안될거라고 생각했다.) 영어원문이라도 찾아봐야지 하다가 찾기가 힘들어 포기했었는데 도서관에서 찾았다.

 

요즘의 환타지 트랜드는 아니지만 나름의 흥취는 있다.

 

 

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

신부님 우리들의 신부님 1

신부님 우리들의 신부님 1

죠반니노 과레스끼 연작소설

이승수 옮김

서교출판사

 

돈까밀로 시리즈 원작 첫 완역이란다.

 

고등학교 때 도서관 가서 공부한다고 가서는 하루종일 책만 읽다 오던 시절(후암동에 있던 용산도서관에서 책 빌리려면 도서카드 찾아서 대출증에 써서 제출하면 사서가 찾아주던 방식이었다. 책제목이나 작가에 대한 자료가 있어야만 찾기가 쉬웠던 .. 이 책을 본 것도 거의 우연..) 한권을 보고는 나머지 다 읽었던 기억이 난다.

 

사람에 대한 애정과 신뢰가 묻어나오는 책이다. 학삐리때 씰데없는 이론 공부말고 이런 생각에 대해서 좀 더 간절하게 했으면 좋았을텐데 말여..

 

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

간만의 청계천 나들이..

마님하고 아이들은 은평구립회관에서 하는 만화영화 보러 가고..

 

일은 손에 안잡히고 해서 간만에 청계천 8가에 혼자 놀러갔다.

 

상전벽해가 뭔지 보여주는 8가.. 예전의 건물들은 거의 없어지고, 길도 없어지고, 장사하던 사람들도 없어지고...

 

황학동 시장 갈때마다 들르던 튀김집, 국수집 없어진게 아쉽고.. 그나마 동묘쪽으로 예전의 고물 좌판들은 늘어서 있어서 그건 다행...

 

야채곱창집도 몇집 안남아 있어서 곧 업어질거 같은 생각이.. 내가 생각해도 마천루 아파트(정말로 성처럼 느껴지는...)에 사는 사람들이 곱창 골목을 그냥 놔두랴 하는 생각이 든다. 예전부터 다니던 영광곱창집에서 야채곱창에다가 소주 한병 하고 나오면서 사진기 안들고 온걸 아쉬워 했다.

 

종로 쪽으로 죽 걸어오면서 무슨 그런 팔게 많은지 노점이 가득하다.. 이것도 도시미관을 위해서 곧 없어지게 될거 같다는 생각이..

 

종로 3가에서 그동안 지나다니면서 무슨 맛일까 궁금해하던 돼지껍데기 볶음에다가 소주 한병 더하고 집으로 왔다. 먹을만 하더만...

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

dateutils.pas

DateUtils.pas 날짜함수 정리


//일자를 추출한다.
function DateOf(const AValue: TDateTime): TDateTime;

//시간을 추출한다.
function TimeOf(const AValue: TDateTime): TDateTime;

//평년,윤년을 구분하다.
function IsInLeapYear(const AValue: TDateTime): Boolean;

//오전,오후를 구분한다.
function IsPM(const AValue: TDateTime): Boolean;

//Word형의 년,월,일 파라메타의 유효성을 체크한다.
function IsValidDate(const AYear, AMonth, ADay: Word): Boolean;

//Word형의 시,분,초,밀리초 파라메타의 유효성을 체크한다.
function IsValidTime(const AHour, AMinute, ASecond, AMilliSecond: Word): Boolean;

//Word형의 년,월,일,시,분,초,밀리초  파라메타의 유효성을 체크한다.
function IsValidDateTime(const AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: Word): Boolean;

//ex) IsValidDateDay(2006,45) : 2006년의 45번째날이 유효한지를 체크한다.
function IsValidDateDay(const AYear, ADayOfYear: Word): Boolean;

//ex) IsValidDateWeek(2006,42) : 2006년의 42주차가 유효한지를 체크한다.
function IsValidDateWeek(const AYear, AWeekOfYear,  ADayOfWeek: Word): Boolean;

//년,월,월의주차,요일  이  유효한지를  체크한다.
//ex) IsValidDateMonthWeek(2006,2,1,2) : 2006년 2월의 1주차의 화요일이 유효한지를 체크한다.
function IsValidDateMonthWeek(const AYear, AMonth, AWeekOfMonth, ADayOfWeek: Word): Boolean;

//ex) WeeksInYear(Today) : 오늘이 년의 몇주차인지 리턴한다.
function WeeksInYear(const AValue: TDateTime): Word;                
function WeeksInAYear(const AYear: Word): Word;            

//ex) DaysInYear(Today) : 오늘이 년의 몇일째인지 리턴한다.          
function DaysInYear(const AValue: TDateTime): Word;
function DaysInAYear(const AYear: Word): Word;

//ex) DaysInMonth(Today) : 오늘이 월의 몇일째인지 리턴한다.
function DaysInMonth(const AValue: TDateTime): Word;
function DaysInAMonth(const AYear, AMonth: Word): Word;

//오늘-
function Today: TDateTime;

//어제-
function Yesterday: TDateTime;

//내일-
function Tomorrow: TDateTime;

//AValue의 값이 오늘이면 True를 리턴한다.
function IsToday(const AValue: TDateTime): Boolean;

//AValue, ABasis 같은날이면 True를 리턴한다.
function IsSameDay(const AValue, ABasis: TDateTime): Boolean;


//년을 추출한다.
function YearOf(const AValue: TDateTime): Word;

//월을 추출한다.
function MonthOf(const AValue: TDateTime): Word;

//년의 몇주차인지를 추출한다.
function WeekOf(const AValue: TDateTime): Word;          

//일자만 추출한다.
//ex) DayOf(StrToDate('2006-06-27')) : 27을 리턴한다.
function DayOf(const AValue: TDateTime): Word;

//시간을 추출한다(24시간단위)
function HourOf(const AValue: TDateTime): Word;

//분을 추출한다.
function MinuteOf(const AValue: TDateTime): Word;

//초를 추출한다.
function SecondOf(const AValue: TDateTime): Word;

//밀리초를 추출한다.
function MilliSecondOf(const AValue: TDateTime): Word;

//년도의 시작일
function StartOfTheYear(const AValue: TDateTime): TDateTime;
function StartOfAYear(const AYear: Word): TDateTime;

//년도의 마지막일
function EndOfTheYear(const AValue: TDateTime): TDateTime;
function EndOfAYear(const AYear: Word): TDateTime;

//월의 시작일
function StartOfTheMonth(const AValue: TDateTime): TDateTime;
function StartOfAMonth(const AYear, AMonth: Word): TDateTime;

//월의 마지막일
function EndOfTheMonth(const AValue: TDateTime): TDateTime;
function EndOfAMonth(const AYear, AMonth: Word): TDateTime;

//주의 시작일
function StartOfTheWeek(const AValue: TDateTime): TDateTime;    

//주의 시작일(기준요일을 정할수 있다.)
//1:월요일, 2:화요일, 3:수요일, 4:목요일 ,5:금요일 , 6:토요일 ,7:일요일
function StartOfAWeek(const AYear, AWeekOfYear: Word; const ADayOfWeek: Word = 1): TDateTime;

//주의 마지막일
function EndOfTheWeek(const AValue: TDateTime): TDateTime;      

//주의 마지막일(기준요일을 정할수 있다.)
//1:월요일, 2:화요일, 3:수요일, 4:목요일 ,5:금요일 , 6:토요일 ,7:일요일
function EndOfAWeek(const AYear, AWeekOfYear: Word; const ADayOfWeek: Word = 7): TDateTime;



function StartOfTheDay(const AValue: TDateTime): TDateTime;
function StartOfADay(const AYear, AMonth, ADay: Word): TDateTime; overload;
function StartOfADay(const AYear, ADayOfYear: Word): TDateTime; overload;
function EndOfTheDay(const AValue: TDateTime): TDateTime;
function EndOfADay(const AYear, AMonth, ADay: Word): TDateTime; overload;
function EndOfADay(const AYear, ADayOfYear: Word): TDateTime; overload;


//ex) MonthOfTheYear(Today) : 오늘일자를 Word형으로 리턴한다.
function MonthOfTheYear(const AValue: TDateTime): Word;

//ex) WeekOfTheYear(Today) : 오늘일자가 몇주차인지를 Word형으로 리턴한다.
function WeekOfTheYear(const AValue: TDateTime): Word; overload;
function WeekOfTheYear(const AValue: TDateTime;  var AYear: Word): Word; overload;

//ex) DayOfTheYear(Today) : 오늘일자가 올해의 몇일째인지를 Word형으로 리턴한다.
function DayOfTheYear(const AValue: TDateTime): Word;

//년의 시작일부터  해당일자까지의 시간을  모두 더해서 Word형으로 리턴한다.
function HourOfTheYear(const AValue: TDateTime): Word;

//년의 시작일부터  해당일자까지의 분을 모두 더해서 Word형으로 리턴한다.
function MinuteOfTheYear(const AValue: TDateTime): LongWord;

//년의 시작일부터  해당일자까지의 초을  모두 더해서 Word형으로 리턴한다.
function SecondOfTheYear(const AValue: TDateTime): LongWord;

//년의 시작일부터  해당일자까지의 밀리초을  모두 더해서 Word형으로 리턴한다.
function MilliSecondOfTheYear(const AValue: TDateTime): Int64;

//이달의 몇번째주 인지를 리턴한다.
function WeekOfTheMonth(const AValue: TDateTime): Word; overload;
function WeekOfTheMonth(const AValue: TDateTime; var AYear, AMonth: Word): Word; overload;

//이달의 몇일째인지를 리턴한다.
function DayOfTheMonth(const AValue: TDateTime): Word;

//월의 시작일부터 해당일자까지의 시간의 합을 리턴한다.
function HourOfTheMonth(const AValue: TDateTime): Word;

//월의 시작일부터 해당일자까지의 분의 합을 리턴한다.
function MinuteOfTheMonth(const AValue: TDateTime): Word;

//월의 시작일부터 해당일자까지의 초의 합을 리턴한다.
function SecondOfTheMonth(const AValue: TDateTime): LongWord;

//월의 시작일부터 해당일자까지의 밀리초의 합을 리턴한다.
function MilliSecondOfTheMonth(const AValue: TDateTime): LongWord;

//해당일의 요일을 리턴한다.
//1:월요일, 2:화요일, 3:수요일, 4:목요일 ,5:금요일 , 6:토요일 ,7:일요일
function DayOfTheWeek(const AValue: TDateTime): Word;

//AValue날짜의 주의 시작일부터 AValue날짜까지의 시간의 합을 계산한다.
function HourOfTheWeek(const AValue: TDateTime): Word;              

//AValue날짜의 주의 시작일부터 AValue날짜까지의 분의 합을 계산한다.
function MinuteOfTheWeek(const AValue: TDateTime): Word;            

//AValue날짜의 주의 시작일부터 AValue날짜까지의 초의 합을 계산한다.
function SecondOfTheWeek(const AValue: TDateTime): LongWord;        

//AValue날짜의 주의 시작일부터 AValue날짜까지의 밀리초의 합을 계산한다.
function MilliSecondOfTheWeek(const AValue: TDateTime): LongWord;    

//ex) HourOfTheDay(Time) : 24시간 단위로 Time까지의 시간의 합을 계산한다.
function HourOfTheDay(const AValue: TDateTime): Word;

//ex) MinuteOfTheDay(Time) : 24시간 단위로 Time까지의 분의 합을 계산한다.
function MinuteOfTheDay(const AValue: TDateTime): Word;

//ex) SecondOfTheDay(Time) : 24시간 단위로 Time까지의 초의 합을 계산한다.
function SecondOfTheDay(const AValue: TDateTime): LongWord;

//ex) MilliSecondOfTheDay(Time) : 24시간 단위로 Time까지의 밀리초의 합을 계산한다.
function MilliSecondOfTheDay(const AValue: TDateTime): LongWord;

//ex) MinuteOfTheHour(13:28:43:345) : 시간을 기준으로 분의 합을계산한다.
function MinuteOfTheHour(const AValue: TDateTime): Word;

//ex) SecondOfTheHour(13:28:43:345) : 시간을 기준으로 초의 합을계산한다.
function SecondOfTheHour(const AValue: TDateTime): Word;

//ex) MilliSecondOfTheHour(13:28:43:345) : 시간을 기준으로 밀리초의 합을계산한다.
function MilliSecondOfTheHour(const AValue: TDateTime): LongWord;

//ex) SecondOfTheMinute(13:28:43:345) : 분을 기준으로 초의 합을 계산한다.
function SecondOfTheMinute(const AValue: TDateTime): Word;

//ex) SecondOfTheMinute(13:28:43:345) : 초을 기준으로 밀리초의 합을 계산한다.
function MilliSecondOfTheMinute(const AValue: TDateTime): LongWord;
function MilliSecondOfTheSecond(const AValue: TDateTime): Word;

{ Range checking functions }

function WithinPastYears(const ANow, AThen: TDateTime;
const AYears: Integer): Boolean;
function WithinPastMonths(const ANow, AThen: TDateTime;
const AMonths: Integer): Boolean;
function WithinPastWeeks(const ANow, AThen: TDateTime;
const AWeeks: Integer): Boolean;
function WithinPastDays(const ANow, AThen: TDateTime;
const ADays: Integer): Boolean;
function WithinPastHours(const ANow, AThen: TDateTime;
const AHours: Int64): Boolean;
function WithinPastMinutes(const ANow, AThen: TDateTime;
const AMinutes: Int64): Boolean;
function WithinPastSeconds(const ANow, AThen: TDateTime;
const ASeconds: Int64): Boolean;
function WithinPastMilliSeconds(const ANow, AThen: TDateTime;
const AMilliSeconds: Int64): Boolean;

{ Range query functions }

//두날짜(시간) 사이에 년수를 리턴한다.
function YearsBetween(const ANow, AThen: TDateTime): Integer;

//두날짜(시간) 사이의 월수를 리턴한다.
function MonthsBetween(const ANow, AThen: TDateTime): Integer;

//두날짜(시간) 사이의 주수를 리턴한다.
function WeeksBetween(const ANow, AThen: TDateTime): Integer;

//두날짜(시간) 사이의 일수를 리턴한다.
function DaysBetween(const ANow, AThen: TDateTime): Integer;

//두날짜(시간) 사이의 시간을 리턴한다.
function HoursBetween(const ANow, AThen: TDateTime): Int64;

//두날자(시간) 사이의 분을 리턴한다.
function MinutesBetween(const ANow, AThen: TDateTime): Int64;

//두날짜(시간) 사이의 초를 리턴한다.
function SecondsBetween(const ANow, AThen: TDateTime): Int64;

//두날짜(시간) 사이의 밀리초를 리턴한다.
function MilliSecondsBetween(const ANow, AThen: TDateTime): Int64;


//두날짜(시간) 사이를  Double형으로 리턴한다.
function YearSpan(const ANow, AThen: TDateTime): Double;
function MonthSpan(const ANow, AThen: TDateTime): Double;
function WeekSpan(const ANow, AThen: TDateTime): Double;
function DaySpan(const ANow, AThen: TDateTime): Double;
function HourSpan(const ANow, AThen: TDateTime): Double;
function MinuteSpan(const ANow, AThen: TDateTime): Double;
function SecondSpan(const ANow, AThen: TDateTime): Double;
function MilliSecondSpan(const ANow, AThen: TDateTime): Double;


//AValue일자에서 ANumberOfYears만큼의 년도를 증가한다.
function IncYear(const AValue: TDateTime; const ANumberOfYears: Integer = 1): TDateTime;

//AValue일자에서 ANumberOfWeeks만큼의 주를 증가한다.
function IncWeek(const AValue: TDateTime; const ANumberOfWeeks: Integer = 1): TDateTime;

//AValue일자에서 ANumberOfDays만큼의 일를 증가한다.
function IncDay(const AValue: TDateTime;  const ANumberOfDays: Integer = 1): TDateTime;

//AValue일자(시간)에서 ANumberOfHours만큼의 시간를 증가한다.
function IncHour(const AValue: TDateTime; const ANumberOfHours: Int64 = 1): TDateTime;

//AValue일자(시간)에서 ANumberOfMinutes만큼의 분를 증가한다.
function IncMinute(const AValue: TDateTime; const ANumberOfMinutes: Int64 = 1): TDateTime;

//AValue일자(시간)에서 ANumberOfSeconds만큼의 초를 증가한다.
function IncSecond(const AValue: TDateTime; const ANumberOfSeconds: Int64 = 1): TDateTime;

//AValue일자(시간)에서 ANumberOfMilliSeconds만큼의 밀리초를 증가한다.
function IncMilliSecond(const AValue: TDateTime; const ANumberOfMilliSeconds: Int64 = 1): TDateTime;

//년,월,일,시,분,초,밀리초  ---> 날짜(시간)형으로 리턴한다.
function EncodeDateTime(const AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: Word): TDateTime;

//날짜(시간)형 ---> 년,월,일,시,분,초,밀리초 Word형으로 리턴한다.
procedure DecodeDateTime(const AValue: TDateTime; out AYear, AMonth, ADay,  AHour, AMinute, ASecond, AMilliSecond: Word);

//ex) EncodeDateWeek(2006,25,2) : 2006년 25주차의 첫번째 화요일의  날자를 리턴한다.
function EncodeDateWeek(const AYear, AWeekOfYear: Word; const ADayOfWeek: Word = 1): TDateTime;

//ex) DecodeDateWeek(Today) : 오늘은 몇년 몇째주의 무슨요일인지를 리턴한다.
procedure DecodeDateWeek(const AValue: TDateTime; out AYear, AWeekOfYear, ADayOfWeek: Word);

//AYear년의 ADayOfYear번째일이 며칠인지 리턴한다.
function EncodeDateDay(const AYear, ADayOfYear: Word): TDateTime;

//AValue일자가 몇년의 몇일째인지를 구한다.
procedure DecodeDateDay(const AValue: TDateTime; out AYear, ADayOfYear: Word);

//년,월,월의몇주차,화요일 의 날짜를 리턴한다.
function EncodeDateMonthWeek(const AYear, AMonth, AWeekOfMonth, ADayOfWeek: Word): TDateTime;

//AValue의 년,월,월의몇주차, 요일 구한다.
procedure DecodeDateMonthWeek(const AValue: TDateTime; out AYear, AMonth, AWeekOfMonth, ADayOfWeek: Word);

//년,월,일,시,분,초,밀리초의 유효성을 체크하고 날짜를 구한다.
function TryEncodeDateTime(const AYear, AMonth, ADay, AHour, AMinute, ASecond,  AMilliSecond: Word; out AValue: TDateTime): Boolean;

//AYear년의 AWeekOfYear주에 ADayOfWeek요일에 유효성을 체크하고 날짜를 리턴한다.
function TryEncodeDateWeek(const AYear, AWeekOfYear: Word;  out AValue: TDateTime; const ADayOfWeek: Word = 1): Boolean;

//AYear년의 ADayOfYear번째날에 유효성을 체크하고  날짜를 구한다.
function TryEncodeDateDay(const AYear, ADayOfYear: Word;  out AValue: TDateTime): Boolean;

//AYear(년) AMonth(월) AWeekOfMonth(월의주차)  ADayOfWeek(요일) 유효성을 체크하고 날짜를 구한다.
function TryEncodeDateMonthWeek(const AYear, AMonth, AWeekOfMonth,  ADayOfWeek: Word; var AValue: TDateTime): Boolean;


function RecodeYear(const AValue: TDateTime; const AYear: Word): TDateTime;
function RecodeMonth(const AValue: TDateTime; const AMonth: Word): TDateTime;
function RecodeDay(const AValue: TDateTime; const ADay: Word): TDateTime;
function RecodeHour(const AValue: TDateTime; const AHour: Word): TDateTime;
function RecodeMinute(const AValue: TDateTime; const AMinute: Word): TDateTime;
function RecodeSecond(const AValue: TDateTime; const ASecond: Word): TDateTime;
function RecodeMilliSecond(const AValue: TDateTime; const AMilliSecond: Word): TDateTime;
function RecodeDate(const AValue: TDateTime; const AYear, AMonth,  ADay: Word): TDateTime;
function RecodeTime(const AValue: TDateTime; const AHour, AMinute, ASecond,  AMilliSecond: Word): TDateTime;
function RecodeDateTime(const AValue: TDateTime; const AYear, AMonth, ADay,  AHour, AMinute, ASecond, AMilliSecond: Word): TDateTime;
function TryRecodeDateTime(const AValue: TDateTime; const AYear, AMonth, ADay,  AHour, AMinute, ASecond, AMilliSecond: Word; out AResult: TDateTime): Boolean;

//A.날짜(시간) B.날짜(시간) 을 비교한다. A=B(0) ,  A>B(1) ,  Afunction CompareDateTime(const A, B: TDateTime): TValueRelationship;
function CompareDate(const A, B: TDateTime): TValueRelationship;
function CompareTime(const A, B: TDateTime): TValueRelationship;


//A.날짜(시간) B.날짜(시간) 을 비교한다
function SameDateTime(const A, B: TDateTime): Boolean;
function SameDate(const A, B: TDateTime): Boolean;
function SameTime(const A, B: TDateTime): Boolean;

//오늘이 이달의 몇번째주인지 리턴한다.
function NthDayOfWeek(const AValue: TDateTime): Word;

//AValue날이 몇년,몇월,월의몇번째주,무슨요일 인지를 구한다.
procedure DecodeDayOfWeekInMonth(const AValue: TDateTime; out AYear, AMonth, ANthDayOfWeek, ADayOfWeek: Word);

//AYear(년), AMonth(월), ANthDayOfWeek(월의몇번째주),  ADayOfWeek(요일) ----> 해당일자를 리턴한다.
function EncodeDayOfWeekInMonth(const AYear, AMonth, ANthDayOfWeek,  ADayOfWeek: Word): TDateTime;

//AYear(년), AMonth(월), ANthDayOfWeek(월의몇번째주),  ADayOfWeek(요일) 의 유효성을 체크하고 날짜를 구한다.
function TryEncodeDayOfWeekInMonth(const AYear, AMonth, ANthDayOfWeek,  ADayOfWeek: Word; out AValue: TDateTime): Boolean;


procedure InvalidDateTimeError(const AYear, AMonth, ADay, AHour, AMinute,  ASecond, AMilliSecond: Word; const ABaseDate: TDateTime = 0);
procedure InvalidDateWeekError(const AYear, AWeekOfYear, ADayOfWeek: Word);
procedure InvalidDateDayError(const AYear, ADayOfYear: Word);
procedure InvalidDateMonthWeekError(const AYear, AMonth, AWeekOfMonth,  ADayOfWeek: Word);
procedure InvalidDayOfWeekInMonthError(const AYear, AMonth, ANthDayOfWeek,  ADayOfWeek: Word);


//날짜를 Double형으로 리턴한다.
//0001년01월01일  --->  1721425
function DateTimeToJulianDate(const AValue: TDateTime): Double;

//Double형을 날짜로 리턴한다.
//1721425 ---> 0001년01월01일
function JulianDateToDateTime(const AValue: Double): TDateTime;

//AValue의 유효성을 체크하고 날짜를 리턴한다.
function TryJulianDateToDateTime(const AValue: Double;  out ADateTime: TDateTime): Boolean;

//날짜를 Double형으로 리턴한다.
//0001년01월01일  --->  ( -678575  )
function DateTimeToModifiedJulianDate(const AValue: TDateTime): Double;

//Double형을 날짜로 리턴한다.
//( -678575  ) ---> 0001년01월01일
function ModifiedJulianDateToDateTime(const AValue: Double): TDateTime;

//AValue의 유효성을 체크하고 날짜를 리턴한다.
function TryModifiedJulianDateToDateTime(const AValue: Double;  out ADateTime: TDateTime): Boolean;


function DateTimeToUnix(const AValue: TDateTime): Int64;
function UnixToDateTime(const AValue: Int64): TDateTime;
진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

Head First Design Patterns

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크

넥시오 155

얼마전 내 스스로에게 생일선물로  사준 넥시오.. 사실은 근 100만원에 가까운 일리아드라는 ebook reader를 갖고 싶었지만 도저히 그건 살 엄두가 안나서 현실과 타협한 거다.

 

하지만 이용에는 만족한다. PDF 읽기 잘되고, 만화나 스캔된 판타지 소설들 보기 좋고(5인치 800*600 해상도는 2.8 인치 320*240 의 PDA폰으로는 상상도 할 수 없는 세계가 보인다.)

 

아쉬운게 있다면 좀 느리다는 건데.. 뭐 그거야 여유를 가지고.. 크크..

 



 

 

 

 

 

 


진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크