ActiveX를 작성해야할 일이 생겨서, Windows 10에 Viusal 6.0을 설치하는데 너무도 많은 삽질에 블로그에 기록합니다..

 

Visual Studio 6.0 iso 파일 다운로드 혹은 CD를 통해 파일 로드 후, 로컬 PC 내 임의 폴더로 설치 파일을 모두 복사합니다.

설치 파일 중, SETUPWIZ.INI 내 VmPath 의 내용을 삭제합니다.

(VmPath를 기존값대로 설정하면, 예전 XP 시절의 javx를 읽어서 에러가 난다고 하네요)

그 후, setup.exe파일의 설정을 변경해줍니다

호환 모드를 Windows XP SP3으로 변경해주고, 관리자 권한으로 실행에 체크합니다

설정 및 실행하여 라이센스 키 입력 및 다음을 누르다 보면, 아래와 같은 화면을 만나실 수 있습니다.

Visual FoxPro, InterDev, SourceSafe는 필요가 없으니 체크 해제 하고, Data Access를 클릭한 후 오른쪽 화면의 Change Option...을 클릭합니다.

ADO, RDS and OLE ~~~를 체크해제 하고 OK를 클릭합니다. 

저 설정이 체크되어 있으면 Windows 10에서 설치 시 에러가 발생합니다.

다시 Enterprise Tools를 체크하고 Change Option..를 클릭 후, 하단의 Visual Studio Analyzer를 체크해제 합니다.

 

OK 및 Continue 하여 설치하고 도중에 나오는 팝업은 그냥 다음 혹은 OK만 눌러주세요

설치가 완료되면 다음과 같은 화면을 확인 할 수 있습니다

Windows 재부팅합니다

재부팅하고 나면, 다음과 같은 팝업이 출력되는데 Install MSDN 체크 해제 해주시고 넥스트 및 중간에 나오는 Register도 체크해제 해주세요

그 후에, SP6 설치를 해줘야 합니다.

다운로드 페이지는 링크와 같습니다.

 

SP 6 설치 후후 Visual studio 6.0 C++을 실행해서 ActiveX 프로젝트 생성하자마자 테스트 겸 컴파일을 했는데... 아래와 같은 에러가 출력되더군요 ㅠ

midl\oleaut32.dll : error MIDL2020 : error generating type library : SaveAllChanges Failed : .\Debug\1234.tlb

여기서 한참 고생했는데요....

visual studio 6.0 C++를 관리자 권한으로 실행한 뒤에 컴파일 하면 정상적으로 컴파일이 됩니다..(ㅂㄷㅂㄷ..)

 

삼항연산자 


(조건문)?(참):(거짓);


ex)


#include<stdio.h>

#include<string.h>


int main(int argc, char *argv[])

{

    int count =0;

    if(strcmp(argv[1],"1")==0)

        count =1;

    else

        count =0;


    (count==0)?printf("HI\n"):printf("count=1\n");

    return 0;

}



다만 평소처럼 쓰는 이항연산자와 삼항연산자의 성능차이는 미미하다고 함.

'Programming > C' 카테고리의 다른 글

열거형 enum  (0) 2012.07.09
sscanf , sprintf  (0) 2012.07.06
문자열 붙이기 Strcat()  (0) 2012.07.04
Strtok 문자열 자르기  (0) 2012.06.29
Extern 함수  (0) 2012.05.21

enum 열거형은 자주 사용되지는 않지만 알아두면 편리하다.


예를들어 알파벳을 이용할떄 


char buf[]="abcdef......z";

라고 선언을 하면 buf[0]=a~e까지는 쉽게알 수 있으나 q나 y같은건 몇번째 일까?

이럴때 


enum {a,b,c,d,e,f,.....,z}; 와 같이 사용하면,굳이 인덱스번호를 알지않아도, 바로 사용할수 있다.


ex)


int main(){


enum {a,b,c,d,e,f,....z};

char ch="a";


if(ch==a)  혹은 if(ch==0)이런식으로 사용해도 되는 것이다.


컴퓨터가 보기엔 별거 아니지만 소스코드를 짜는 사람입장으로서는 엄청나게 가독성이 상승하게 된다.


enum 사용 예제


#include <stdio.h>

enum week {sun, mon, tue, wed, thu, fri, sat};

int main(void)

{

    enum week day1;

    day1=fri;

    printf("day1 : %d\n", day1);

    printf("fri : %d\n", fri);

    day1=mon;

    printf("day1 : %d\n", day1);

    printf("mon : %d\n", mon);

    return 0;

}


'Programming > C' 카테고리의 다른 글

삼항연산자  (0) 2012.09.12
sscanf , sprintf  (0) 2012.07.06
문자열 붙이기 Strcat()  (0) 2012.07.04
Strtok 문자열 자르기  (0) 2012.06.29
Extern 함수  (0) 2012.05.21

sscanf와 sprintf는 입력혹은 출력 대상이 모니터가 아닌 메모리라는 것을 제외 하면 scanf와 print와 같은 기능을 한다.


#include<stdio.h>

int sprintf(char *restrict s,const char* restrict format,....);

함수 호출 성공시 저장된 문자열의 길이, 실패시 EOF반환.


#include<stdio.h>

int sscanf(char *s,const char* restrict format, ...);

함수 호출 성공시 읽어 들인 데이터의 갯수, 실패시 EOF 반환.


sscanf 예제)

#include<stdio.h>


int main()

{

        char buf[100];


        sscanf("HI~!Taesun1114's blog","%s",buf);


        printf("%s\n",buf);

        return 0;

}



sprintf 예제)
#include<stdio.h>

int main()
{
        char buf[100];

        sprintf(buf,"HI~!Taesun1114's blog");
        printf("%s\n",buf);
        return 0;
}



'Programming > C' 카테고리의 다른 글

삼항연산자  (0) 2012.09.12
열거형 enum  (0) 2012.07.09
문자열 붙이기 Strcat()  (0) 2012.07.04
Strtok 문자열 자르기  (0) 2012.06.29
Extern 함수  (0) 2012.05.21

프로그래밍을 하다가 보면 문자열을 붙이고자 할떄가 있다.

이때 사용하는 함수가 Strcat이다.


Strcat(result,buf);


=>buf에 있는 값을 result와 합쳐 result에 저장한다.


ex)

#include<stdio.h>

#include<string.h>


int main(int argc,char *argv[]){

        int size;

        char buf[]="HI~";

        char buf1[]="taesun1114 blog's";


        printf("buf : %s\nbuf1 :%s\n",buf,buf1);

        strcat(buf,buf1);

        printf("%s\n",buf);


        return 0;

}

다만, 주의할 것이 있는데 합쳐진 buf의 size는 달라지지 않는다.


#include<stdio.h>

#include<string.h>


int main(int argc,char *argv[]){

        int size;

        char buf[]="HI~";

        char buf1[]="taesun1114 blog's";


        printf("buf : %s\nbuf1 :%s\n",buf,buf1);

        printf("buf size : %d\n",sizeof(buf));

        strcat(buf,buf1);

        printf("%s\n",buf);

        printf("changed buf size:%d\n",sizeof(buf));


        return 0;

}




'Programming > C' 카테고리의 다른 글

열거형 enum  (0) 2012.07.09
sscanf , sprintf  (0) 2012.07.06
Strtok 문자열 자르기  (0) 2012.06.29
Extern 함수  (0) 2012.05.21
함수 포인터  (0) 2012.05.07

#include<string.h>


strtok(*string,"구분자");


strtok는 인자로 다음과 같이 어떤 '문자열' 과 '구분자' 를 받아서 그 구분자를 기준으로 토큰을 리턴하는 함수이다.


ex)

#include<stdio.h>

#include<string.h>


int main(int argc,char *argv[])

{

        char *pointer=NULL;


        pointer = strtok(argv[1],"~");

        printf("%s\n",pointer);

        pointer = strtok(NULL,"/");

        printf("%s\n",pointer);


        return 0;

}





단, strtok함수를 쓸때는 주의할 점이 있는데, 처음에 strtok함수를 사용하고 나면, strtok함수가 구분자를 만나면 구분자를 NULL바꿔버리고 그 자리의 주소를 기억하고 있는다. 따라서 다음번에 다시 strtok를 사용할 떄는 argv[1]이 아니고, NULL을 해야 처음에 잘라낸 부분 뒤부터 구분자를  찾는 것이다. 그렇지 않을 경우에는 계속 처음부터 검색을 하게 됨.


#include<stdio.h>

#include<string.h>


int main(int argc,char *argv[])

{

        char *pointer=NULL;


        pointer = strtok(argv[1],"~");

        printf("%s\n",pointer);

        printf("%s\n",argv[1]);

        pointer = strtok(NULL,"/");

        printf("%s\n",pointer);


        return 0;

}


strtok함수를 사용하고 난후에 다시 argv[1]을 출력하면 ~가 NULL로 바뀌어 hi까지만 출력이 된다.


'Programming > C' 카테고리의 다른 글

열거형 enum  (0) 2012.07.09
sscanf , sprintf  (0) 2012.07.06
문자열 붙이기 Strcat()  (0) 2012.07.04
Extern 함수  (0) 2012.05.21
함수 포인터  (0) 2012.05.07

 

이번엔 어떠한 문구도 나와있지 않고 사진만 나와있다. 역시 소스보기

 

 

사진에 linkedlist.php?nothing=12345로 링크가 되어있는게 보인다. 사진을 클릭하면.

 

아마도 URL의 nothing값을 계속 바꿔줘야 하는 것 같다.

 

손으로 하기 힘들 것이라고 빨간문구로 경고문이 나온다. 역시 python으로 소스를 짜보자.

 

 

 

link라는 변수에 nothing=까지만 저장을하고 b에 nothing에 넣을 숫자를 저장한다.

숫자의 형태를 보면, 5자리 숫자이다.따라서 뒤에서 5번째까지만 슬라이싱해서 URL에 붙여넣으면 된다.

일단 urlopen으로 값을 읽어들이고 뒤에서 5번째부터 끝까지 슬라이싱을 한다음에, link+b의 URL을 오픈한다. 그리고 나오는 값을 print 몇개가 있을지 몰라서 무한루프문을 돌려서 값을 보기로 함.

언뜻보기에도 50번넘게 실행을 한후에 peak.html이라는 답이 나온다.

while()무한루프를 돌리고 딴 짓을하다가 계속안끝나서 보니 nothing=.html해도 다음값이 있어서 못보고 넘어간듯싶다 ㅠㅠ 실행시키고 넘어가지 않게끔!

'Programming > Python' 카테고리의 다른 글

Python challenge 3  (1) 2012.05.23
Python challenge 2  (0) 2012.05.23
Python challenge 1  (0) 2012.05.15
Python challenge 0  (0) 2012.05.15
Python Method  (0) 2012.05.15

 

이번 문제는 ...하나의 작은 단어? 곁에 세개의 큰보디가드가 있다는 건데 먼소리지 역시 이럴땐 소스보기

 

소스를 보자마자 알것같다.. 아마도 소문자 양옆으로 꼭 세개의 대문자가 있는 소문자를 뺴라는 뜻인 듯 하다.

 

문제 풀이 코드

 

 

해당 url에 커넥션을 맺고, 데이터를 읽어들인 후에, 2번 문제에서처럼 주석표시를 기준으로 데이터를 저장한다. 그리고, 정규표현식에 맞춰, 소문자 대문자3개 소문자 대문자3개 소문자 인 형태를 찾고, el변수에 저장하고,출력.

 

 

답 : linkedlist

 

'Programming > Python' 카테고리의 다른 글

Python Challenge 4  (0) 2012.05.23
Python challenge 2  (0) 2012.05.23
Python challenge 1  (0) 2012.05.15
Python challenge 0  (0) 2012.05.15
Python Method  (0) 2012.05.15

 

 

문제를 보면 페이지 소스를 보라는 뜻인거 같다.

소스를 보니까...

 

대충 특수문자속에 알파벳이 섞여 있다는 뜻인것 같고, 그 알파벳을 찾아야 하는 문제인가보다.

 

 문제 풀이 코드.

 

urllib.urlopen함수를 이용, url에 있는 데이터를 읽어들인다.

일단 주석처리가 두번 되있으므로, rindex함수를 이용해서 뒤에서 부터 주석기호를 찾고, 그안에 해당하는 문자를 변수에 저장을 한다. 그리고 알파벳이 소문자일거라 가정을 하고, for문을 돌려서 L에 저장 한다음에 출력하는 소스.

 

 

 

결과값 : equality

'Programming > Python' 카테고리의 다른 글

Python Challenge 4  (0) 2012.05.23
Python challenge 3  (1) 2012.05.23
Python challenge 1  (0) 2012.05.15
Python challenge 0  (0) 2012.05.15
Python Method  (0) 2012.05.15

Extern 함수는 변수 이름에 extern을 붙여주면 external linkage를 갖게 되어 다른 모듈에서 링크 할 수 있게 해준다.

 

ex)

main.c

 

#include<stdio.h>

 

extern int func_sum(int k);

 

int main(int argc,char *argv[]){

 

int i;

int k;

int sum=0;

 

if(argc<2){

fprintf(stderr,"Usage : Main 3\n");

exit(1);

}

 

k=atoi(argv[1]);

sum = func_sum(k);

 

printf("sum = %d\n",sum);

 

return 0;

}

 

 

func_sum.c

 

#include<stdio.h>

 

int func_sum(int k){

int i;

int sum=0;

 

for(i=0;i<=k;i++)

sum+=i;

 

return sum;

}

 

 

컴파일시에 링크를 걸어줘야 함.

 

<stdio.h 헤더파일>

'Programming > C' 카테고리의 다른 글

열거형 enum  (0) 2012.07.09
sscanf , sprintf  (0) 2012.07.06
문자열 붙이기 Strcat()  (0) 2012.07.04
Strtok 문자열 자르기  (0) 2012.06.29
함수 포인터  (0) 2012.05.07

+ Recent posts