천객만래 [千客萬來] (It has an interminable succession of visitors)

[php] md5 - md5알고리즘의 암호화 함수


md5 - md5알고리즘의 암호화 함수 

저장될 변수 = md5 (문자열);

<?
$a = "abcde";
echo md5 ($a);
?>

crypt 함수의 결과가 13자리 인데 비해 md5는 결과는 32자리가 된다.
crypt 함수는 8개의 문자열만을 취하고 나머지는 잘라 버린 후에 암호화 하지만 md5는 그 이상의 문자열을 취하여 암호화 한다.


++++++++++++++++++++ 
   
김종연 

md5는 일정한 규칙을 이용한 암호화를 해주기 때문에 session이나 cookie에 가장 많이 쓰는 방식입니당. crypt는 기냥기냥 전 안씁니다.. 요늠을 써보니..
불편한게 많아서요... ^^; ㅈㅅ  





Posted by SB패밀리

[php] 문자열 &lt;---&gt; 배열 문자열




implode - 배열을 문자열로 합침

string implode(array pieces, string glue);
// 배열 pieces의 각 요소를 문자열 glue로 연결한 전체 문자열을 반환.



<?
$arr = array("one", "two", "three", "four", "five");

$res = implode("/", $arr);
echo("$res");
?> 
*****결과물***** 
one/two/three/four/five


+++++++++++++++++++++++++++++++++++++++++++++++++++++

(explode 함수)

array explode(string separator, string string);
// separator로 string 문자열 분리하여 배열로 반환한다.


<?
$string = "one two three four five";
$arr = explode(" ", $string);
while(list($key,$val) = each($arr)) {
echo("$arr[$key] : $val<br>");
}
?>
***결과물**** 
$arr[0] : one
$arr[1] : two
$arr[2] : three
$arr[3] : four
$arr[4] : five



Posted by SB패밀리

[php] crypt - 문자열을 암호화


crypt(암호화할 변수, 키 값);

<?
$a = "abcde";
echo crypt ($a, "1a");
?>






Posted by SB패밀리

[php] strip_tags() , htmlspecialchars() 함수 설명



strip_tags : 모든 HTML, PHP 태그를 없애주는 역할을 합니다.
사용법 => strip_tags(변수 혹은 문자열); 

+++++++++++++++++++++++++++++++++++

htmlspecialchars

기능 : 특수문자들을 HTML 코드로 바꿔준다.
게시판이나 방명록등에서 사용자가 입력한 아래 문자들을 변환시킨다.
이 함수는 사용자가 게시판이나 방명록에서 HTML코드를 포함하는 문자열을 입력 전송했을 때 
이것이 Hyper Link로 연결되지 않고 입력한 문자열이 그대로 출력 되도록 하는 역할을 한다. 
특수문자를 문자열로 인식할 수 있도록 바꾸어 준다.

& 를 & 로 
" 를 " 로 
< 를 < 로 
> 를 > 로 바꾸어 리턴.

구문 : string htmlspecialchars(string string);

소스 :
<? 
$text = "Use & " < > document."; 
$change = htmlspecialchars($text); 
?> 
<html> 
<body> 
함수를 사용하지 않으면? : <? echo ("$text"); ?><br> 
함수를 사용하면? : <? echo ("$change"); ?><br> 
</body> 
</html> 

결과 : 
함수를 사용하지 않으면? : Use & " < > document. 
함수를 사용하면? : Use & " < > document. 

소스보기 : 
<HTML> 
<body> 
함수를 사용하지 않으면? : Use & " < > document.<br> 
함수를 사용하면? : Use & " < > document.<br> 
</body> 
</html> 





Posted by SB패밀리

[javascript] 랜덤하게 명언 출력하기




랜덤하게 명언 출력하기



:: Math객체 :: 수학관련 객체입니다.
- floor() : 소수부분을 버림합니다.
- random() : 난수를 발생합니다.
  |예제| Math.floor(Math.random()*10);
  0에서 9까지의 난수가 발생됩니다.
  |예제| Math.floor(Math.random()*10) +2;
  2에서 11까지의 난수가 발생됩니다.





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



<html>
<body>



<fieldset>
<legend><b>[ 오늘의 명언 ]</b></legend>
<br>  



<script language="JavaScript">
<!--



var day_msg = new Array(5);

day_msg[0] = "너 자신을 알라. <b>  - 소크라테스 -</b>";
day_msg[1] = "인생의 위대한 목표는 지식이 아니라 행동이다. <b>  - 헉슬리 -</b>";
day_msg[2] = "삶은 호흡하는 것이 아니라 행위를 하는 것이다. <b>  - 루소 -</b>";
day_msg[3] = "우리의 인생은 우리가 노력한 만큼 가치가 있다. <b>  - 모리악 -</b>";
day_msg[4] = "사랑하며 가난한 것이 애정없는 부유함보다 훨씬 낫다. <b>  - ㅣ. 모리스 -</b>";



var random_num = Math.floor(Math.random()*5);
/* 위에서 랜덤하게 생성된 수(0~4)를 이용하여 배열번호를 설정합니다. 그 배열번호를 이용하여 아래와 같이 출력합니다. */
document.write(day_msg[random_num]);



-->
</script>



<br><br>
</fieldset>
</body>
</html>


Posted by SB패밀리

[javascript] 팝업창 생성하기



팝업창 생성하기

- open() : window객체에 포함된 메서드로 새로운 창을 열기위해 사용됩니다.
|형식| open(해당URL, 이름, 속성)
|예제| open("http://www.naver.com","pop1","width=300 height=200")
directories : 연결바의 유무를 설정합니다.
location : 주소창의 유무를 설정합니다.
menubar : 메뉴바의 유무를 설정합니다.
scrollbars : 스크롤바의 유무를 설정합니다.
status : 상태바의 유무를 설정합니다.
toolbar : 툴바의 유무를 설정합니다.
resizable : 브라우저 크기조절의 가능유무를 설정합니다.
top : 창의 x좌표를 설정합니다.
left : 창의 y좌표를 설정합니다.
width : 창의 너비를 설정합니다.
height : 창의 높이를 설정합니다.
fullscreen : 창을 브라우저 전체에 나타나게 할 것인지를 설정합니다.
channelmode : 창을 채널모드로 보여줍니다.

- close() : window객체에 포함된 메서드로 창을 닫을 때 사용됩니다.





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



<html>
<body>
<script language="javascript">
<!--



function open_win(url) {
window.open(url,"open_blog","top=50 left=50 width=200 height=200")
}



function auto_win() {
window.open("pop.htm","new_win","top=70 left=70 width=200 height=100")
}



-->
</script>



<body onload="javascript:auto_win()">
<a href="javascript:open_win('http://section.blog.naver.com')">
다음을 클릭하면 팝업창이 나타납니다.
</a>
</body>
</html>


Posted by SB패밀리

[javascript] iframe 활용하기






iframe 활용하기

* document.URL : 링크주소를 설정합니다.


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



page_win.htm  메인프레임을 말합니다.

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



<html>
<script language="JavaScript">
<!--



function site_move() {
var myindex = frm1.mysel.selectedIndex;
var myvalue = frm1.mysel.options[myindex].value;
/* 링크주소를 설정함으로써 iframe태그의 src속성값을 설정합니다. */
cwindow.document.URL = myvalue;
}



function link_site_move(site_name) {
cwindow.document.URL = site_name;
}



-->
</script>



<body>



<form name="frm1">
# 리스트 : 
<select name="mysel" onchange="site_move()">
<option value="con1.htm">제 1편 흙으로부터</option>
<option value="con2.htm">제 2편 신비의 자기</option>
</select>
<br><br>
<a href="javascript:link_site_move('con1.htm');">[1편]</a>
<a href="javascript:link_site_move('con2.htm');">[2편]</a>
<br><br>
<iframe name="cwindow" src="con1.htm" width=300 height=200 frameborder=1 scrolling="no">
</iframe>


</form>



</body>
</html>



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



con1.htm  프레임내에 출력할 첫번째 문서입니다.

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



<html>
<body>

<pre><b>제1편 흙으로부터
Origins : the birth of china</b>

지금으로부터 만 년 전, 

고대 사람들은 최초로 흙에 불을 가해 저장용기를 만들었다. 

그것이 인류 최초의 그릇, 토기였고, 이것은 지역 간의 교류가 발생하지 않았던 시대 

놀랍게도 유라시아와 아메리카 대륙 전역에서 나타난다. 

그러나 이로부터 자기가 탄생한 곳은 중국이 유일했다. 

모두가 동일하게 출발했지만, 중국만이 도달할 수 있었던 자기의 탄생. 

그 엇갈린 역사적 운명의 배경을 밝힌다.
</pre>

</body>
</html>



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



con2.htm  보여줄 두번째 문서입니다.

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



<html>
<body>
<pre>
<b>제2편 신비의 자기
Destiny : porcelain, the mystery</b>

중국에서 자기문화를 꽃피운 것은 宋나라였다. 

문화적 소양이 탁월했던 황제와 사대부의 지원 아래 

청자는 우과청천, 즉 비 갠 하늘빛의 경지에 이른다. 

중국이 독점했던 자기기술이 최초로 전파된 곳은 한반도. 

12C 중국에서도 고려청자의 비색은 최상품으로 평가받는다. 

기술적, 미적으로 완성된 청자. 

그것은 동남아시아, 서아시아, 아프리카 대륙까지 

신비의 그릇으로 받아들여지면서 다양한 에피소드를 역사에 남겼다. 

비단이 육지의 실크로드를 열었듯 바다의 차이나 루트를 열었던 

중국자기. 그 교역 루트를 되짚어 본다. 
</body>
</html>


Posted by SB패밀리

[php/html] 제로보드 회원가입시 가입축하메일 발송하기


2004.11.25


간단하게 가입했을때 축하메일 보내기를 만들어봤습니다.

member_join_ok.php 파일의 가장 마지막 부분에 이렇게 삽입합니다.

<?

     $mrjh = "From: MRJH <mail@mrjh.net>\r\n"; //본인에게 맞게 수정
     // $name은 member_join.php의 가입폼에서 회원이 이름을 입력하면
     // 자동으로 변경되어서 메일이 발송됨
     $subject="$name"." 님의 회원가입을 축하드립니다 !! [자동발송메일]"; 
     $body="축하내용"; // 내용을 적어주세용..
     mail($email , $subject , $body, $mrjh); // 메일보내기 함수


?>
<script>
        alert("회원가입이 정상적으로 처리 되었습니다\n\n회원이 되신것을 진심으로 축하드립니다.");
        opener.window.history.go(0);
        window.close();
</script>


Posted by SB패밀리

[php/html] 게시물 메일보내기 - 간단한 소스(레이어사용)


2004.11.25


제로보드에서도 사용할 수 있는 게시물 메일 보내기 입니다.
레이어를 이용해서 간단히 보낼 수 있습니다..

View.php 에서 메일보내기

커뮤너티나 큰 웹사이트 다니다 보면.. "현재 보고있는 글을 이메일로 보내기"란
기능이 많이 있더라구요.. 저도 꼭 이걸 구현해보고 싶어서 만들어봤습니다.

현재 제 홈페이지에서 사용중이구요.
제 홈페이지 아무게시판이나 클릭해서 글 내용보면 밑부분에 이메일로 보내기 기능이있습니다.

뭐 그리 어렵지는 않습니다.
우선 view.php파일에 약간만 수정해주면 됩니다.
원리는 레이어와 메일보내기 함수를 이용한것입니다.

우선 view.php파일의 가장 윗부분에 레이어에 해당하는 자바스크립트를 넣어줘야 합니다.

================================================================================
<script language="JavaScript">
<!--
function na_hide_layer(lname)
{
  if (document.layers)
    document.layers[lname].visibility = 'hide'
  if(document.all)
    document.all(lname).style.visibility = 'hidden'
}

function na_show_layer(lname)
{
if (lname == '') return;

var layer  = document.all ? document.all(lname).style : document.layers[lname];
var show  = document.all ? 'visible' : 'show';
var hide  = document.all ? 'hidden' : 'hide';

if (na_show_layer.arguments.length <= 1)
  layer.visibility = show;
else
  layer.visibility = (na_show_layer.arguments[1] == 0 ? show : hide);
}

// -->
</script>
==================================================================================

그리고 글쓴사람.. 날짜.. 내용등등.. 이렇게 쭉 따라내려오겠죠.
그리고 마지막 부분에.. "현재글 이메일로 보내기" 라는 메뉴를 하나 만듭니다.

<a href="#" OnClick="na_show_layer('layer2');">현재글을 이메일로 보내기</a>

그리고 밑에 레이어에 해당하는 부분을 작성해주면 됩니다.
레이어 속에는 메일함수가 들어가야 하겠죠.


<div id="layer2" style="width:250px; height:10px; position:absolute; left:400px; top:460px; z-index:1; visibility:hidden;">
<!-- 메일 보내기 폼 부분 -->
<table border="0" cellpadding=0 cellspacing=0 width="100%">
<tr>
<td align=left bgcolor=#3366cc>
<font color=white>이메일로 보내기</font>
</td>
<td align=right bgcolor=#3366cc>
<a href="#none" OnClick="na_hide_layer('layer2');">
<img src=<?=$dir?>/btn_search_cancel.gif border=0 alt='취소 버튼'></a>
</td>
</tr>
<tr>
<td bgcolor=white height=10></td>
<td bgcolor=white height=10></td>
</tr>
<tr>
<td bgcolor=white align=center>
<form method='post'>
<input type="hidden" name="mode" value="up">
<font size=2 face=tahoma color=black><b>e-mail : </b></font><input type="text" name="tomail" maxlength="30">
<input type="submit" value="보내기"  class=input>
</form>
</td>
<td bgcolor=white>
</td>
</tr>
</table>
</div>
<!-- 폼 끝 -->
<?
     if ($mode = up) {
         $mh = "From: MRJH <mail@mrjh.net>\r\n";
             $mh .= "Content-Type: text/html; charset=euc-kr\r\n";
             $title="Mr. JH에서 전송한 내용입니다.";
             $body="<table border=0 width=70%>
                          <tr>
                           <td width=100% align=left>
                           <font size=2 face=tahoma><b> $subject </b></font>
                           <hr size=1 color=#990000 width=100%>
                           </td>
                          </tr>
                           <td width=100%>
                            $memo
                           </td>
                          </tr>
                          <tr>
                           <td width=100% align=right>
                            <hr size=1 color=#990000 width=100%>
                            <font size=4 face=tahoma color=#990000><b>Mr. JH</b></font>
                           </td>
                          </tr>
                         </table>";

      mail($tomail , $title , $body, $mh);

     }
?>


전체적인 구조는 이러합니다. 메일함수만 잘 이용하면 되겠죠.
메일 함수에서.. 제로보드에서 입력한 제목과 내용을 그대로 받아와서 보내기면 하면되죠.
근데 HTML이 되게 해야지.. 그냥 내용만 보내면.. 
<br> 이란 태그가 자꾸 붙어서 나옵니다.

전체 소스를 보실분은 http://mrjh.net/etc/source/view_source.php 여길 클릭하면
제가 제 view.php 파일의 전체소스를 올려뒀습니다.


Posted by SB패밀리

[html/javascript] form 태그 항목 리스트 전체 선택하기


2003.11.25



<html>
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="Yes">
<script language='JavaScript'>

function reverse() {
           var i, chked=0;
           if(confirm('목록을 반전하시겠습니까?\n\n반전을 원하지 않는다면 취소를 누르시면 다음으로 넘어갑니다'))
           {
            for(i=0;i<document.list.length;i++)
            {
                     if(document.list[i].type=='checkbox')
                     {
                              if(document.list[i].checked) { document.list[i].checked=false; }
                              else { document.list[i].checked=true; }
                     }
            }
           }
}

</script>

<body>
<form name=list ....>

<input type=checkbox name=cart value='111'>111<BR>
<input type=checkbox name=cart value='222'>222
</body></html>

Posted by SB패밀리

[Javascript/html] Select 태크로 목록 선택하기


2003.11.25


ComboBox에서 Item선택시 이벤트 처리 (Select 태그)


<script language='JavaScript'>

<ComboBox에서 Item선택시 이벤트 처리

        function category_change() {
                  var myindex=list.category.selectedIndex;

                document.list.category.value=list.category.options[myindex].value;
                document.list.submit();
                return true;
        }


        
</script>


<select name=category onchange=category_change(this)>
        <option value=''>Category</option>
        <option value=1>일반</option>
        <option value=2>데이타베이스</option>
        <option value=3>그래픽스</option>
        <option value=4>네트웍/통신</option>
        <option value=5>레포팅</option>
        <option value=6>멀티미디어</option>
        <option value=7>액티브 X</option>
        <option value=8>어브젝트 파스칼</option>
        <option value=9>윈도우즈 API</option>
        <option value=10>인터넷</option>
        <option value=11>컴파일러/디버거</option>
        <option value=12>IDE</option>
        <option value=13>VCL/팩키지</option>
        <option value=14>시스템</option>
</select>

Posted by SB패밀리

[용어] 유비쿼터스(Ubiquitous)


2003.11.20 


유비쿼터스(Ubiquitous)

라틴어로 ‘어디에나 있는’이란 뜻. ‘유비쿼터스 컴퓨팅’이란 개념은 제록스 팔로 알토 연구소의 마크 와이저 박사가 1988년 처음 만들어냈다. 그는 집에는 수백개의 컴퓨터가 숨어있고, 이들이 케이블과 무선 네트워크로 연결될 것이라고 예언했다.

Posted by SB패밀리

[CppBuilder] ClassName 비교하여 작업하기 ClassName(), ClassNameIs()


2003.11.05



델파이로 비유하자면 Is 구문과 같다.

Typecase 는 As 구문과 같다.


    for (int i=0; i<ComponentCount; i++)
    {
        if ( String(Components[i]->ClassName()) == "TPanel")
            ((TPanel*)Components[i])->Color = nbAttrib->Color;
    }


다른 예 ClassNameIs() 함수를 사용한다.  

for (int i = 0; i < DataModule2->ComponentCount; i++)
  {
    if (DataModule2->Components[i]->ClassNameIs("TDataSource"))
      ListBox1->Items->AddObject(DataModule2->Components[i]->Name,
        (TObject *)DataModule2->Components[i]);
  }


Posted by SB패밀리

[HTML] HTML 페이지 Unload할 때 페이지 띄우기


2003.10.20


body 태그의 onunload 이벤트를 주목하자.

<html>
<head></head>
<script language="JavaScript">
function popup() {
window.open('http://mau.eg.to', 'popup', s='top=0,left=0,width='+(screen.availWidth-10)+',height='+(screen.availHeight-70)+',toolbar=yes,status=0,scrollbars=yes,resizable=0');
}
</script>

<body bgcolor="#ffffff" text="#000000" onunload="popup()">

<SCRIPT language=JavaScript>
function popup() {
window.open('http://mau.eg.to', 'popup', s='top=0,left=0,width='+(screen.availWidth-10)+',height='+(screen.availHeight-70)+',toolbar=yes,status=0,scrollbars=yes,resizable=0');
}
</SCRIPT></BODY></html>

Posted by SB패밀리

[HTML/JAVASCRIPT] HTML 오픈할 때 전체화면 만들기

2003.10.17


+0900

<html>
  <head>
  <meta http-equiv="Content-type" content="text/html; charset=euc-kr">
      <title></title>
<SCRIPT LANGUAGE="JavaScript"> 
function fullscreen() { 
var fullscreen = window.open("http://sobakcc.com","icdk","인천델파이코리아"); 

</script> 
  </head>
<BODY onload="fullscreen();"> 
  <div></div>
  </BODY>




Posted by SB패밀리

[컴퓨터] 소리로 진단하는 컴퓨터 에러



[펌] 소리로 진단하는 컴퓨터 에러 |  2003/12/17 13:56  


갑자기 먹통이 된 컴퓨터를 며칠동안 고생하며 수리하려다 포기하고 A/S 센터에 들고 갔더니, 도사께서는 전원을 켜면서 소리만 듣고 램을 바꿔 꽂더니 수리가 끝났다고 한다.(이런 황당한 경우가?)" 

이런 황당한(?) 일이 가능한 이유는 POST 기능 덕택입니다. 
POST(Power-On Self Test)란, PC 에 전원을 넣었을 때 CPU, 키보드, 그래픽카드, 메모리, 주변IC 등의 정상작동 상태를 파악하는 작업을 말하며, 이 과정에서 문제가 발견되지 않으면 정상적인 부팅과정으로 넘어가고 문제가 있으면 '삑' 소리(Beep음)와 함께 셋업(setup)을 위해 시스템 기능이 잠시 정지합니다. 이 때는 다시 셋업을 해야 합니다. 에러 내역은 각각의 상황에 따라 비프음의 횟수와 길이로 구별할 수 있는데 보통 부팅 중에 비프음을 내는 에러는 치명적인 문제일 때가 많습니다. 
아래 표를 참고하여 부팅중에 발생되는 문제의 원인을 찾고 그에 맞는 조치를 취하면 의외로 쉽게 문제를 해결할 수 있을겁니다.

부팅자체가 되지 않는 상황이라면 당황하기보다는 먼저 침착하게 시스템에 장착된 CPU, 메모리, 각 카드들이 제대로 꽂혀 있는지 확인하는 것이 좋습니다. 제대로 고정했더라도 다른부품을 건드리는 과정에서 같이 접촉되어 이탈되거나 이동할 때의 충격 등으로 살짝 빠져 있을 수 있기 때문이죠. 특히 슬롯1 CPU나 AGP 그래픽카드는 슬롯의 접촉부분이 2단으로 되어 있어 조금만 어긋나도 문제를 일으킬 가능성이 큽니다. 

메인보드에서 아예 소리가 나지 않는다면 메인 보드의 테스트가 필요하나 이것 또한 대부분의 경우 COMS 클리어로 해결이 됩니다. 
간혹 CPU 어댑터(라이저카드)를 사용할 경우에 문제가 발생될 수 있는데 접촉불량이 아니라면 라이저 카드 자체를 교체해서 테스트 해보는 수밖에 없겠죠.
 

1. 소리횟수
2. 에러내역
3. 상태
4. 해결법

짧게 1번
  -
정상부팅



길게 1번(반복)
패리티 이상
메모리의 리프레시 사이클과정에서 발생된 에러
메모리를 다시 꽂아 본다. 그래도 해결되지 않으면 메모리 교체

2번
패리티 이상
시스템의 기본메모리(처음64KB)에서 패리티 에러발생

3번
64KB기본 메모리 이상
시스템의 기본메모리에서 메모리 이상 발견

4번
타이머 비동작
기본 메모리에서 에러가 발견되었거나 시스템의 첫 번째 타이머가 작동하지 않는다
메인보드 불량 ->메인보드 교체

5번
프로세서 에러
CPU에서 에러 발견

6번
8042-게이트 A20이상 
키보드 컨트롤러(8042)는 CPU를 가상모드에서 작동시키기 위해서 게이트 A20이라는 스위치를 가지고 있다. 이 에러는 게이트 A20이 정상적으로 작동하지 않는 즉 CPU를 보호모드에서 동작시킬 수 없음을 의미한다
키보드 컨트롤러 칩을 다시 꽂는다. 해결되지 않으면 키보드 컨트롤러칩을 교체하고 그래도 해결되지 않으면 키보드의 퓨즈 또는 키보드 자체를 바꿔본다. 

7번
프로세서 익셉션 인터럽트 에러(Exoeption Interrupt Error)
시스템의 프로세서가 익셉션인터럽터를 발생시켰다
메인보드 불량 ->메인보드 교체

8번 
디스플레이 메모리 기록,판독 에러
그래픽카드를 찾을 수 없거나 그래픽카드 메모리 이상
그래픽카드의 메모리를 교체할 수 없거나 교체 해도 같은 에러가 발생 한다면 그래픽카드 자체를  

바꾼다. 

9번
롬 체크섬 에러
롬의 체크섬 값이 바이오스에 기록된 것과 다르다
바이오스 롬 칩의 불량이므로 새로운 바이오스롬 칩을 써야한다

10번
CMOS 셧다운
레지스터 기록, 판독에러  .  CMOS 셧다운 레지스터 이상
메인보드 불량 -> 메인보드 교체

2번 (늘어난 음향)
바이오스 손실
바이오스가 지워졌다
바이오스 업데이트나 바이오스 복구

사이렌음
CPU 과열
CPU가 과열로 위험한 상태
쿨러 장착이나 교체 또는 CPU교체



Posted by SB패밀리

마이크로소프트사의 저작권 관련 정보 제공 

2003.12.18


http://www.microsoft.com/korea/permission/


마이크로소프트사의 저작권 관련 정보 제공

http://www.microsoft.com/korea/permission/


Posted by SB패밀리

[CPP빌더] 2차원 배열 변수 메모리 할당/해제


2003.10.30



다차원 배열 변수에 메모리를 할당하고 해제하는 방법으로 2차원 배열 변수를 통하여 배워보자.

// 변수 선언
   long double **data;
// 메모리 할당

   try {                                 // TEST FOR EXCEPTIONS.
      data = new long double*[m];        // STEP 1: SET UP THE ROWS.
      for (int j = 0; j < m; j++)

          data[j] = new long double[n];  // STEP 2: SET UP THE COLUMNS
      }
  // 예외 상황
   catch (std::bad_alloc) {  // ENTER THIS BLOCK ONLY IF bad_alloc IS THROWN.
      // YOU COULD REQUEST OTHER ACTIONS BEFORE TERMINATING
      cout << "Could not allocate. Bye ...";
      exit(-1);
      }
  // 2차원 배열 변수 사용
   for (int i = 0; i < m; i++)
      for (int j = 0; j < n; j++)
          data[i][j] = i + j;            // ARBITRARY INITIALIZATION

  // 2차원 배열 변수 메모리 해제
   for (int i = 0; i < m;  i++)
       delete[] data[i];                 // STEP 1: DELETE THE COLUMNS

   delete[] data;                        // STEP 2: DELETE THE ROWS

Posted by SB패밀리

[델파이] 폼 디자인할 때 콤포넌트에 Mouse 이벤트 받게 하기.. 


2003.11.01


콤포넌트를 만들 때 디자인 타임에 Mouse 클릭에 반응해서 뭔가
바뀌게 하고 싶을 때가 있는데
예를 들면 TPageControl 에서 Tab 을 클릭하면 
Page 가 바뀌는 경우가 있는데 이런건.. 

CM_DESIGNHITTEST 메시지를 받아서 Result 값으로 0 이상의 값을 돌려주면
된다고 합니다.

콤포넌트 정의에

protected
procedure CMDesignHitTest(var msg: TMessage); message CM_DESIGHHITTEST;

를 추가하고..

procedure TMyCmp.CMDesignHitTest(var msg: TMessage);
begin
  Result := 1;
end;

저렇게 해주면 콤포넌트 디자인 타임에도 Mouse 이벤트를 처리할 수 있습니다.



Posted by SB패밀리

[delphi/web] how to detect when a Document is comp...



2004.01.12


An other example:

This example shows how to detect when a document is completely 
loaded, even if it includes multiple frames. Only the final 
OnDocumentComplete event passes the same Dispatch interface as the 
OnNavigateComplete event handler.

var
  CurDispatch: IDispatch; {save the interface globally }

procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject; const 
pDisp: IDispatch; var URL: OleVariant);

begin
  if CurDispatch = nil then
    CurDispatch := pDisp; { save for comparison }
end;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const 
pDisp: IDispatch; var URL: OleVariant);
begin
  if (pDisp = CurDispatch) then
  begin
    Beep; {the document is loaded, not just a frame }
    CurDispatch := nil; {clear the global variable }
  end;
end;

cu Andries

Posted by SB패밀리