[ 파워빌더-json parser 구현하기 ]

 

1. pb에서 json parsing하는 object를 구현한 site가 있네요.

    훌륭

    url : http://www.pblsoft.com/sailjson.htm

 

2. demo 파일

   sailjson_old version.zip

   sailjson_pb11.5.zip

Posted by 농부지기
,

[ 파워빌더.기타 - pb와 jsp연동하기 ]

 

 

 

제가 몇년 전에 꽁수라면 꽁수로 개발한 내용이라 참고만 하세요 ㅎㅎㅎ

 

먼저 환경을 말씀드리면 파워빌더 10.5 버젼으로 jsp 웹서버쪽과 연동하면서 개발을 진행해야 했었습니다.

 

또한, 웹서버의 보안을 위하여 모든 통신은 post 방식을 반드시 이용해야 하는 환경이었구요...

 

당시 PostURL, GetURL 등 여러 테스트를 거쳐 봤지만 통신시에 post 방식이 아닌 get방식으로 웹서버가

 

인식해서 많이 고민했던거 같아여...

 

나중엔 과감히 html 에 파라미터 부분을 파워빌더의 파일처리로 작성하고 결과를 받아오는 방식으로 해결했습니다.

 

소스를 보시죠...

 

OLEObject IE         // 웹서버와 통신할 ole 입니다.
integer li_filenum    // 구성할 파일 id가 되겠죠
string  ls_posthtml  // html 자체가 들어있는 변수입니다.

string  body           // body 부분의 결과 값을 가져오는 변수입니다.

// 참고

// arg_data1 는 해당 url 과 submit_id= 부분입니다.

// ex> http://123123.kr/123/.123?submit_id=123123&business_id=pam

// arg_data2 는 넘겨야 하는 파라미터 부분입니다.

// ex> '<input type="hidden" name="a" value = "' + ls_userid + '">  ~r~n' + & .......

 

li_filenum   = FileOpen("c:\post.html",LineMode!, Write!, LockWrite!,  Replace! )

 

// html 문을 구성합니다.

ls_posthtml  = "<html>    ~r~n"                                                     + &
                    "<head>   ~r~n"                                                     + &
                    '<meta http-equiv="Content-Type: application/x-www-form-urlencoded" content="text/html; charset=utf-8" />  ~r~n' + &
                    "</head>  ~r~n"                                                     + &
                    "<body>    ~r~n"                                                     + &
                    "<form method=post id='post_data' action= '"+arg_data1+"'> ~r~n"     + &
                    arg_data2                                                                + &
                    "</form>   ~r~n"                                                     + &
                    "</body>   ~r~n"                                                    + &
                    '<script type="text/javascript"> ~r~n'                         + &
                    'post_data.submit(); ~r~n'                                        + &
                    '</script> ~r~n'                                                      + &
                    '</html> ~r~n'  

 

FileWrite(li_filenum, ls_posthtml)

FileClose(li_filenum)

 

IE = CREATE OLEObject
IE.ConnectToNewObject("InternetExplorer.Application")
IE.navigate("C:\post.html")

 

// 응답시까지 대기 합니다. (읍답이 없을경우 한계시간 처리 내용을 추가해주세요 ㅋㅋㅋ)

DO WHILE IE.busy
 setpointer(hourglass!)
 yield()
LOOP 
  
body   = IE.Document.Body.InnerTEXT
IE.quit()
destroy IE

 

자 이렇게 하면 body 에 해당 인터페이스에서 주는 내용을 받을수가 있었습니다.

 

허접해서... ㅋㅋ 참고만 하시기를...

☞  

 

This example calls the PostURL function using server port 8080. Iinet is an instance variable of type inet:

Blob lblb_args
String ls_headers
String ls_url
Long ll_length

iir_msgbox = CREATE n_ir_msgbox
ls_url = "http://coltrane.sybase.com/"
ls_url += "cgi-bin/pbcgi60.exe/"
ls_url += "myapp/n_cst_html/f_test?"
lblb_args = blob("")
ll_length = Len(lblb_args)
ls_headers = "Content-Length: " + String(ll_length) + "~n~n"
iinet.PostURL(ls_url, lblb_args, ls_headers, 8080, iir_msgbox)


inet posturl를 참조 하세요.help에 있는 내용 입니다.

 

☞  제가 써 봤는데...
결론만 말씀드리면... 서버 셋팅에 따라서 파워빌더의 PostURL 에 get 방식으로 인식되어
질수 있다는거 여여..
우리가 일반적으로 get 방식과 post 방식으로 나누어 사용하는데
파워빌더에서 이용하는 PostURL 함수는 jsp 서버에서 인식할때 get으로 인식하더라구여
실제로 서버쪽 접근 로그까지 확인해 봤었습니다.

ex> PostURL 함수의 결과 스크립 -> http://url/bbslist.html?id=5&pagenum=2&방식=Post

위에 아주 쉬운 예제지만 form method 의 Post가 핵심으로 Post 방식으로 통신을
할수 있게 되어 지는 내용입니다.

 

* get 과 post 의 차이점 *
- GET은 주소줄에 값이 ?뒤에 쌍으로 이어붙고 POST는 숨겨져서(body안에) 보내진다.
- GET은 URL에 이어붙기 때문에 길이제한이 있어서 많은양의 데이터는 보내기 어렵고 POST는
많은 양의 보내기에도 적합하다.(역시 용량제한은 있지만)

http://url/bbslist.html?id=5&pagenum=2 같이 하는 것이 GET방식이고 form을 이용해서
submit을 하는 형태가 POST입니다.

 

Posted by 농부지기
,

[ 파워빌더.기타 - 메시지박스의 내용을 클립보드로 복사 ]

 

단축키를 좋아해서 단축키로 저장하려고 어찌하다 보니 알게 되었네요....

다들 알고 계시듯...

Print Screen 키는 화면을 클립보드로 복사하는거죠 (그림캡처)

Alt + Print Screen 은 현재 활성화되어있는 화면을 캡처뜨는 거라는것도 대부분 알고 계실거구요..

 

근데 메시지박스가 떠있는 상태에서 Ctrl + Shift + Insert 키를 동시에 누르면

메시지박스의 내용이 클립보드로(텍스트)로 저장이 되네요?

아래는 메모장에서 미저장상태에서 X 를 눌러 닫으려고 하면 뜨는 메시지박스 창이 뜬 상태에서

Ctrl + Shift + Insert 키를 누른 겁니다.

아래와 같이 클립보드에 저장이 되네요....

---------------------------
메모장
---------------------------
제목 없음 파일의 내용이 변경되었습니다.

변경된 내용을 저장하시겠습니까?
---------------------------
예(Y)   아니오(N)   취소  
---------------------------

저만 몰라서 그런건지도 모르겠지만, 혹 모르시는 분들도 게시리라 생각해서 올려봅니다.

이게 쓸모 있는 팁일까 싶기도 하지만.....

뭐 알아서 나쁠건 없겠죠? ^^

☞  

Posted by 농부지기
,

[ 파워빌더.Picturecontrol - 클리어(초기화)  ]

 

  혹시나 싶어 적어봅니다..

PBDN 에서 찾은건데.. ㅠ.ㅠ

blob 형식의 파일을 Picturecontrol 에 setpicture로 뿌린뒤..

초기화 방법 찾으시는 분있으실까봐..

Setnull(blob 변수)

p_1.setpicture(blob 변수)

이렇게 해봤지만.. 안되더군요...

그런데..

p_1.PictureName = Space(1)

Posted by 농부지기
,