2007年9月29日 星期六

[轉貼]CreateObject 函數或 ActiveXObject 函數可能會在 InfoPath 2003 中產生指令碼錯誤

 

[轉貼]CreateObject 函數或 ActiveXObject 函數可能會在 InfoPath 2003 中產生指令碼錯誤

文章編號 : 832512
上次校閱 : 2006年2月16日
版次 : 2.0

徵狀

您可以使用 Microsoft VBScript CreateObject 函數或 Microsoft JScript ActiveXObject 函數來建立 ActiveX 元件的執行個體。如果您在呼叫 Microsoft Office InfoPath 2003 表單的函數的指令碼模組中建立 ActiveX 元件的執行個體,可能會收到下列其中一個錯誤訊息:
自動化伺服程式無法產生物件
ActiveX 元件無法產生物件

回此頁最上方

發生的原因

InfoPath 2003 表單一定會在 Internet 安全性區域的內容中執行。Internet 安全性區域會定義表單中的指令碼可以執行的動作以及表單中的指令碼不能執行的動作。一般而言,發生這個錯誤是因為如果 ActiveX 元件未標示為安全的不受信任指令碼安全的不受信任初始化,表單執行的 Internet 安全性區域便不允許建立 ActiveX 元件。這表示控制項的作者沒有證明如果有惡意指令碼或惡意資料時,元件不會損壞您的系統。

如需有關安全性區域如何影響表單對您電腦上的資源所具有的存取層級的詳細資訊,請按一下 [說明] 功能表上的 [Microsoft Office InfoPath 2003 說明],在 [輔助中心] 窗格的 [搜尋] 方塊中輸入關於安全性區域,然後按一下 [開始搜尋] 以檢視主題。
如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
216434 (http://support.microsoft.com/kb/216434/) INFO: How Internet Explorer Determines If ActiveX Controls Are Safe

回此頁最上方

解決方案

如果要解決您的 InfoPath 2003 表單中的這個問題,請使用下列其中一種方法:
讓表單成為完全信任的 URN 表單。
在 Microsoft Internet Explorer 的信任網站清單中加入主控 InfoPath 2003 表單的伺服器的 URL。
數位簽署表單範本。(適用於 InfoPath 2003 SP1)

讓表單成為完全信任的 URN 表單

完全信任的 URN 表單必須使用自訂安裝指令碼或 Microsoft System Installer 套件安裝在您的電腦上。這樣即使 ActiveX 元件未標示為安全的不受信任指令碼安全的不受信任初始化,亦允許建立 ActiveX 元件。

您可以將標準表單手動轉換成 URN 表單。然而,手動轉換的工作很冗長,而且容易出錯。您也可以使用 InfoPath 2003 Software Development Kit (SDK) 隨附的命令列表單登錄工具 - RegForm.exe 工具,將標準表單轉換成 URN 表單。RegForm.exe 工具會對表單定義檔案及 XML 範本檔案進行必要的變更。然後 Regform.exe 工具會將檔案重新封裝成 .xsn 檔案,再建立自訂安裝程式來安裝修改後的表單範本。

如需有關如何下載 InfoPath 2003 SDK 的詳細資訊,請造訪下列 Microsoft 網站:
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=351f0616-93aa-4fe8-9238-d702f1bfbab4 (http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=351f0616-93aa-4fe8-9238-d702f1bfbab4)
InfoPath 2003 SDK 的預設安裝位置為 C:\Program Files\Microsoft Office 2003 Developer Resources\Microsoft Office InfoPath 2003 SDK\Tools。

如果要查看命令列選項,請在 [命令] 視窗中輸入下面的命令列:
regform /?
請注意命令列中 /U 參數和 /T 參數的使用。/U 參數會指定用於表單範本的 URN。/T 參數會指定表單範本是完全信任的。如此會將表單定義 (.xsf) 檔案中的 requireFullTrust 屬性設定為「是」。

下面的命令列會在和您正在轉換的範本相同的資料夾中產生 .js 檔案和 .bak 檔案:
regform /U urn:MyForm:MyCompany /T Yes C:\MyForms\MyTrustedForm.xsn
.bak 檔案是進行 URN 變更之前的原始表單範本檔案的複本。.js 檔案是可以用於安裝 URN 表單的指令碼檔案。

如果要執行 .js 指令碼,請在命令列輸入下列程式碼,然後按 ENTER:
Cscript <full path of your .js file>
如需關於 URN 表單或 RegForm.exe 工具的詳細資訊,請參閱 InfoPath 2003 SDK 說明文件中的「使用表單登錄工具」主題。

在 Microsoft Internet Explorer 的信任網站清單中加入主控 InfoPath 2003 表單的伺服器的 URL

當您加入主控 InfoPath 2003 表單的伺服器的 URL 作為信任的網站時,會在執行程式碼時收到下面的訊息:
這個畫面上某個 ActiveX 控制項與其他部份相互作用時可能會不安全。要允許相互作用?
如果您按一下 [是],程式碼便會執行。如果您按一下 [否],可能會收到<徵狀>一節中所提及的錯誤訊息,而程式碼將不會執行。

如果要新增網站作為信任的網站,請執行下列步驟:
1. 啟動 Internet Explorer。
2. [工具] 功能表上,按一下 [網際網路選項]
3. [網際網路選項] 對話方塊中,按一下 [安全性] 索引標籤。
4. [安全性] 索引標籤上,按一下 [信任的網站]
5. 按一下 [網站]
6. [將此網站加到該區域] 文字方塊中,加入主控 InfoPath 2003 表單的伺服器的 URL。

例如,如果主控 InfoPath 2003 表單的伺服器的名稱為 MyServer,您必須加入文字方塊中的 URL 則為 http://MyServer
7. 按一下 [新增]

這會將新輸入的網站加入 [網站] 清單方塊中。
8. 按兩次 [確定]

如此便會確認變更,然後關閉對話方塊。

數位簽署表單範本

此適用於 InfoPath 2003 Service Pack 1。如果您使用信任的憑證簽署表單範本,可以將表單範本的安全性層級設定為「完全信任」。「完全信任」表示表單可以存取使用者電腦或不同網域中的檔案和設定。此外,您可以使用電子郵件程式將表單範本和更新後的表單範本傳送給他人,以部署及更新表單範本。

如果要使用信任的憑證數位簽署表單,請執行下列步驟:
1. 在「設計」模式中,按一下 [工具] 功能表中的 [表單選項]
2. [表單選項] 對話方塊中,按一下 [安全性] 索引標籤。
3. [表單簽署] 下,按一下以選取 [簽署此表單] 核取方塊。
4. 按一下 [選取憑證]
5. [選取憑證] 對話方塊中,按一下您要用於數位簽署表單的憑證。
注意 如果憑證在使用者的電腦上不受信任,Microsoft Office InfoPath 2003 會顯示安全性訊息,並要求使用者要先啟用對憑證發行者的信任,才能開啟表單。

回此頁最上方

参考

如需有關如何取得 Microsoft Office 最新版 Service Pack 的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
870924 (http://support.microsoft.com/kb/870924/) 如何取得 Office 2003 的最新 Service Pack

回此頁最上方


這篇文章中的資訊適用於:
Microsoft Office InfoPath 2003
Microsoft Office InfoPath 2003, Service Pack 1 (SP1)

回此頁最上方

關鍵字: 
kbdownload kbprb kbautomation kbnofix KB832512

回此頁最上方

Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
 

2007年9月27日 星期四

[轉貼]Temporarily change the running object snap mode

[轉貼]Temporarily change the running object snap mode
 
Option Explicit
Public intSnapSetting As Integer
Public SettingChanged As Boolean

Sub Change_Snaps()
     'Sets running Object Snap modes to whatever you choose,
     'then back to the original setting.
     '-----------------From the HELP file--------------------------------------
     'Bitcodes for Object Snap Modes:
     '   0 NONe
     '   1 ENDpoint
     '   2 MIDpoint
     '   4 CENter
     '   8 NODe
     '   16 QUAdrant
     '   32 INTersection
     '   64 INSertion
     '   128 PERpendicular
     '   256 TANgent
     '   512 NEArest
     '   1024 QUIck
     '   2048 APParent Intersection
     '   4096 EXTension
     '   8192 PARallel
     '
     'To specify more than one object snap, enter the sum of their values.
     'To find out the current bitcode combination you have, simply enter OSMODE
     'and the number will be inside < >
     '-------------------------------------------------------------------------
    
    If SettingChanged = False Then
        intSnapSetting = ThisDrawing.GetVariable("OSMODE")
        SettingChanged = True
    End If
    
    If ThisDrawing.GetVariable("OSMODE") = 4 Then
         'Returns object snap mode to previous state and resets the boolean value
        ThisDrawing.SetVariable "OSMODE", intSnapSetting
        SettingChanged = False
        AutoCAD.Application.ActiveDocument.Utility.Prompt vbCrLf & "Snaps Restored"
    Else
        ThisDrawing.SetVariable "OSMODE", 4 'Sets the Object Snap mode to CENter
        AutoCAD.Application.ActiveDocument.Utility.Prompt vbCrLf & "Snap set to Center"
    End If
End Sub 

AutoCAD

Temporarily change the running object snap mode

Ease of Use

Intermediate

Version tested with

2004, 2005 

Submitted by:

malik641

Description:

Stores the Object Snaps you have running at Run-Time and resets the Object Snap mode to specific settings. Once the code is run again, the original settings are restored. 

Discussion:

At my job, I design pools. And when I dimension the pool I like to use the Center object snap and everything else off. I usually have a lot more snaps running than just Center, so it becomes tedious to keep checking on/off the same check boxes everytime I dimension a pool. So I made this code as sort of a "switch" for when I dimension pools, specifically. But you can set it to whatever you prefer, just follow the code. 

Code:

instructions for use

Visual LISP 與 ActiveX/VBA 的比較

 
Visual LISP 與 ActiveX/VBA 的比較   
Visual LISP 與 ActiveX/VBA 的比較
 

下表比較了 Visual LISP 函數與相似的 ActiveX®、VBA 及 Visual Basic 6 函數和運算子。 ActiveX Automation 對等值由「AutoCAD.Application」指示,並將 Visual Basic 6 對等值列示為函數或運算子。

Visual LISP 與 ActiveX/VBA 的比較

AutoLISP 函數

ActiveX、VBA 或 Visual Basic 6 對等值

+ (加)

+ (加運算子)

- (減)

- (減運算子)

* (乘)

* (乘運算子)

/ (除)

/ (除運算子)

= (等於)

= (等於比較運算子)

/= (不等於)

<> (不等於比較運算子)

< (小於)

< (小於比較運算子)

<= (小於或等於)

<= (小於或等於比較運算子)

/= (不等於)

<> (不等於比較運算子)

> (大於)

> (大於比較運算子)

>= (大於或

等於)

>= (大於或等於比較運算子)

~ (按位元否)

Not 運算子

1+ (增量)

使用 + (加運算子)

1- (減量)

使用 - (減運算子)

abs

Abs 函數

acad_colordlg

未提供

acad_helpdlg

搜尋線上說明索引中的 HELP

acad_strlsort

搜尋線上說明索引中的 SORT

action_tile

使用對話方塊編輯器

add_list

使用對話方塊編輯器

ads

AutoCAD.Application.ListADS 方法

alert

MsgBox 函數

and

And 運算子

angle

AutoCAD.Application.ActiveDocument.Utility.

AngleFromXAxis 方法

angtof

AutoCAD.Application.ActiveDocument.Utility.GetInteger 方法

angtos

AutoCAD.Application.ActiveDocument.Utility.

AngleToString 方法

append

使用陣列操控函數

apply

未提供

arx

AutoCAD.Application.ListARX 方法

arxload

AutoCAD.Application.LoadARX 方法

arxunload

AutoCAD.Application.UnloadARX 方法

ascii

Asc 函數

assoc

未提供

atan

Atn 函數

atof

CDbl 函數

atoi

CInt 函數

atom

搜尋線上說明索引中的 IS

atoms-family

未提供

autoarxload

未提供

autoload

未提供

Boole

使用邏輯運算子

boundp

搜尋線上說明索引中的 IS

car/cdr

使用陣列操控函數

chr

Chr 函數

client_data_tile

使用對話方塊編輯器

close

AutoCAD.Application.Documents.Close 方法

command

AutoCAD.ActiveDocument.SendCommand 方法

cond

Select Case 陳述式

cons

使用陣列操控函數或 AutoCAD.Application.collection.Add<entityname> 方法

cos

Cos 函數

cvunit

使用轉換函數

defun

關鍵字函數和 End 函數

dictadd

AutoCAD.Application.ActiveDocument.Dictionaries.Add 方法

dictnext

AutoCAD.Application.ActiveDocument.Dictionaries.Item 方法

dictremove

AutoCAD.Application.ActiveDocument.Dictionaries.

Dictionary.Delete 方法

dictrename

AutoCAD.Application.ActiveDocument.Dictionaries.

Dictionary.Rename 方法

dictsearch

AutoCAD.Application.ActiveDocument.Dictionaries.

Dictionary.GetName 和 GetObject 方法

dimx_tile 和 dimy_tile

使用對話方塊編輯器

距離

AutoCAD.Application.Utility.GetDistance 用於交談式方法。

distof

未提供

done_dialog

使用對話方塊編輯器

end_image

使用對話方塊編輯器

end_list

使用對話方塊編輯器

entdel

AutoCAD.Application.ActiveDocument.collection_object.

Delete 方法

entget

AutoCAD.Application.ActiveDocument.collection_object.

property 性質

entlast

AutoCAD.Application.ActiveDocument.Modelspace.

Item(count-1)

entmake

AutoCAD.Application.ActiveDocument.Modelspace.

Add<entityname> 方法

entmakex

AutoCAD.Application.ActiveDocument.Modelspace.

Add<entityname> 方法

entmod

使用物件的任何讀寫性質

entnext

AutoCAD.Application.ActiveDocument.collection.Item 方法

entsel

AutoCAD.Application.ActiveDocument.SelectionSets 物件/方法/性質

entupd

AutoCAD.Application.ActiveDocument.Modelspace.物件.

Update 方法

eq

未提供

equal

Eqv 運算子

*error*

Error 物件/方法/性質

eval

未提供

exit

AutoCAD.Application.Quit 方法

exp

Exp 函數

expand

未提供

expt

^ (指數運算子)

fill_image

使用對話方塊編輯器

findfile

Dir 函數

fix

Fix、Int、Cint 函數

float

CDbl 函數

foreach

For Each...Next 陳述式

gc

AutoCAD.Application.ActiveDocument.PurgeAll

gcd

未提供

get_attr

使用對話方塊編輯器

get_tile

使用對話方塊編輯器

getangle

AutoCAD.Application.ActiveDocument.Utility.GetAngle 方法

getcfg

AutoCAD.Application.Preferences.property 性質

getcname

未提供

getcorner

AutoCAD.Application.ActiveDocument.Utility.GetCorner 方法

getdist

AutoCAD.Application.ActiveDocument.Utility.GetDistance 方法

getenv

AutoCAD.Application.Preferences.property 性質

getfiled

使用檔案對話方塊

getint

AutoCAD.Application.ActiveDocument.Utility.GetInteger 方法

getkword

AutoCAD.Application.ActiveDocument.Utility.GetKeyword 方法

getorient

AutoCAD.Application.ActiveDocument.Utility.

GetOrientation 方法

getpoint

AutoCAD.Application.ActiveDocument.Utility.GetPoint 方法

getreal

AutoCAD.Application.ActiveDocument.Utility.GetReal 方法

getstring

AutoCAD.Application.ActiveDocument.Utility.GetString 方法

getvar

AutoCAD.Application.GetVariable 方法

graphscr

AppActivate AutoCAD.Application.Caption

grclear

Obsolete 函數

grdraw

未提供

grread

未提供

grtext

AutoCAD.Application.ActiveDocument.Utility.Prompt

grvecs

未提供

handent

AutoCAD.Application.ActiveDocument.ModelSpace.object.

Handle 性質

help

搜尋線上說明索引中的 HELP

if

If… Then… Else 陳述式

initget

AutoCAD.Application.ActiveDocument.Utility.

InitializeUserInput

inters

AutoCAD.Application.ActiveDocument.Modelspace.物件.

IntersectWith

itoa

Str 函數

lambda

未提供

last

arrayname(UBound(arrayname))

長度

UBound 函數

list

ReDim 陳述式

listp

IsArray 函數

load_dialog

使用對話方塊編輯器

load

AutoLISP 不會經由 Automation 受到支援

log

Log 函數

logand

And 函數

logior

Or 函數

lsh

Imp 函數

mapcar

未提供

max

Max 函數

mem

未提供

member

Use 集合

menucmd

AutoCAD.Application.MenuBar 物件

menugroup

AutoCAD.Application.MenuGroup 物件

min

Min 函數

minusp

使用 < 0 語法

mode_tile

使用對話方塊編輯器

namedobjdict

AutoCAD.Application.ActiveDocument.Dictionaries 集合

nentsel

AutoCAD.Application.ActiveDocument.SelectionSets.

SelectionSet.SelectAtPoint 方法

nentselp

AutoCAD.Application.ActiveDocument.SelectionSets.

SelectionSet.SelectAtPoint 方法

new_dialog

使用對話方塊編輯器

not

使用邏輯運算子

nth

使用 object(n) 語法

null

IsNull 函數

numberp

TypeName 函數

open

Open 函數

or

使用邏輯運算子

osnap

未提供 (您可以使用 SetVariable 方法來控制系統變數 OSMODE。)

環形

AutoCAD.Application.ActiveDocument.Utility.PolarPoint 方法

prin1

AutoCAD.Application.ActiveDocument.Utility.Prompt

princ

AutoCAD.Application.ActiveDocument.Utility.Prompt

print

AutoCAD.Application.ActiveDocument.Utility.Prompt

progn

未提供

prompt

AutoCAD.Application.ActiveDocument.Utility.Prompt

quit

AutoCAD.Application.Quit 方法

quote

未提供

read

未提供

read-char

Input 函數

read-line

Line Input 函數

redraw

AutoCAD.Application.ActiveDocument.Modelspace.物件.

Update 方法

regapp

AutoCAD.Application.ActiveDocument.

RegisteredApplications.Add 方法

rem

Mod 函數

repeat

For… Each, While,

reverse

未提供

rtos

AutoCAD.Application.ActiveDocument.Utility.RealToString 方法

set

Set 函數

set_tile

使用對話方塊編輯器

setcfg

AutoCAD.Application.Preferences.property 性質

setfunhelp

未提供

setq

Set 函數

setvar

AutoCAD.Application.SetVariable 方法

sin

Sin 函數

setview

AutoCAD.Application.ActiveDocument.Viewports.Viewport.

SetView 方法

slide_image

使用對話方塊編輯器

snvalid

未提供

sqrt

Sqr 函數

ssadd

AutoCAD.Application.ActiveDocument.SelectionSets.Add 方法

ssdel

AutoCAD.Application.ActiveDocument.SelectionSets.

SelectionSet.Delete 方法

ssget

AutoCAD.Application.ActiveDocument.SelectionSets.

SelectionSet.SelectOnScreen 方法

ssgetfirst

未提供

sslength

AutoCAD.Application.ActiveDocument.SelectionSets.

SelectionSet.Count 方法

ssmemb

比較物件的 ID 和 SelectionSet 成員

ssname

AutoCAD.Application.ActiveDocument.SelectionSets.

SelectionSet.Name 性質

ssnamex

未提供

sssetfirst

AutoCAD.Application.ActiveDocument.PickfirstSelectionSet

startapp

Shell 函數

start_dialog

使用對話方塊編輯器

start_image

使用對話方塊編輯器

start_list

使用對話方塊編輯器

strcase

StrConv 函數

strcat

& 運算子

strlen

Len 函數

subst

未提供

substr

Mid 函數

數位板

未提供

tblnext

AutoCAD.Application.ActiveDocument.collection_object.

Item 方法

tblobjname

AutoCAD.Application.ActiveDocument.collection_object.

Name 方法

tblsearch

AutoCAD.Application.ActiveDocument.collection_object.

Name 方法

term_dialog

使用對話方塊編輯器

terpri

未提供

textbox

AutoCAD.Application.ActiveDocument.space.object.

GetBoundingBox 方法

textpage

未提供

textscr

未提供

trace

未提供

trans

AutoCAD.Application.ActiveDocument.Utility.

TranslateCoordinates 方法

type

TypeName 函數

unload_dialog

使用對話方塊編輯器

untrace

未提供

vector_image

使用對話方塊編輯器

ver

AutoCAD.Application.Version 性質

vports

AutoCAD.Application.ActiveDocument.Viewports 集合

wcmatch

Like 運算子

while

While… Wend

write-char

Print 函數

write-line

Print 函數

xdroom

未提供

xdsize

未提供

zerop

使用 = 0 語法

    

2007年9月22日 星期六

[轉貼]C語言基礎入門

http://www.study-area.org/coobila/tutorial_409.html
[轉貼]C語言基礎入門
瘋鷲 發表
 
C語言基本架構介紹.以及基本觀念簡介.
 
/* My First C program */
#include
 
void main(void)
{
int i;
i = 1;
printf("Hi! C!\n");
printf("This is my %dst C program!",i);
}
 
上面是一個很基本的C語言範例..我們現在就以這個範例來說明C語言的架構..
 
/* ........ */
((C程式的註解))
凡是介於 /* 以及 */ 之間的文字..C語言的編譯器皆不會執行而略過..
這是讓程式的可閱讀性提高..不儘自己在看程式時不會忘記某些東西是做什麼的..
也讓其他人在閱讀你的程式時更容易閱讀(瞭解)..
 
#include
((C語言的包含檔))
一般的C語言程式中都會加上這一行..在部份的C語言編譯器如果你沒有加上這一行..
它並不會出任何錯誤..但較嚴謹的C語言編譯器則可能過不了關了..
事實上一個完整的C語言程式..應該要有這一行才對..
至於為什麼..就以後再替各為說明了....
 
void main(void)
{
........
}
((C語言的主體))
而main()是C語言程式的開頭..程式的內容是存於main()之後的{}中..
所有的C語言程式都是由main開始執行..是說即使將來C程式大到很複雜..
main()可能不是擺在程式的最開頭..但C語言編譯器仍會找到main()來開始執行..
由於C語言是自由格式..所以也可以寫成這樣 void main(void) { }
 
而void的意思本義是"無"或"沒有"的意思..所以在main之前..
是作為..沒有回傳值的意思..也就是當程式執行時..不會傳回訊息給DOS..
而main()之中的void則是表示不會由作業系統把命令參數傳入main()之中..
 
所以void main(void)是最簡單的C語言格式..表示main將不能由作業系統接收命令參數..
也不會將訊息傳回作業系統..如果將格式寫為 int main() ..則將會有回傳值給作業系統..
 
((敘述式))
我們在撰寫C語言程式就是要在此撰寫..我們稱這些為敘述..
比如 Printf("Hi! C!");
又比如 int i;
這些敘述是得寫在main()之後的{ }之內..
常見的敘述式有 : 宣告..算式..變數..設定..函式呼叫..迴圈..流程控制......
這些東西將會在後面一一介紹..而在寫完一行敘述式之後..
我們必需加上 ; 這個符號以作結尾..若不加上 ; 則編譯器則無法正確邊譯程式..
 
((變數))
在資料處理的過程中我們通常會需要一個空間來存放這個資料..
通常資料存放在記憶空間裡..為了方便存取資料..記憶空間每一個儲存單元都有編號碼..
我們稱這種號碼為記憶位址..不過記憶位址是一個一個單調的邊號..
並且數目往往非常龐大..不容易記憶..也不好稱呼..
所以我們使用了所謂的變數這種東西來代表記憶位址..變數是存放資料的地方..
也是電腦內部的一個記憶位址..只不過我們稱作變數..而非使用編號罷了..
 
((變數名))
C的變數名稱規定必需由英文字母..數字..或_購成..
第一個字元不可為數字..也不能與C語言内定的文字相同..比如 int..printf
而在使用變數前..需要先定義變數的型別(type)..否則將無法使用..
 
((定義))
又可稱宣告..宣告的基本類型有下列五種...
型別 記憶體 範圍
char (字元) 8 bit 0~255或-128~127
int (整數) 16 bit -32768~32767或0~65535
float (浮點數) 32 bit 3.4E-38~3.4E+38
double (倍精數) 64 bit 1.7E-308~1.7E+308
void (無回傳值) 0 bit 無
其他尚有許多種..將會在未來陸陸續續介紹..
最後更新日期: 4/24/2003 3:48:44 PM
 

[轉貼]c++語言程序設計超級簡單瞭解

[轉貼]c++語言程序設計超級簡單瞭解
Woody | 2005-12-24 | From
千里之行,始於足下。
 
這是非常非常非常表面的介紹,是為一點都不知道的朋友寫著玩的。也許你看過之後什麼都沒有
收穫到,一直罵作者是個sb.那麼我請您原諒耽誤了您的時間,先表示抱歉了。呵呵
 
一。結構程序設計方法,要點。.三種基本控制結構。順序,循環,選擇
選擇結構,兩種。if switch
if形式1.if� 2. if else 3. if else if else if
switch(多分支選擇,Woody註釋)
switch
{case 常量表達式1 :語句1
case 常量表達式n :語句n
default:語句n+1
}
循環,while(沒有什麼解釋的,先判斷,後執行,Woody註釋)
例子,求1到100整數和
#include� (套入函數,Woody註釋)
 void main()���� (下面主體,Woody註釋)
 {��������
  int i, sum = 0;�� (定義i,賦予數值1,總和開始為0,Woody註釋)
  i = 1;
  while(i <= 100) (循環下面部分,當i<100,判斷條件,Woody註釋)
  {
   sum += i;� (加,一直加,Woody註釋)
   i++;
  }���� (循環結束,Woody註釋)
  cout<<"sum = "< }
do-while 循環(先執行,後判斷)
例子,還舉上面那個,就是求1到100整數和
#include
 void main()
 {
  int i, sum=0;�� (定義賦值。Woody註釋)
  i = 1;
  do������ (下面是循環,Woody註釋)
  {
   sum += i;
   i++;
  }while(i<=100);� (條件,如果條件滿足就循環,Woody註釋)
  cout<<"sum = "< }
for循環,
例子,還是上面那個,求1到100整數和
#include
 void main()
 {
  for(sum = 0, i = 1; i <= 100; i++)sum += i;
  cout<<"sum = "< }
(就是1-2-3-2-3-2-3(1指的是表達式),如果2不滿足,結束。Woody註釋)
 
二,語言基礎:
看例子比較方便瞭解,
//simple.cpp是一個簡單的C++程序 (標準註釋方法,不執行,我沒有用這種註釋,Woody註釋)
#include (一個文件頭,Woody註釋)
void main(void)� (函數,Woody註釋)
{������ (main函數體開始標記,Woody註釋)
int i;���� (聲明一個變量,Woody註釋)
cout<<"jinzhou sb!";��� (輸出,後面的東西,Woody註釋)
cout<<"請輸入一個整數:\n"; (\n是換行的意思,<<輸出符號,Woody註釋)
cin>>i;������� (輸入,後面的東西。Woody註釋)
cout<<"輸入的整數是:";�
cout (Visual C++6編譯連接運行後,就是屏幕上出現「jinzhou sb!請輸入一個整數」
然後你隨便輸入一個,回車,得到「輸入的整數是:」,就是你輸入的那個,大
概明白是這麼個格式就行了。注意一點的就是,函數定義返回類型為void,不用返回
,如果定義為int,則不同。如下。Woody註釋。)
int main()
{
 …
 return 0;
}
(還有就是c++區分大小寫,一般命令小寫多,常量大寫多。變量混用多。Woody註釋)
數據類型略過。大多類似的。
變量使用舉一個簡單的例子。
#include
int main (void)�
{
int workDays = 5;�� (定義一個整型變量,初始化為5,Woody註釋)
float workHours, payRate, weeklyPay;� (實型變量三個,Woody註釋)
workHours = 7.5; payRate = 38.55;� (賦值,Woody註釋)
weeklyPay = workDays * workHours * payRate; (乘法運算,Woody註釋)
cout << "Weekly Pay = " << weeklyPay << '\n'; (輸出換行,Woody註釋)
}
 
就是計算工資呢。
例子,打印給定半徑的圓的面積和周長(有常量定義的實例程序)
void main()
{
 const double PI = 3.1415926535898;� (定義圓周率常量PI,Woody註釋)
 double radius;� (定義圓半徑變量,Woody註釋)
 double area;� (定義圓面積變量,Woody註釋)
 double circumference;� (定義圓周長變量,Woody註釋,)
 cout << "輸入半徑 : ";� (輸出,屏幕顯示,Woody註釋)
 cin >> radius;��� (輸入,Woody註釋)
 area = PI*radius*radius; (面積公式,Woody註釋)
 circumference = 2.0*PI*radius;� (周長共識,Woody註釋)
 cout << "面積 " << radius << " is "
 << area << " \n";
 cout << "周長是 " << circumference� (輸出到屏幕,Woody註釋)
<< ";
}
(注意定義常量的形式為 const 類型 名字 = 值。)
 

三,運算符和表達式
要注意的是:
+ + 自加(前綴) ++valuel + 10 // 得出16,valuel變為6
+ + 自加(後綴) valuel++ + 10 // 得出15,valuel變為6
- - 自減(前綴) --valuel + 10 // 得出14,valuel變為4
- - 自減(後綴) valuel-- + 10 // 得出15,valuel變為4
(其實質就是用'++'代替了"+1"(後綴)和"1+"(前綴)、'-'代替了"-1"。Woody註釋)
 
!� 邏輯非� !(5 = = 5) // 得出 0�� (0是假,1是真,Woody註釋)
&&� 邏輯與� 5 < 6 && 6 < 6 // 得出 0
||� 邏輯或� 5 < 6 || 6 < 5 // 得出 1
~� 取反 ~'\011' // 得出 '\366'
&� 逐位與 '\011' & '\027' // 得出'\001'
|� 逐位或 '\011' | '\027' // 得出'\037'
^� 逐位異或 '\011' ^ '\027' // 得出'\036'
<< 逐位左移 '\011' << 2 // 得出'\044'
>> 逐位右移 '\011' >> 2 // 得出'\002'
實例 10進制值 二進制值
x� 011�� 0 0 0 0 1 0 0 1
y� 027�� 0 0 0 1 0 1 1 1
~x� 366�� 1 1 1 1 0 1 1 0
x & y 001�� 0 0 0 0 0 0 0 1
x | y 037�� 0 0 0 1 1 1 1 1
x ^ y 036�� 0 0 0 1 1 1 1 0
x << 2 044� 0 0 1 0 0 1 0 0
x >> 2 002� 0 0 0 0 0 0 1 0
運算例子,
#include
void main( )
{
 int a,b, m=3,n=4;
 a=7*2+-3%5-4/3;//-3%5=-3,4/3=1
 b=m++ - --n;
 cout<}
結果10 0 4 3
例子
#include
void main( )
{
 char x='m',y='n';
 int n;
 n=x cout < n=x==y-1;
 cout< n=('y'!='Y')+(5<3)+(y-x==1);
 cout <}
結果 1 1 2
 
四,流程控制語句。
if語句;if-else語句;switch語句;while語句;do-while語句;for語句;break語句;continue語句
(都是簡單英語,沒有什麼解釋的,哈哈,Woody註釋)
五,函數。
這個解釋多多網上。
舉例子;求長方形面積。
#include� (C++庫函數說明,Woody註釋)
int area(int length, int width);� ( area函數說明,定義長寬,Woody註釋)
void main()�� (主函數,程序從該函數開始執行,Woody註釋)
{
 int this_length, this_width;� (定義長寬,Woody註釋)
 cout << "輸入長度: "; (cout和cin,就是函數,輸出後面字符串。Woody註釋)
 cin >> this_length;� (輸入,Woody註釋)
 cout << "輸入寬度: ";� (輸出那句話到屏幕,Woody註釋)
 cin >> this_width;
 cout << "\n";���� (回車,Woody註釋)
 cout << "面積 " << this_length << "x" << this_width;
 cout << " 長方形面積是 " << area(this_length, this_width); (調用area函數,Woody註釋)
}
int area(int length, int width) (area函數定義,Woody註釋)
{
 int number;
 number = length * width;
 return number;
}
例子,比較大小的。
#include
int max(int a,int b) (調用這個函數,Woody註釋)
{
 if(a>b)return a; (如果則怎麼怎麼的,Woody註釋)
 else return b;
}����� (以上是定義max函數的,Woody註釋)
void main()
{
 int max(int a,int b);
 int x,y,z;
 cout<<"輸入兩個數"< cin>>x>>y;
 z=max(x,y);������ (z為比較結果,Woody註釋)
 cout<<"最大的數="<}
例子
 
#include
void Foo (int num)
{
 num = 0;
 cout << "num = " << num << '\n';
}
int main (void)
{
 int x = 10;
 Foo(x);
 cout << "x = " << x << '\n';
 return 0;
}
(這個更簡單,不多說,主要是明白num是一個形參變量num,x是實參變量,實參調用時
送到形參,但是因為內存單元不同,即使num賦值0,並不影響x的值,道理大概理解了
就好,Woody註釋)
(不多解釋了,相關詳細內容,要找資料好好揣摩,這裡只是簡單說一下,Woody註釋)
 
六,數組與字符串。
#include
void main(void)
{
 int marks[4] = ; (這個就是數組,就是這個格式,Woody註釋)
 cout<<"第二個元素是:"<}
(這就是定義數組了,找第二個元素的。92。Woody註釋)
例子,求字符串的長度 (這個是字符串的,Woody註釋。)
#define MAXLEN 80
#include
void main(void)
{
 char str[MAXLEN + 1];� (最長加1,因為是從0計算的,Woody註釋)
 int l;����� (定義長度,這個符號可不是1啊,Woody註釋)
 printf("Input a string:"); (輸出,告訴你開始輸入,Woody註釋)
 scanf("%s",str);��� (檢查你輸入的,如果空,Woody註釋)
 l = 0;������ (長度0,Woody註釋)
 while(str[l] != '\0') (非空,Woody註釋)
 l ++;������ (加加,數出來,Woody註釋)
 printf("The length of this string is %d\n",l); (輸出結果回車,Woody註釋)
}
 
七,指針與引用
指針就是在內存中的地址,它可能是變量的地址,也可能是函數的入口地址。
引用為變量提供了一個別名,變量通過引用訪問與通過變量名訪問是完全等價的。
引用提供了與指針相同的能力,但比指針更為直觀,更易於理解。
int d =1;
int* const p =&d
(有const表示不可修改,p是一個常量指針,它指向一個整型變量。就是d,p本
身不能修改,但它所指向的內容卻可以修改:*p =2;這個不大好說,請查閱相
嚴謹詳細資料。關Woody註釋。)
例如:
#include
#define SIZE 10�
void main()
{
 int array[SIZE]; (聲明整數數組,Woody註釋)
 int *p=array;�� (定義一個整型指針p,給他數組首地址,Woody註釋)
 int i ;���� (定義變量i,Woody註釋)
 for(i=0;i  array=i;
 for(i=0;i  cout<<*p++< p=&array[8];�� (給他array[8]的地址,Woody註釋)
 cout<<"array[8]="<<*p< cout<<"array[8]="<}�
(兩個值是一樣的,因為從0開始,所以都是對數組第9個元素的訪問。Woody註釋)
例子:折半查找函數
int BinSearch (char *item, char *table[],�� (就是在table中查找是否含有item的元素)
int n, int (*Compare)(const char*, const char*))� Compare是一個比較函數指針,Woody註釋)
{
 int bot = 0;�� (底部0,Woody註釋)
 int top = n - 1;� (頂部n-1,Woody註釋)
 int mid, cmp;� (定義比較變量,比較,Woody註釋)
while (bot <= top) (比較當然需要循環,循環條件,意思就是不空,Woody註釋)
 {����� (以下循環內容)
mid = (bot + top) / 2;� (mid等於,全部除以2,就是一半,Woody註釋)
if ((cmp = Compare(item,table[mid])) == 0) (如果恰好相等,Woody註釋)
 return mid;� ( 就是它,Woody註釋)
 else if (cmp < 0) (不相等,Woody註釋)
    top = mid - 1; ( 查找數組的下半部,Woody註釋)
   else
    bot = mid + 1;� ( 查找數組的上半部,Woody註釋)
 }
return -1; (上面循環之後,返回-1,沒有找到,因為n就是0了。Woody註釋)
}
 
例如。
char *cities[] = {"Beijing", "Shanghai", "Tianjin", "Zhongqing"};
cout << BinSearch("Tianjin ", cities, 4, strcmp) << '\n'
輸出結果2
(就是,給出一個數組,找找「Tianjin」在四個中的位置,2就是在第三個位置。)
 
八。結構 鏈表
結構(struct)數據類型,它能夠識別一組相關的數據。
鏈表也是表示線性數據最有用的方法之一,用鏈表保存線性數據,可以克服數組的問題
舉例
#include
#include
struct Person_Info {� (個人信息表,下面是相關內容。Woody註釋)
 char name[10];
 int age;
 long ssn;
};
void main (void)
{
 Person_Info* p1;�� (給個指針,Woody註釋)
 p1 = new Person_Info;� (申請內存,Woody註釋)
 p1->age = 27; ( 給age成員賦值,Woody註釋)
 strcpy(p1->name,"jinzhou"); (給name成員賦值 ,Woody註釋)
 cout << "Name: " << p1->name << endl; ( 打印name成員,Woody註釋)
 cout << "Age: " << p1->age << endl; (打印age成員,Woody註釋)
 delete p1;�������� (釋放申請的內存,Woody註釋)
}
簡單例子學生結構的實例
struct stu
  {
   int num;
   int score;
   stu *next;
  }
(明白這個意思就行了,Woody註釋)
 
九,編譯預處理
C++提供的編譯預處理功能主要有以下三種:(一) 宏定義(二) 文件包含(三) 條件編譯
宏定義例子;
#include , (一定要有,或者出錯,Woody註釋)
#define CUBE_THREE 3*3* (用簡單宏定義定義了一個符號常量"CUBE_THREE")
void main()
{
 int a;����� (定義變量,Woody註釋)
 a=CUBE_THREE;�� (賦予值,就是a=3*3*3,Woody註釋)
 cout<<"a is"<}
(這個意思主要是說可以把常用的東西定義為宏。這個不帶參數,帶參數的略。Woody註釋)
文件包含類的略。
例子:條件編譯命令的一個例子
#include
#define TIME
void main()
{
 #ifdef TIME������ (如果TIME被定義過,輸出下面句話。Woody註釋)
  cout<<"Now begin to work"< #else������� (如果沒有定義,輸出下面的,Woody註釋)
  cout<<"You can have a rest"<