[Study]/[ETC]2012. 9. 7. 07:13

#include <stdio.h>
#include <io.h>
#include <time.h>
#include <conio.h>

void main( void )
{
    struct _finddata_t c_file; 
 /* 위에서 struct _finddata_t 는 MS사에서 제공하는 구조체 
    자료형으로서 파일 정보 관리를 위한 자료형 입니다.

    _finddata_t라는 자료형은 io.h에 아래와 같이 6개의 필드를
    갖는 구조체 자료형으로 정의되어져 있습니다.

    struct _finddata_t {
                            unsigned    attrib; // 파일 속성 기억용 필드
                            time_t      time_create;  

                                   // 파일을 만든 시간(지원하지 않음: 항상 -1값 가짐)
                            time_t      time_access;   

                                    // 파일을 마지막으로 처리한 시간(지원하지 않음: 항상 -1값 가짐)
                              time_t      time_write;    // 마지막으로 파일을  기록한 시간
                            _fsize_t    size;          // 파일 사이즈 (바이트 수)
                             char        name[260];    

                                          // 매치된 파일과 디렉토리 이름( 단, 패스네임은 없음)
       };
    
    파일 속성 기억용 필드에 담겨지는 값

   1)  _A_ARCH (아카이브) 값:0x20
    2) _A_HIDDEN(히든파일) 히든 파일은 일반적인 dir명령으로는 보이지 않는다. 값:0x02)
                        단, dir /ah 옵션을 사용하면 보인다.
   3) _A_NORMAL(일반정보파일) : 어떤 제한이 없는 읽기, 쓰기용 파일. 값:0x00)

    4)  _A_RDONLY(읽기용 파일) 값: 0x01

    5)  _A_SUBDIR(써브 디렉토리인지 아닌지 파악) 값: 0x10

    6)  _A_SYSTEM(시스템 파일) 일반적인 dir명령으로 볼수 없는 파일.값:0x04
     단, dir  /a 나 dir/a:s옵션으로 보는 것은 가능

  */


    long hFile;  

 /*  위에서 hFile 변수는 
     findfirst함수를 호출하였을 때 리턴 되어지는 값을 담아둘 목적으로 만든 변수입니다.
  findfirst를 하였을 때 매치되는 파일이 없으면 -1값이 돌아 오게 됩니다.

 
 findfirst함수는 원하는 파일이 디스크에 존재하는지 파악하기 위한 함수로서 
 형식은 아래와 같습니다.
 long  _findfirst( char *filespec, struct _finddata_t *fileinfo );
    소속: io.h
    첫번째 매개변수에 전달된 파일이름과 동일한 파일이 발견되었을 때 발견된 첫번째
    파일에 대한 정보를 두번째 구조체 매개변수에 보관하게 됩니다.
 발견되는 파일이 없으면 -1값이  리턴된다.
    첫번째 매개변수에는 와일드카드문자(*,?)를 사용할 수 있습니다.
 


     int _findnext( long handle, struct _finddata_t *fileinfo );

     소속: io.h
     findfirst에 의해 발견된 파일의 다음 위치에 있는 파일을 찾아내게 
  됩니다. 파일이 없으면 -1값을 리턴합니다.

 

 */


    /* Find first .c file in current directory */
    
    if( ( hFile = _findfirst( "*.*", & c_file ) ) == -1L )
        printf( "No files in current directory!\n" );
    else
    {
        printf( "Listing of files\n\n" );
        printf( "\nRDO HID SYS ARC dir FILE DATE %25c SIZE\n", ' ' );
        printf( "--- --- --- --- --- ---- ---- %25c ----\n", ' ' );
        /* Find the rest of the .c files */
        do 
        {
            printf( ( c_file.attrib & _A_RDONLY ) ? " Y " : " N " );
            printf( ( c_file.attrib & _A_SYSTEM ) ? " Y " : " N " );
            printf( ( c_file.attrib & _A_HIDDEN ) ? " Y " : " N " );
            printf( ( c_file.attrib & _A_ARCH ) ? " Y " : " N " );
            printf( ( c_file.attrib & _A_SUBDIR ) ? " Y " : " N " );
            printf( " %-12s %.24s %9ld\n",
                c_file.name, ctime( &( c_file.time_write ) ), c_file.size );
        }while( _findnext( hFile, &c_file ) == 0 );
        _findclose( hFile );
    }

    getch();

}



출처:http://blog.naver.com/PostView.nhn?blogId=cap21c&logNo=150035398059&redirect=Dlog&widgetTypeCall=true

Posted by xiasonic
[Study]/[ETC]2011. 1. 26. 17:55

급 심심해서 사이트를 만들어볼려고 이리저리 삽질하다가

우리나라의 지역선택 하는 select 부분에서 막혀 버렸다.

그래서 삽질 시작 - _-.....





일단 우리나라의 각 시도, 구군, 읍면동 정보를 얻어야만 했는데 이는 우체국 홈피에서 우리나라의 모든 지역 정보 및 우편번호가 수록된 파일을 구할 수 있었다.

구글에 검색해보면 SQL이나 엑셀파일로 정리해서 올려주시는분? 이 있는데 다운받아서 일단 DB에 쑤셔 넣었다.

일단 모든 정보를 얻었지만 내가 원하는 시도, 구군, 읍면동 의 정보가 같은 읍면동 일지라도 우편번호가 다르기때문에 겹쳐지는 내용이 상당히 많았다.(우편번호로 나누어진 우리나라의 지역은 대략 6만개 정도..;;)

그래서 원하는 정보만 얻기 위해서 SQL의 SELECT문을 이용 할 수 있지만 SQL쿼리문은 아는거라곤
Select * from table정도가 전부라서 할수없이

기존 우편번호가 담긴곳의 DB에서 내용을 가져와서 insert 쿼리형식으로 바꾸는 페이지를 만들어서 그곳에서 출력된 내용을 DB에 인서트 시키는 조금 허접한 짓을 했다.


허접한방법.ASP





위의 페이지를 띄워보면 당연하게도

insert into select_code(code1, code2, code3, majorclass, middleclass, subclass) values (1, 1, 1, '서울', '강남구', '개포1동')
insert into select_code(code1, code2, code3, majorclass, middleclass, subclass) values (1, 1, 2, '서울', '강남구', '개포2동')
...
...
으로 대략 300여개? 정도의 결과로 나온다..




지역코드가 서울 강남구 라면 (1,1,?)로 ?값이 읍면동 정보인데 (1,1,0) 지역코드라면 서울시 강남구 모든 동 

정보나 혹여나 select에서 아무것도 선택하지 않았을때의 값이 0 으로 설정하기 위해서 지역코드에는 0 값이

들어있지 않도록 만들었다.




이것을 db에 고대로 넣으면 원하는 시도, 구군, 읍면동 정보가 들어있는 db를 만들수 있다.

그후 가장 중요한 다중셀렉트?? 결과가 연동되게 표시되는 셀렉트?? 를 만들 차례다.

이는 정말 감사하게도 인터넷검색을 하니 친철하게 어떤분이 만들어 놓으신걸 조금 수정했다.



원래 select가 2개로 연동되는것 이였는데 내가 사용할 것은 3개 이므로 3개로 늘리는 작업 및

기존코드:  var bc2 = eval('document.RegRequest.biz_code2');

는 비표준 이라고 그러던데 역시나 오류가 발생하여

수정코드: var bc1 = document.getElementById("biz_code1");

로 간단하게 바꿔주고

결과값을 테스트용도로 볼 수 있도록 간단한 폼을 붙여놨다.



우리가 db에 넣었던

(code1, code2 code3, majorclass, middleclass, subclass) 는

(select1번의 value, select3번의 value, select3번의 value, 시도, 구군, 읍면동) 의 정보 이다.

다른 다중셀렉트를 만들때 값만 변경시키면 된다.



TEST.ASP 내용


 



자 위의 페이지를 실행해보면 3개의 셀렉트에 멋떨어지게? 지역정보들이 들어가 있는 것을 확인 할 수 있다.

사실 요즘사용하는 사이트들에는 거의 하나씩 회원가입할때 지역을 선택하는 부분이 있다. 물론 우편번호 검색

으로 지역정보를 얻어 낼 수 있지만. 특정지역 검색 기능이 필요한 사이트에서는 꼭 하나씩 들어가 있어서 한번

만들어볼려다가 정말 하루종일 걸렸다 - _-;;;

우체국의 우편번호 정리된 파일이 없었다면 난 아직까지도 네이버 지도에서 읍면동 찾아서 text나 엑셀로 작업

하고 있을지 모른다;;;



조금 수정하고 싶은것은 위에 소스는 특정 select를 위한 소스코드인데 만약 init부분이나 setcode같은 부분에

ID값을 넘겨줘서 다방면으로 사용 할 수 있도록 수정을 한다면 조금더 완벽할 것이라고 생각이 든다.

이만 뻘짓 끝.

'[Study] > [ETC]' 카테고리의 다른 글

<io.h> _finddata_t 구조체  (1) 2012.09.07
[editplus] html자동정렬  (0) 2010.11.25
[java/eclipse] 이클립스 단축키  (0) 2010.11.24
[java/Eclipse] 줄번호 보기  (0) 2010.11.24
[javascript] Get으로 넘어오는 값 받기  (2) 2010.11.24
Posted by xiasonic
[Study]/[ETC]2010. 11. 25. 20:02
Posted by xiasonic
[Study]/[ETC]2010. 11. 24. 23:52

ctrl + i : 자동정렬

ctrl + shift + o : 자동 import
Posted by xiasonic
[Study]/[ETC]2010. 11. 24. 23:50
Window->Preferences

아래 그림에서 Show line numbers를 체크하면된다.

Posted by xiasonic
[Study]/[ETC]2010. 11. 24. 10:56


<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
<!--
//JS Test

var Request=function(){
 this.getParameter=function(name){
  var trnval = '';
  var nowAddress=unescape(location.href);
  var parameters=(nowAddress.slice(nowAddress.indexOf('?')+1, nowAddress.length)).split('&');
  for(var i = 0; i<parameters.length; i++){
   var varName=parameters[i].split('=')[0];
   if(varName.toUpperCase() == name.toUpperCase()){
    rtnval=parameters[i].split('=')[1];
    break;
   }
  }
  document.write(rtnval);
 }
}

var request = new Request();

//요렇게 쓰면 aaa값이 넘어온다.
request.getParameter('aaa');
 
//-->
</SCRIPT>

url: 위 스크립트 페이지?aaa=100
해보면 된다.

Posted by xiasonic