導航:首頁 > 源碼編譯 > vb腳本編譯引擎

vb腳本編譯引擎

發布時間:2023-04-17 11:57:52

① 樓上說的不對,VB不是解釋性語言,它也是編譯性語言! 什麼是解釋性語言什麼是編譯性語言還有什麼語言

計算機不能直接理解高級語言,只能直接理解機器語言,所以必須要把高級語言翻譯成機器語言,計算機才能值型高級語言編寫的程序。

翻譯的方式有兩種,一個是編譯,一個是解釋。兩種方式只是翻譯的時間不同。編譯型語言寫的程序執行之前,需要一個專門的編譯過程,把程序編譯成為機器語言的文件,比如exe文件,以後要運行的話就不用重新翻譯了,直接使用編譯的結果就行了(exe文件),因為翻譯只做了一次,運行時不需要翻譯,所以編譯型語言的程序執行效率高。

解釋則不同,解釋性語言的程序不需要編譯,省了道工序,解釋性語言在運行程序的時候才翻譯,比如解釋性basic語言,專門有一個解釋器能夠直接執行basic程序,每個語句都是執行的時候才翻譯。這樣解釋性語言每執行一次就要翻譯一次,效率比較低。
什麼是腳本語言?

1.腳本語言(javaScript,VBscript等)介於HTML和C,C++,Java,C#等編程語言之間。
HTML通常用於格式化和鏈結文本。而編程語言通常用於向機器發出一系列復雜的指令。
2.腳本語言與編程語言也有很多相似地方,其函數與編程語言比較相象一些,其也涉及到變數。與編程語言之間最大的區別是編程語言的語法和規則更為嚴格和復雜一些.
3.與程序代碼的關系:腳本也是一種語言,其同樣由程序代碼組成。
註:腳本語言一般都有相應的腳本引擎來解釋執行。 他們一般需要解釋器才能運行。JAVASCRIPT,ASP,PHP,PERL都是腳本語言。C/C++編譯、鏈接後,可形成獨立執行的exe文件。
4.腳本語言是一種解釋性的語言,例如vbscript,javascript,installshield script等等,它不象c\c++等可以編譯成二進制代碼,以可執行文件的形式存在.
腳本語言不需要編譯,可以直接用,由解釋器來負責解釋。
5.腳本語言一般都是以文本形式存在,類似於一種命令.
舉個例子說,如果你建立了一個程序,叫aaa.exe,可以打開.aa為擴展名的文件.
你為.aa文件的編寫指定了一套規則(語法),當別人編寫了.aa文件後,你的程序用這種規則來理解編寫人的意圖,並作出回應.那麼,這一套規則就是腳本語言.

JAVA語言

java很特殊,java程序也需要編譯,但是沒有直接編譯稱為機器語言,而是編譯稱為位元組碼,然後用解釋方式執行位元組碼。Java既可以被編譯,也可以被解釋。通過編譯器,可以把Java程序翻譯成一種中間代碼 - 稱為位元組碼 - 可以被Java解釋器解釋的獨立於平台的代碼。通過解釋器,每條Java位元組指令被分析,然後在計算機上運行。只需編譯一次,程序運行時解釋執行。下圖說明了它是如何工作的:

可以把Java位元組碼看作運行在Java虛擬機(Java VM)上的機器代碼指令。每中Java解釋器,不管是Java開發工具還是可以運行Java小應用程序的Web瀏覽器,都是一種Java VM的實例。JavaVM也可以由硬體實現。

Java位元組碼使「寫一次,到處運行」成為可能。可以在任何有Java編譯器的平台上把Java程序編譯成位元組碼。這個位元組碼可以運行在任何Java VM上。例如,同一個Java程序可以運行在WindowsNT、Solaris和Macintosh上。

Java平台

平台是程序運行的硬體或軟體環境。Java平台與大多數其它平台不同之處在於它是運行於其它基於硬體平台的純軟體平台。大多數其它平台是硬體和操作系統的結合。

Java平台由兩部分組成:

* Java虛擬機(Java VM)
* Java應用程序界面(Java API)

我們已經介紹了Java VM,它是Java平台的基礎,可以移植到各種基於硬體的平台上。Java API是軟體組件的集合,它們提供了很多有用的功能,如圖
形用戶界面(GUI)。Java API被分組為相關組件的庫(包)。

下圖描述了一個運行在Java平台上的Java程序,如應用程序(application)或小應用程序(applet)。如圖中顯示的,JavaAPI和VM把Java程序從硬體依賴中分離出來。

作為一種獨立於平台的環境,Java比本地代碼慢一些。然而,聰明的編譯器、很好地調制過的解釋器和即時位元組碼編譯器可以在不犧牲可移植性的條件下使Java的表現接近本地代碼。

② vb.net和vb編程的區別

vb.net是完全面向對象的語言,支持面向對象的唯咐四個基本屬性:抽蘆枝象,繼承,多態,封裝,但vb是面向過程的語言,它只支持部分面向對象的內容像多態,介面等。從 VB 7.0 之後的版本俗稱 VB.NET,來源於微軟的.NET戰陪山敏略,到現在為止有三個版本
VB 7.0 即VB 2002,對應.NET Framework 1.0的版本
VB 7.1 即VB 2003,對應.NET Framework 1.1的版本
VB 8.0 即VB 2005,對應.NET Framework 2.0的版本

除了語法和使用習慣的繼承,VB 6.0之前的版本和VB 7.0之後的版本完全沒有聯系,幾乎沒有相同之處,兩種不同體系的語言

③ VB腳本引擎問題

找一下是不是你的電腦沒有了wscript.exe這個系統文件。VBS腳本需要這個程序才能運行。

④ 我是個VB初學者誰能給我解釋一下VB中的 :Exp,log,是干什麼的還有怎麼用

繼續
EXP(X):返回以E為底,X為指數的值 ;那是VB的常用函數
下面是常用的函數解釋說明:

Abs 函數 返回數的絕對值。
And 運算符 執行兩個表達式的邏輯連接。
Array 函數 返回含一數組的 變體 。
Asc 函數 返回字元串首字母的 ANSI 字元代碼。
賦值運算符 (=) 給變數或屬性賦值。
Atn 函數 返回數的反正切值。
調用語句 將控制移交 Sub 或 Function 過程。
CBool 函數 返回已被轉換為 Boolean 子類型的變體的表達式。
CByte 函數 返回已被轉換為位元組子類型的變體的表達式。
CCur 函數 返回已被轉換為貨幣子類型的變體的表達式。
CDate 函數 返回已被轉換棚茄圓為日期子類型的變體的表達式。
CDbl 函數 返回已被轉換為雙精度子類型的變體的表達式。
Chr 函數 返回指定 ANSI 字元碼的字元。
CInt 函數 返回已被轉換為整數子類型的變體的表達式。
Class 對象 提供對已創建的類的事件的訪問。
Class 語句 聲明類名
Clear 方法 清除 Err 對象的所有屬性設置。
CLng 函數 返回已被轉換為 Long 子類型的變體的表達式。
顏色常數 顏色常數列表。
比較常數 用於比較運算的常數列表。
連接運算符 (&) 強制兩個納租表達式的字元串連接。
Const 語句 聲明用於字母值的常數。
Cos 函數 返回角度的餘弦值。
CreateObject 函數 創建並返回對「自動」對象的引用。
CSng 函數 返回已被轉換為單精度子類型的變體的表達式。
CStr 函數 返回已被轉換為字元串子類型的變體的表達式。
日期和時間常數 在日期和時間運算中用來定義星期幾和其他常數的常數列表。
日期格式常數 用於日期和時間格式的常數列表。
Date 函數 返回當前系統日期。
DateAdd 函數 返回加上了指定的時間間隔的日期。
DateDiff 函數 返回兩個日期之間的間隔。
DatePart 函數 返回給定日期 的指定部分。
DateSerial 函數 返回指定年月日的 日期子類型的變體 。
DateValue 函數 返回日期子類型的變體 。
Day 函數 返回日期,取值范圍為 1 至 31。
Description 屬性 返回或者設置說明某個錯誤的字元串。
Dictionary 對象 存儲數據鍵、項目對的對象。
Dim 語句 聲明變數並分配存儲空間。
除法運算符 (/) 兩數相除並以浮點數格式返回商。
Do...Loop 語句鏈塌 當條件為 True 或者當條件變為 True 時,重復一語句塊。
Empty 表示尚未初始化的變數值。
Eqv 運算符 使兩個表達式相等。
Erase 語句 重新初始化固定數組的元素並重新分配動態數組的存儲空間。
Err 對象 含有關於運行時錯誤的信息。
Eval 函數 計算並返回表達式的值。
Execute 方法 根據指定的字元串,執行正則表達式的搜索。
Execute 語句 執行單個或更多的指定語句。
Exit 語句 退出 Do...Loop、For...Next、 Function 或 Sub 代碼塊。
Exp 函數 返回 e (自然對數的底)的多少次方。
自乘運算符 (^) 指數函數,冪為自變數。
False 關鍵字,其值為零。
FileSystemObject 對象 提供對計算機文件系統的訪問。
Filter 函數 根據指定的篩選條件,返回含有字元串數組子集的、下限為 0 的數組。
FirstIndex 屬性 返回字元串匹配的位置。
Fix 函數 返回數的整數部分。
For...Next 語句 以指定的次數重復一組語句。
For Each...Next 語句 對於數組或集合中的每一個元素,重復一組語句。
FormatCurrency 函數 返回的表達式為貨幣值格式,其貨幣符號採用系統控制面板中定義的。
FormatDateTime 函數 返回格式化為日期或時間的表達式。
FormatNumber 函數 返回格式化為數的表達式。
FormatPercent 函數 返回格式化為百分比(乘以 100)的表達式,以 % 符號結尾。
Function 語句 聲明形成 Function 過程體的名稱、參數和代碼。
GetObject 函數 從文件返回對「自動」對象的訪問。
GetRef 函數 返回對可以綁定到事件的過程的引用。

⑤ 如何在.NET中實現腳本引擎

NET 本身提供了強大的腳本引擎,可以直接使用.NET CLR的任何編程語言作為腳本語言,如VB.NET、C#、JScript, J#等等。使用腳本引擎,我們可以動態生成任意表達式、或動態導入任意腳本文悔前件,並在任意時候執行。
經實踐發現,我們可以使用至少兩種不同的方式在.NET中使用腳本引擎:VsaEngine和CodeDom。
其實,CodeDom不能算是真正的腳本引擎,它實際上是編譯器。但是我們完全可以利用CodeDom來模擬腳本引擎。
使用Emit方法也能達到動態生成可執行代碼的目的,而且Emit生成的代碼不需要編譯,因此速度更快。但是Emit插入的實際上是匯編代碼,不能算是腳本語言。
本文介紹如何以CodeDom方式來動態生成可執行代碼。

如何在.NET中實現腳本引擎 (CodeDom篇) 沐楓網志

1. 構造一個編譯器
設置編譯參數
編譯參數需要在CompilerParameters設置:
CompilerOptions 用於設置編譯器命令行參數
IncludeDebugInformation 用於指示是否在內存在生成Assembly
GenerateInMemory 用於指示是否在內存在生成Assembly
GenerateExecutable 用於指示生成的Assembly類型是exe還是dll
OutputAssembly 用於指示生成的程序文件名(僅在GenerateInMemory為false的情況)
ReferencedAssemblies 用於添加引用Assembly
例如:
theParameters.ReferencedAssemblies.Add("迅首System.dll");

創建指定語言的編譯器
編譯需要由指定語言的CodeDomProvider生成。
這里列舉一些.NET的CodeDomProvider:
vb.net Microsoft.VisualBasic.VBCodeProvider
C# Microsoft.CSharp.CSharpCodeProvider
jscript Microsoft.JScript.JScriptCodeProvider
J# Microsoft.VJSharp.VJSharpCodeProvider
以C#為例,要創建C#編譯器,代碼如下:
//.NET 1.1/1.0
ICodeCompiler compiler = new Microsoft.CSharp.CSharpCodeProvider().CreateCompiler();
//.NET 2.0
ICodeCompiler compiler = (ICodeCompiler) new Microsoft.CSharp.CSharpCodeProvider();

下面是完整的創建編譯器的例子:
/// <summary>碧昌清
/// 創建相應腳本語言的編譯器
/// </summary>
private void createCompiler(string strLanguage, bool debugMode, string strAssemblyFileName)
{
this.theParameters = new CompilerParameters();
this.theParameters.OutputAssembly = System.IO.Path.Combine(System.IO.Path.GetTempPath(), strAssemblyFileName + ".dll");
this.theParameters.GenerateExecutable = false;
this.theParameters.GenerateInMemory = true;
if(debugMode)
{
this.theParameters.IncludeDebugInformation = true;
this.theParameters.CompilerOptions += "/define:TRACE=1 /define:DEBUG=1 ";
}
else
{
this.theParameters.IncludeDebugInformation = false;
this.theParameters.CompilerOptions += "/define:TRACE=1 ";
}

AddReference("System.dll");
AddReference("System.Data.dll");
AddReference("System.Xml.dll");

strLanguage = strLanguage.ToLower();

CodeDomProvider theProvider;

if("visualbasic" == strLanguage || "vb" == strLanguage)
{
theProvider = new Microsoft.VisualBasic.VBCodeProvider();
if(debugMode)
theParameters.CompilerOptions += "/debug:full /optimize- /optionexplicit+ /optionstrict+ /optioncompare:text /imports:Microsoft.VisualBasic,System,System.Collections,System.Diagnostics ";
else
theParameters.CompilerOptions += "/optimize /optionexplicit+ /optionstrict+ /optioncompare:text /imports:Microsoft.VisualBasic,System,System.Collections,System.Diagnostics ";
AddReference("Microsoft.VisualBasic.dll");
}
else if("jscript" == strLanguage || "js" == strLanguage)
{
theProvider = new Microsoft.JScript.JScriptCodeProvider();
AddReference("Microsoft.JScript.dll");
}
else if("csharp" == strLanguage || "cs" == strLanguage || "c#" == strLanguage)
{
theProvider = new Microsoft.CSharp.CSharpCodeProvider();
if(!debugMode)
theParameters.CompilerOptions += "/optimize ";
}
// else if("jsharp" == strLanguage || "vj" == strLanguage || "j#" == strLanguage)
// {
// theProvider = new Microsoft.VJSharp.VJSharpCodeProvider();
// if(!debugMode)
// theParameters.CompilerOptions += "/optimize ";
// }
else
throw new System.Exception("指定的腳本語言不被支持。");

this.theCompiler = theProvider.CreateCompiler();
}

/// <summary>
/// 添加引用對象。
/// </summary>
/// <param name="__strAssemblyName">引用的文件名</param>
public void AddReference(string __strAssemblyName)
{
theParameters.ReferencedAssemblies.Add(__strAssemblyName);
}

註:
在.NET Framework 2.0中,由於CreateCompiler方法被標記作廢。為避免產生編譯警告,可直接返回CodeDomProvider作為編譯器:
this.theCompiler = (ICodeCompiler)theProvider;

2. 編譯源代碼

編譯源代碼相當簡單,只需一條語句就搞定了:
CompilerResults compilerResults = compiler.CompileAssemblyFromSource(this.theParameters, this.SourceText);
執行後,可以從compilerResults取得以下內容:

NativeCompilerReturnValue 編譯結果,用於檢查是否成功
Errors 編譯時產生的錯誤和警告信息
CompiledAssembly 如果編譯成功,則返回編譯生成的Assembly

示例函數:
/// <summary>
/// 編譯腳本。編譯前將清空以前的編譯信息。
/// CompilerInfo將包含編譯時產生的錯誤信息。
/// </summary>
/// <returns>成功時返回True。不成功為False。</returns>
public bool Compile()
{
this.theCompilerInfo = "";
this.isCompiled = false;
this.theCompiledAssembly = null;
this.theCompilerResults = this.theCompiler.CompileAssemblyFromSource(this.theParameters, this.SourceText);

if(this.theCompilerResults.NativeCompilerReturnValue == 0)
{
this.isCompiled = true;
this.theCompiledAssembly = this.theCompilerResults.CompiledAssembly;
}

System.Text.StringBuilder compilerInfo = new System.Text.StringBuilder();

foreach(CompilerError err in this.theCompilerResults.Errors)
{
compilerInfo.Append(err.ToString());
compilerInfo.Append("/r/n");
}

theCompilerInfo = compilerInfo.ToString();

return isCompiled;
}

3. 執行代碼

使用Reflection機制就可以很方便的執行Assembly中的代碼。
我們假設編譯時使用的腳本代碼 this.SourceText 內容如下:
namespace test
{
public class script
{
static public void Main()
{
MessageBox.Show("Hello");
}
}
}

則相應的執行代碼為:

scriptEngine.Invoke("test.script", "Main", null);

Invoke函數內容:
/// <summary>
/// 執行指定的腳本函數(Method)。
/// 如果指定的類或模塊名,以及函數(Method)、或參數不正確,將會產生VsaException/VshException例外。
/// </summary>
/// <param name="__strMole">類或模塊名</param>
/// <param name="__strMethod">要執行的函數(Method)名字</param>
/// <param name="__Arguments">參數(數組)</param>
/// <returns>返回執行的結果</returns>
public object Invoke(string __strMole, string __strMethod, object[] __Arguments)
{
if(!this.IsCompiled || this.theCompiledAssembly == null)
throw new System.Exception("腳本還沒有成功編譯");

Type __MoleType = this.theCompiledAssembly.GetType(__strMole);
if(null == __MoleType)
throw new System.Exception(string.Format("指定的類或模塊 ({0}) 未定義。", __strMole));

MethodInfo __MethodInfo = __MoleType.GetMethod(__strMethod);
if(null == __MethodInfo)
throw new System.Exception(string.Format("指定的方法 ({0}::{1}) 未定義。", __strMole, __strMethod));

try
{
return __MethodInfo.Invoke(null, __Arguments);
}
catch( TargetParameterCountException )
{
throw new System.Exception(string.Format("指定的方法 ({0}:{1}) 參數錯誤。", __strMole, __strMethod));
}
catch(System.Exception e)
{
System.Diagnostics.Trace.WriteLine(string.Format("執行({0}:{1})錯誤: {2}", __strMole, __strMethod, e.ToString()));
return null;
}
}

總結:
CodeDom可以很方便的隨時編譯源代碼,並動態執行。雖然作為腳本引擎,它沒有VsaEngine正規和方便,但作為一般應用,也夠用了。並且結合Reflection機制,它的功能比VsaEngine更強大:它可以編譯任何提供CompilerProvider的CLR語言(目前.NET自帶的語言中都有)。
當然,它也有一些缺點:它生成的Assembly不能動態卸載。這在一般情況下不成問題,因為一個源代碼只需編譯一次,並載入執行,並不需要動態卸載。
假如你需要做腳本編輯器時,就要考慮這個問題,因為有可能一個腳本會因為修修改改而不停的重新編譯,從而造成不停的產生新的Assembly,最後將導致內存被大量佔用。要解決這個問題,需要將編譯器載入到獨立的AppDomain中,通過卸載AppDomain達到卸載所需的Assembly的目的。

⑥ vbscirpt

VBScript簡介
VBScript全稱應該是 Microsoft Visual Basic Scripting Edition,它是程序開發語言 Visual Basic家族的成員之一,它將靈活的 Script應用於更廣泛的領域,包括 Microsoft Internet Explorer中的 Web客戶機 Script和 Microsoft Internet Information Server中的 Web伺服器Script。

如果您已了解 Visual Basic或Visual Basic for Applications,就會很快熟悉VBScript,因為 VBScript實際上是 Visual Basic的一個子集。即使沒有學過 Visual Basic,只要學會VBScript,就能夠使用所有的 Visual Basic語言進行程序設計。

VBScript支持ActiveX Script標准,所謂ActiveX Script標准,就是野鄭晌微軟的腳本語言標准,現在主要包括 VBScript和 JavaScript的微軟版本---JScript以及 Perl等第三方語言。使用 ActiveX Script,瀏覽器和其他宿主應用程序不再需要每個 Script部件的特殊集成代碼。ActiveX Script使宿主可以編譯Script、獲取和調用入口點及管理開發者可用的命名空間。通過 ActiveX Script,語言廠商可以建立標準的 Script運行語言。Microsoft將提供 VBScript的運行支持。 Microsoft正在與多個Internet組一起定義ActiveX Script標准以使 Script引擎可以互換。AcdveX Script可用在Mircrosoft Internet Explorer和Mircrosoft Internet Information Server(IIS)中。

Microsoft為 32位Windows API、16位Windows API和 Macintosh提供VBScript的二進制實現程序。 VBScript與 World Wide Web萬維網瀏覽器集成在一起。VBScript和 ActiveX Script也可以在其他應用程序中作為普通Script語言使用。

VBSCRIPT不僅是一種代表著用戶系統的腳本語言,它還是安全的開發工具。由於VBSCIRPT語言的強大功能、簡便的開發方式已經與Visual Bascic的相通之處,使它成為了許多用戶製作主頁的不可缺少的工具。隨著ASP技術越來越多的應用,VBSCIRPT的應用前景將會越來越好。

利用VBSCIRPT,用戶可以非常方便的製作出各式各樣的,具有強大功頌鋒能的,和用戶交互的主頁,不僅可以開發現在最流行的WEB資料庫,甚至可以開發在主頁上的小游戲。總之,擁有了VBSCIRPT,不僅將會使用戶的主頁變得更加多姿多彩,也還會使主頁除了可被瀏覽之外還增添了資料庫管理和網上交互的能力。

開發工具
由於.asp和.htm文件都只不過是一些寫著源代碼的文本文件,雖然它的擴展名不是txt而是asp或htm。你可以使用任何一種喜歡的文字處理工具未進行開發,比如說NotePad、WordPad或TextPad。最好不要用像Word這樣的大傢伙,首先它的速度太慢,佔用的內存太多,而且一不小心就會把寫好的代碼存為.DOC格式文件而不是正確的文本格式的文件。

但是建議讀者最好還是學一學專用開發工具的用法,雖然剛開始的時候會花去一些時間,但掌握了它們之後,開發大型應用的時候能夠減少不少麻煩。

最主要的開發工具是Visual InterDev和FrontPage 98。平時用FrontPage可以很好地將外觀設計好,由於 Visual InterDev 6.0目前還不是很穩定,只有在進行站點的整體風格設定、資料庫的在線設計、代碼的叢啟調試用 FrongPage 98力不從心的時候才使用它。Visual InterDev 6.O還有其它的好處,比如說幫助非常全面,採用Visual Basic界面等。

⑦ VB腳本就是VBS嗎

是VBScript,簡寫就是vbs,腳本語言很重要
資料
1.腳本語言(JavaScript,VBscript等)介於HTML和C,C++,Java,C#等編程語言之間。
HTML通常用友源於格式化和鏈結文本。而編程語言通常用於向機器發出一系列復雜的指令。
2.腳本語言與編程語言也有很多相似地方,其函數與編程語言比較相象一些,其也涉及到變數。與編程語言之間最大的區別是編程語言的語法和規則更為嚴格和復雜一些.
3.與程序代碼的關系:腳本也是一種語言,其同樣由程序代碼組成。
註:腳本語言一般都有相應的腳鏈告螞本引擎來解釋執行。 他們一般需要解釋器才能運行。JAVASCRIPT,ASP,PHP,PERL都是腳本語言。C/C++編譯、鏈接後,可形成獨立執行的exe文件。
4.腳本語言是一種解釋性的語言,例如vbscript,javascript,installshield script等等,它不象c\c++等可以編譯成二進制代碼,以可執行文件的形式存在.
腳本語言不需要編譯,可以直接用,由解釋棚埋器來負責解釋。
5.腳本語言一般都是以文本形式存在,類似於一種命令.
舉個例子說,如果你建立了一個程序,叫aaa.exe,可以打開.aa為擴展名的文件.
你為.aa文件的編寫指定了一套規則(語法),當別人編寫了.aa文件後,你的程序用這種規則來理解編寫人的意圖,並作出回應.那麼,這一套規則就是腳本語言.

閱讀全文

與vb腳本編譯引擎相關的資料

熱點內容
51單片機定時器方式2 瀏覽:330
命令行查看開機時間 瀏覽:812
python微博復雜網路分析 瀏覽:550
rf3148編程器 瀏覽:505
浙江標准網路伺服器機櫃雲主機 瀏覽:587
設置網路的伺服器地址 瀏覽:600
java圖形界面設計 瀏覽:751
純前端項目怎麼部署到伺服器 瀏覽:538
瓜子臉程序員 瀏覽:505
如何保證伺服器優質 瀏覽:94
小微信aPP怎麼一下找不到了 瀏覽:299
演算法纂要學術價值 瀏覽:975
程序員你好是什麼意思 瀏覽:801
倩女幽魂老伺服器如何玩 瀏覽:561
電子鍾單片機課程設計實驗報告 瀏覽:999
看加密頻道 瀏覽:381
程序員算不算流水線工人 瀏覽:632
三星電視我的app怎麼卸載 瀏覽:44
簡述vi編譯器的基本操作 瀏覽:507
讓程序員選小號 瀏覽:91