史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2008-06-10, 10:57 AM  
飛行船大大
註冊會員
 
飛行船大大 的頭像
榮譽勳章
UID - 282126
在線等級: 級別:14 | 在線時長:264小時 | 升級還需:21小時級別:14 | 在線時長:264小時 | 升級還需:21小時級別:14 | 在線時長:264小時 | 升級還需:21小時級別:14 | 在線時長:264小時 | 升級還需:21小時
註冊日期: 2007-10-09
文章: 172
精華: 0
現金: 311 金幣
資產: 7311 金幣
預設 疑問 - html. 請問一下自己網頁要做一個網頁內的搜尋引擎要如何撰寫程式??



--------------------
閱讀本主題的最佳解答
--------------------


如下圖:我用forntPage在c:做了一些html 連結成一個web
請問一下自己網頁要做一個網頁內的搜尋引擎要如何撰寫程式??
我在c碟 執行時 第1張圖中打textbox 搜尋,出現錯誤 第2張圖的錯誤畫面如下 http://huhuge.hp.infoseek.co.jp/post_jpg/Picture9.gif
<第1張圖>

http://huhuge.hp.infoseek.co.jp/post_jpg/Picture10.gif
<第2張圖>

想請教
1. 我不想要上傳網頁到 網際網路http:// ,也不是要搜尋 網際網路上的網頁. 只想在 c:\ 中隨時執行index.html 就可以搜尋c: 中自己web中的各篇 .html 的標題和.html全文
要如何才能達成嗎?
2. 那兒有 較好的 .html搜尋引擎. 可以套用. (麻煩給個連接 或.html範例 均可 )

多謝回復!
飛行船大大 目前離線  
送花文章: 178, 收花文章: 61 篇, 收花: 139 次
回覆時引用此帖
舊 2008-06-20, 07:10 PM   #16 (permalink)
長老會員
 
cwvdavid 的頭像
榮譽勳章
UID - 476
在線等級: 級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時
註冊日期: 2002-12-06
住址: 天與地的夾縫
文章: 3106
精華: 0
現金: 5256 金幣
資產: 2034465 金幣
預設

它目前有1個 [極大] 的缺點,
就是沒找完之前, 不會出現結果...

(如果你是輸入C:\ .........
那就有得等了...)
__________________
姜太公釣魚~ 願者上鉤
cwvdavid 目前離線  
送花文章: 4036, 收花文章: 2466 篇, 收花: 10141 次
回覆時引用此帖
舊 2008-06-21, 12:14 PM   #17 (permalink)
註冊會員
 
飛行船大大 的頭像
榮譽勳章
UID - 282126
在線等級: 級別:14 | 在線時長:264小時 | 升級還需:21小時級別:14 | 在線時長:264小時 | 升級還需:21小時級別:14 | 在線時長:264小時 | 升級還需:21小時級別:14 | 在線時長:264小時 | 升級還需:21小時
註冊日期: 2007-10-09
文章: 172
精華: 0
現金: 311 金幣
資產: 7311 金幣
預設

引用:
作者: cwvdavid 查看文章
它目前有1個 [極大] 的缺點,
就是沒找完之前, 不會出現結果...

(如果你是輸入C:\ .........
那就有得等了...)
我試用後已經覺得很不錯了 , 也已經加到我的WEB 中.
我稍有修改畫面, 但是 可否幫我看看這3點 我不會改:
1. "就是沒找完之前, 不會出現結果..." 這一點 可否麻煩大大 當user按 Scan鈕之後 在按鈕旁邊顯示 一個字串 "搜尋中...請稍候" , 若找完後 就清除此字串即可.(這樣子就無缺點了)

2. 請多加一判斷:若找出的 path目錄名稱 的字串最右邊是 "_vti_pvt" 或 "_vti_cnf" 時
因為這是FrontPage 的虛擬目錄 和索引目錄 ( 如圖的最下方) ==>則此筆不列出 在螢幕
http://huhuge.hp.infoseek.co.jp/Pict3.gif

3.格行換底色問題 :我發覺 當找出許多筆時 顏色有時候不會換 (我指令不熟 不明原因)
如上圖的最下方2列.
語法:
					//如果有找到文字...就列出該檔案
					StrOut += "<tr "+ ((i%2)? "":"bgcolor=#ffffff")  +"><td width=70%><font class=find>" + FOo.Path + "</font></td><td width=30%><font class=find><a target=\"_blank\" href=\"" + mypath + FSo.item().name + "\">" + FSo.item().name + "</a></font></td><td width=20%><font class=find>"+ "</font></td></td></tr>";

此帖於 2008-06-21 12:31 PM 被 飛行船大大 編輯.
飛行船大大 目前離線  
送花文章: 178, 收花文章: 61 篇, 收花: 139 次
回覆時引用此帖
舊 2008-06-24, 02:58 AM   #18 (permalink)
長老會員
 
cwvdavid 的頭像
榮譽勳章
UID - 476
在線等級: 級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時
註冊日期: 2002-12-06
住址: 天與地的夾縫
文章: 3106
精華: 0
現金: 5256 金幣
資產: 2034465 金幣
預設

我大幅修改了程式碼, 可以在查詢中看到完全的狀況,
不會再感覺到[當(卡)在那邊]了...

你再試試看

語法:
<HTML lang=zh-TW>
<HEAD>
<TITLE>本機 檔案搜尋</TITLE>
<META http-equiv=Content-Type content="text/html; charset=big5">
</HEAD>
<style>
.Field {color: black; border: 1px solid #FFFFFF; background-color: #FFCC00;}
.Find  {color:blue; font: 12px Arial;}
</style>
<script>
var Fo = new ActiveXObject("Scripting.FileSystemObject");
var StrOut = new String();
var FileName = new String();
var Extention = new String();
var TableBarIndex = 0;
var cwvdavid_fileRead = new ActiveXObject("Scripting.FileSystemObject");
var SearchING = false;
var FindDirArray; //要搜尋的全部目錄資料...
var MissDirectory = ["_vti_", "images", "flash"]; //要忽略的目錄的開頭名稱(請寫小寫), 可自行再加入更多...
var myThreading_InterVal;

var commandList = [];
function executeCommands() { if(commandList.length>0) commandList.shift()(); }

function FindFile(FOo)
{
	FindDirArray = [];
	GetAllDirectory(FOo); //記錄所有要查詢的目錄...

	var FOo = Fo.GetFolder(FindDirArray.shift()); //一個目錄一個目錄的執行...
	simThread(FOo, null);
}

function GetAllDirectory(FOo)
{
	var SearchThisDirectory = true;

	var i;
	for(i = 0; i<MissDirectory.length; i++)
	{
		if(FOo.Name.toLowerCase().indexOf(MissDirectory[i]) == 0) //如果這個目錄 要忽略掉...就不記錄
		{
			SearchThisDirectory = false; 
		}
	}

	if(SearchThisDirectory)
	{
		FindDirArray.push(FOo.path);

		var subFOo = new Enumerator(FOo.SubFolders); //取得該目錄下的所有目錄...
		for( ; !subFOo.atEnd(); subFOo.moveNext())
		{
			GetAllDirectory(Fo.GetFolder(subFOo.item().Path)); //使用遞迴.....來取得全部的目錄...
		}
	}
}

function simThread(FOo, FSo)
{
	if(FSo == null)
	{
		FSo = new Enumerator(FOo.Files);
	}

	if(!FSo.atEnd()) //還沒到最後一個[檔案]之前...
	{
		//路徑的尾巴要加\, 不然找不到
		mypath = FOo.Path;
				
		//檢查mypath的尾巴是否有\, 如果沒有就加上去...
		if(mypath.lastIndexOf("\\")+1 != mypath.length)
		{
			mypath = mypath + "\\";
		}

		window.status = "搜尋中... " + mypath + FSo.item().name; //把查詢過程顯示在IE的狀態列

		//檢查這個檔案的檔名...看有沒有符合...查詢的條件...
		if(FileName == "*" ||  FSo.item().name.slice(0,FSo.item().name.lastIndexOf(".")).toLowerCase().indexOf(FileName)>-1)
		{
			if(Extention == "*" || FSo.item().name.slice(FSo.item().name.lastIndexOf(".")+1).toLowerCase().indexOf(Extention)>-1)
			{
				//把找到的檔案列出來...
				
				ts = cwvdavid_fileRead.OpenTextFile(mypath + FSo.item().name, 1);
				
				myReadWord = ts.ReadAll();
				if(myReadWord.indexOf(searchWord.value) != -1)
				{
					//如果有找到文字...就列出該檔案

					NewTR = Result_Table.insertRow(Result_Table.rows.length);
					NewTR.style.backgroundColor = ((TableBarIndex % 2)? "#FFFFFF":"#DDAA55");

					NewTD = NewTR.insertCell(0);
					NewTD.innerHTML = mypath;
					NewTD.className = "Find";

					NewTD = NewTR.insertCell(1);
					NewTD.innerHTML = "<a target=\"_blank\" href=\"" + mypath + FSo.item().name + "\">" + FSo.item().name + "</a>";
					NewTD.className = "Find";

					NewTD = NewTR.insertCell(2);
					NewTD.innerHTML = FSo.item().type;
					NewTD.className = "Find";

					NewTD = NewTR.insertCell(3);
					NewTD.innerHTML = String(FSo.item().size/(1024*1024)).slice(0,3) +" MB";
					NewTD.className = "Find";
					TableBarIndex++; //列出檔案時, 將變數加1, 以便換顏色...
				}
				ts.Close();
			}
		}


		FSo.moveNext(); //移到下一個檔案...
		commandList.push(function(){simThread(FOo, FSo);});
	}
	else //找下一個目錄的資料...
	{
		if(FindDirArray.length>0)
		{
			simThread(Fo.GetFolder(FindDirArray.shift()), null);
		}
		else
		{
			alert("已搜尋完畢...");
			mySearchBTN.value = "        開始搜尋        ";
			SearchING = false;
			clearInterval(myThreading_InterVal);
		}
	}
}

function Scan()
{
	if(SearchING)
	{
		clearInterval(myThreading_InterVal);

		mySearchBTN.value = "        開始搜尋        ";
		SearchING = false;
		alert("已中斷搜尋...");
	}
	else
	{
		myThreading_InterVal = setInterval("executeCommands()",1); //每一毫秒就執行一次...

		SearchING = true;
		mySearchBTN.value = "(搜尋中...) 立即停止搜尋";

		FileName = (search.value.lastIndexOf(".")>-1)? search.value.slice(0,search.value.lastIndexOf(".")):(search.value.length>0)? search.value.toLowerCase():"*"; //Get Searched File Name
		Extention = (search.value.lastIndexOf(".")>-1)? search.value.slice(search.value.lastIndexOf(".")+1).toLowerCase():"*"; // Get Searched File Extention Name

		TableBarIndex = 0;

		if(path.value.length>0 && Fo.FolderExists(path.value))
		{
			tableRows = Result_Table.rows.length;
			for(i=1; i<tableRows; i++) Result_Table.deleteRow(1); //保留標題列, 其他結果清除...


			FindFile(Fo.GetFolder(path.value));
		}
		else
		{
			alert("錯誤的路徑...");
		}
	}
}
</script>

<BODY topmargin="0" leftmargin="0">

<table border=0 width=100% cellspacing="0" style="border-collapse: collapse" cellpadding="2"><tr>
	<td dir="ltr" bgcolor="#FFCC00"><b><font face="Arial" size="2">Named :</font></b></td>
	<td dir="ltr" bgcolor="#FFCC00">
    <input size=50 type=text id=search name=search class="Field" value="*.html"></td>
	</tr><tr>
	<td dir="ltr" bgcolor="#FFCC00">
    <p dir="ltr"><b><font face="Arial" size="2">Path : </font></b> </td>
	<td bgcolor="#FFCC00">
    <input size=50 type=text value="D:\" id=path name=path class="Field" ></td>
	</tr><tr>
	<td bgcolor="#FFCC00">要找的文字...</td>
	<td bgcolor="#FFCC00">
    <input size=50 type=text value="文字" id=path0 name=searchWord class="Field" ></td>
	</tr><tr>
	<td bgcolor="#FFCC00"> </td>
	<td bgcolor="#FFCC00">
    <input type=button id=mySearchBTN value="        開始搜尋        " onclick=Scan() class="Field"></td>
	</tr><tr>
	<td colspan=2 align=right bgcolor="#FFCC00"><font face=arial size=2><b>Search Result</b></font><hr></td>
	</tr><tr>
	<td colspan=2 bgcolor="#FFCC00">
		<div id=outPut>
			<table border=0 width=100% cellspacing=0 id="Result_Table">
			<tr id="ResultTR1" bgcolor=\"#CCCCCC\"" +"><td class=find width=20%>路徑</td><td class=find width=30%>檔名</td><td class=find width=25%>檔案類型</td><td class=find width=50%>檔案大小</td></tr>
			</table>
		</div>
	</td>
	</tr></table>
</BODY>
</HTML>

(呼...寫這種程式會爆肝.....
以後要少碰......)
cwvdavid 目前離線  
送花文章: 4036, 收花文章: 2466 篇, 收花: 10141 次
回覆時引用此帖
有 2 位會員向 cwvdavid 送花:
JOHN (2008-06-24),飛行船大大 (2008-06-25)
感謝您發表一篇好文章
舊 2008-06-26, 11:54 AM   #19 (permalink)
註冊會員
 
飛行船大大 的頭像
榮譽勳章
UID - 282126
在線等級: 級別:14 | 在線時長:264小時 | 升級還需:21小時級別:14 | 在線時長:264小時 | 升級還需:21小時級別:14 | 在線時長:264小時 | 升級還需:21小時級別:14 | 在線時長:264小時 | 升級還需:21小時
註冊日期: 2007-10-09
文章: 172
精華: 0
現金: 311 金幣
資產: 7311 金幣
預設

引用:
作者: cwvdavid 查看文章
我大幅修改了程式碼, 可以在查詢中看到完全的狀況,
不會再感覺到[當(卡)在那邊]了...

你再試試看

(呼...寫這種程式會爆肝.....
以後要少碰......)
哈哈 不會爆肝的啦 ...只會越來越聰明 而且這裏帖子不多我們這一帖就像置頂 你在論壇會越來越出名..出名..出名..(ECHO...ECHO...ECHO...)
並且 "程式語言討論區 " 若是越沒人氣...以後會越走下坡沒人來 . ccc...我倆這樣也算是有供獻.

謝謝你花時間 幫我修改 程序也越來越完善了.

我填搜尋條件都和上次一樣 也 原來的目錄~ 若去除那些虛擬目錄的檔 應該至少還會有100 項要列出在螢幕
但是新改版的(16樓) 反而都搜尋不到只是列出3筆( 如下圖)...會不會是過濾太嚴格 ??
(14樓 的源碼 則都有列出 約100筆 是正確的)
http://huhuge.hp.infoseek.co.jp/Pict4.gif

從2天前 我忙一套發送簡訊系統 (驗收期15天) ~ 現在才測試cwvdavid大大新改的.這支程式不急用 我晚上再自己 修看看.
如果你有時間願意多幫忙改 ,更歡迎.....(ECHO...ECHO...ECHO...)

'--------------------------------
題外話~
有時覺得程式設計 當某一段時間趕進度 和解決一些目標時 孤軍作戰
我經常都是 傍晚或深夜很安靜寫 ~雖然一邊撥著mp3音樂檔. 有時還是覺得滿單調 乏味的 ~
哈哈..或許是職業倦勤ㄅ 也或許太久沒有出門玩它個幾天幾夜.
不知道 其他的程式設計師 會不會有時也同感.

此帖於 2008-06-26 12:39 PM 被 飛行船大大 編輯.
飛行船大大 目前離線  
送花文章: 178, 收花文章: 61 篇, 收花: 139 次
回覆時引用此帖
舊 2008-06-26, 04:59 PM   #20 (permalink)
長老會員
 
cwvdavid 的頭像
榮譽勳章
UID - 476
在線等級: 級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時級別:46 | 在線時長:2395小時 | 升級還需:2小時
註冊日期: 2002-12-06
住址: 天與地的夾縫
文章: 3106
精華: 0
現金: 5256 金幣
資產: 2034465 金幣
預設

我測試時沒有這個問題,
有可能是var MissDirectory = ["_vti_", "images", "flash"]; //要忽略的目錄的開頭名稱
造成你的其他資料夾被mark掉...

我有想過很多做法,
包含...

1. 把Table加上捲軸, 固定標題, 以及顯示總檔案數,
2. 查詢時, 將符合的檔案路徑暫存, 只要路徑檔名不變, 在2次查詢時, 速度會更快
3. 動態提示使用者要[同意]啟用ActiveX, 如果不小心按了取消, 就重新載入...
...
不過, 想一想還是有空再慢慢玩即可...暫時不會再改了,
你有測到Bug的話再跟我說(目前已知的Bug是查詢完之後, IE的狀態列不會清掉......)
cwvdavid 目前離線  
送花文章: 4036, 收花文章: 2466 篇, 收花: 10141 次
回覆時引用此帖
向 cwvdavid 送花的會員:
飛行船大大 (2008-06-27)
感謝您發表一篇好文章
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用

相似的主題
主題 主題作者 討論區 回覆 最後發表
疑問 - 最近買了一台印表機...有一些疑問! 180524 硬體疑難使用問題討論區 17 2007-09-17 06:16 PM
請問...我用flashget抓了一部電影.但不知點了裡頭什麼..電影不見了.是否有法子可補救?? lancolian 軟體應用問題討論區 0 2003-07-17 01:58 AM


所有時間均為台北時間。現在的時間是 09:03 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1