青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品


CString sPicturePath = "C:\Users\Public\Pictures\Sample Pictures\八仙花.jpg";

CString sPicturePara= "shimgvw.dll ImageView_Fullscreen "+ sPicturePath ;

 ShellExecute(NULL, NULL, "rundll32.exe", 
    sPicturePara,"C:\\WINDOWS\\system32", SW_SHOW);

posted @ 2012-06-18 16:41 Mumoo 閱讀(1739) | 評論 (0)編輯 收藏
 

方法一 :

Step 1: 點擊[開始]-[控制面板];

Step 2: 點擊[輕松訪問];

Step 3: 點擊[使鼠標更易于使用];

Step 4: 在[防止將窗口移動到屏幕邊緣時自動排列窗口]前打勾.

OK

ps:此操作同時還會關閉Win7的窗口搖曳模式(即鼠標拖住某個窗口搖曳,然后其他的窗口會自動最小化,再次搖曳又會恢復原狀),想要關閉自動最大化的朋友看來只能舍棄這個功能了.

 

方法二 :

Step 1: 使用快捷鍵Win+R打開運行窗口;

Step 2: 在其中輸入regedit,按回車或點擊確定;

Step 3: 依次雙擊HKEY_CURRENT_USER/Control Panel/Desktop;

Step 4: 在右邊出現的窗口中找到WindowArrangementActive并雙擊之.

Step 5: 將彈出窗口中的數值"1"改為"0".

OK,退出,然后再注銷重新登陸或者重啟電腦,搞定..

posted @ 2012-06-18 10:45 Mumoo 閱讀(433) | 評論 (0)編輯 收藏
 
int nTest = ((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck();
int nTest1 = ((CButton *)GetDlgItem(IDC_RADIO2))->GetCheck();//單選框  
if (nTest == 1)
{
AfxMessageBox("你好a");
}
else if (nTest1 == 1)
{
AfxMessageBox("你好b");
}
else
{
UpdateData(TRUE);
m_comMsg = "你好";
UpdateData(FALSE);
}

//m_sSeclectLevel:靜態框的value變量
//m_ctrlSecretLevel:復選框變量

m_ctrlSecretLevel.GetWindowText(m_sSeclectLevel);

if (m_sSeclectLevel.IsEmpty())
{
MessageBox(PRINT_MSG, "打印監控", MB_OK | MB_ICONERROR);
}
else
{
LOG("確認打印,打印密級為 %s", m_sSeclectLevel);
OnOK();
}//復選框


改變提示信息字體顏色
Class -> 類名 ->屬性 -> Message -> WM_CTLCOLOR -> <Add> OnCtlColor
int nId = pWnd-> GetDlgCtrlID();
if(nCtlColor == CTLCOLOR_STATIC)
{
if(nId == IDC_STATIC1)
{
pDC-> SetTextColor((COLORREF)(RGB(255,0,0)));
}
}
posted @ 2012-06-11 14:58 Mumoo 閱讀(392) | 評論 (0)編輯 收藏
 
列表控件可以看作是功能增強的 ListBox,它提供了四種風格,而且可以同時顯示一列的多中屬性值。
MFC 中使用 CListCtrl 類來封裝列表控件的各種操作。
創建一個窗口:可通過調用 BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
dwStyle 中可以使用以下一些列表控件的專用風格:
l LVS_ICON ,LVS_SMALLICON ,LVS_LIST, LVS_REPORT 這四種風格決定控件的外觀,同時只可以選擇其中一種,分別對應:大圖標顯示,小圖標顯示,列表顯示,詳細報表顯示

l LVS_EDITLABELS 結點的顯示字符可以被編輯,對于報表風格來講可編輯的只為第一列。
l LVS_SHOWSELALWAYS 在失去焦點時也顯示當前選中的結點
l LVS_SINGLESEL 同時只能選中列表中一項
也可通過listcontrl對話框的 View 屬性->Report 設置

設置為Report屬性后,若要ListControl顯示為列表狀,則在Init函數中,添加:
ListView_SetExtendedListViewStyle(m_listctrl.m_hWnd, LVS_EX_GRIDLINES|LVS_EX_ONECLICKACTIVATE|LVS_EX_FULLROWSELECT);

int InsertItem( int nItem, LPCTSTR lpszItem ); 插入行

nItem:指明插入位置
lpszItem:為顯示字符。
除 LVS_REPORT 風格外其他三種風格都只需要直接調用 InsertItem 就可以了,但如果使用報表風格就必須先設置列表控件中的列信息。

int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat , int nWidth, int nSubItem); 插入列

iCol:為列的位置,從零開始
lpszColumnHeading:為顯示的列名
nFormat:為顯示對齊方式
nWidth:為顯示寬度
nSubItem:為分配該列的列索引。

BOOL SetItemText( int nItem, int nSubItem, LPTSTR lpszText );設置每列的顯示字符

nItem:為行位置
nSubItem:為列位置
lpszText:為顯示字符

下面的代碼演示了如何設置多列并插入數據:
m_list.SetImageList(&m_listSmall,LVSIL_SMALL);//設置 ImageList
m_list.InsertColumn(0,"Col 1",LVCFMT_LEFT,300,0);//設置列
m_list.InsertColumn(1,"Col 2",LVCFMT_LEFT,300,1);
m_list.InsertColumn(2,"Col 3",LVCFMT_LEFT,300,2);

m_list.InsertItem(0,"Item 1_1");//插入行
m_list.SetItemText(0,1,"Item 1_2");//設置該行的不同列的顯示字符
m_list.SetItemText(0,2,"Item 1_3")

posted @ 2012-06-07 14:38 Mumoo 閱讀(3955) | 評論 (0)編輯 收藏
 

原文地址:http://hi.baidu.com/miliear/blog/item/1da2a2d88fc08b3211df9bc3.html

1. 屬性列表:
    SelectionMode    組件中條目的選擇類型,即多選(Multiple)、單選(Single)
    Rows             列表框中顯示總共多少行
    Selected         檢測條目是否被選中
    SelectedItem     返回的類型是ListItem,獲得列表框中被選擇的條目
    Count            列表框中條目的總數
    SelectedIndex    列表框中被選擇項的索引值
    Items            泛指列表框中的所有項,每一項的類型都是ListItem

2. 取列表框中被選中的值
     ListBox.SelectedValue

3. 動態的添加列表框中的項:
     ListBox.Items.Add("所要添加的項");

4. 移出指定項:
     //首先判斷列表框中的項是否大于0
     If(ListBox.Items.Count > 0 )
     {
          //移出選擇的項
          ListBox.Items.Remove(ListBox.SelectedItem);
     }

5. 清空所有項:
     //首先判斷列表框中的項是否大于0
     If(ListBox.Items.Count > 0 )
     {
          //清空所有項
          ListBox.Items.Clear();
     }

6. 列表框可以一次選擇多項:
     只需設置列表框的屬性 SelectionMode="Multiple",按Ctrl可以多選

7. 兩個列表框聯動,即兩級聯動菜單
     //判斷第一個列表框中被選中的值
     switch(ListBox1.SelectValue)
     {
          //如果是"A",第二個列表框中就添加這些:
          case "A"
                ListBox2.Items.Clear();
                ListBox2.Items.Add("A1");
                ListBox2.Items.Add("A2");
                ListBox2.Items.Add("A3");
          //如果是"B",第二個列表框中就添加這些:
          case "B"
                ListBox2.Items.Clear();
                ListBox2.Items.Add("B1");
                ListBox2.Items.Add("B2");
                ListBox2.Items.Add("B3");
     }

8. 實現列表框中項的移位
     即:向上移位、向下移位
     具體的思路為:創建一個ListBox對象,并把要移位的項先暫放在這個對象中。
     如果是向上移位,就是把當前選定項的的上一項的值賦給當前選定的項,然后
     把剛才新加入的對象的值,再附給當前選定項的前一項。
     具體代碼為:
      //定義一個變量,作移位用
      index = -1;
      //將當前條目的文本以及值都保存到一個臨時變量里面
      ListItem lt=new ListItem (ListBox.SelectedItem.Text,ListBox.SelectedValue);
      //被選中的項的值等于上一條或下一條的值
      ListBox.Items[ListBox.SelectedIndex].Text=ListBox.Items[ListBox.SelectedIndex + index].Text;
      //被選中的項的值等于上一條或下一條的值
      ListBox.Items[ListBox.SelectedIndex].Value=ListBox.Items[ListBox.SelectedIndex + index].Value;
      //把被選中項的前一條或下一條的值用臨時變量中的取代
      ListBox.Items[ListBox.SelectedIndex].Test=lt.Test;
      //把被選中項的前一條或下一條的值用臨時變量中的取代
      ListBox.Items[ListBox.SelectedIndex].Value=lt.Value;
      //把鼠標指針放到移動后的那項上
      ListBox.Items[ListBox.SelectedIndex].Value=lt.Value;

9. 移動指針到指定位置:
      (1).移至首條
          //將被選中項的索引設置為0就OK了
          ListBox.SelectIndex=0;
      (2).移至尾條
          //將被選中項的索引設置為ListBox.Items.Count-1就OK了
          ListBox.SelectIndex=ListBox.Items.Count-1;
      (3).上一條
          //用當前被選中的索引去減 1
          ListBox.SelectIndex=ListBox.SelectIndex - 1;
      (4).下一條
          //用當前被選中的索引去加 1
          ListBox.SelectIndex=ListBox.SelectIndex + 1;
 

posted @ 2012-06-06 17:34 Mumoo 閱讀(6867) | 評論 (0)編輯 收藏
 
讀取XML文件:TiXmlDocument XmlDoc(sJobXML);
                   if (!XmlDoc.LoadFile())
                   {
                       LOG("GetJobXMLInfo:加載XML文件%s失敗", sJobXML);
                       return FALSE;
                     }

獲取根結點:TiXmlElement* rootElement = XmlDoc.RootElement(); 

獲取根結點的第一個標簽值:TiXmlElement* pElement= rootElement->FirstChildElement(); 

獲取標簽值的第一個鍵值: TiXmlElement* pChildElement= pElement->FirstChildElement(); 

獲取該鍵值的所有屬性值:while ( pChildElement) 
                                 {
                                    TiXmlAttribute* pAttribute= pChildElement->FirstAttribute(); //鍵值的第一個屬性值
                                    while ( pAttribute) 
                                    {
                                          // pAttribute->Name() ——屬性名稱;pAttribute->Value()——屬性值
                                         pAttribute= pAttribute->Next(); //依次獲取其他屬性值
                                     }

獲取鍵值的第一個子屬性值   TiXmlElement* pSecElement = pChildElement->FirstChildElement();
                                    //pSecElement ->GetText()——子屬性的屬性值
    
 依次獲取鍵值的n個子屬性值   TiXmlElement* pChildElement= pChildElement->NextSiblingElement();
                                  }
posted @ 2012-06-06 17:27 Mumoo 閱讀(819) | 評論 (0)編輯 收藏
 

 


 CString cstr(asdd);
 const char* ch = (LPCTSTR)cstr;

 CString.format("%s", char*);

 CString cstr(asdd);
 const char* ch = (LPCTSTR)cstr;

 char* = (LPTSTR)(LPCTSTR)cstr


一、定義

1、CString:動態的TCHAR數組。它是一個完全獨立的類,封裝了+等操作符和字符串操作方法。

2、BSTR:專有格式的字符串(需要使用系統函數來操縱)。定義為:typedef OLECHAR FAR* BSTR

3、LPCTSTR:常量的TCHAR指針。定義為:typedef const char* LPCTSTR

二、要點

1、char*:指向ANSI字符數組的指針,其中每個字符占8位(有效數據是除掉最高位的其他七位),它保持

了與傳統C/C++的兼容。

2、LPSTR:指向一個以“\0”結尾的ANSI字符數組的指針,可與char*互換使用,它通常在Win32中使用。

其中LP表示長指針(long pointer)。

3、LPCSTR:該數據類型的特性在于它的實例不能被使用它的API函數改變,除此之外與LPSTR等同。其

中C表示常量(CONSTANT)。

4、在Win16下長指針(LP)和短指針(P)有區別,而在Win32下它們是沒有區別的,都是32位。

5、TCHAR在采用Unicode方式下編譯時為wchar_t,在普通編碼方式下編譯時位char。

三、Unicode標準

1、為了滿足程序代碼國際化的需要,業界推出了Unicode標準,它提供了一種簡單和一致的表示字符串的

方法,所有字符中的字節都是16位(兩個字節)的值,其數量也可以滿足幾乎世界上所有書面語言字符的

編碼需求,開發程序時使用Unicode(類型位wchar_t)是一種被鼓勵的做法。

2、LPWSTR和LPCWSTR由此產生,它們的含義類似于LPSTR和LPCSTR,不同的是字符數據wchar_t為

16位,而char卻為8位。

四、TCHAR數據類型

TCHAR數據類型是為了實現ANSI和Unicode兩種編碼的通用而提出來的

1、如果定義了_UNICODE,則聲明如下:

typedef wchar_t TCHAR;

2、如果沒有定義_UNICODE,則聲明如下:

typedef char TCHAR;

這樣就可以讓CString、LPTSTR和LPCTSTR中的每個字符都是TCHAR類型,而不考慮它們的編碼格

式。而且CString是一個封裝好了的類,更是大大地方便了用戶的使用。

五、VC++中常用數據類型之間的轉換

1、定義

int i=100;

long l=2001;

float f=300.2;

double d=12345.119

char username[]="2008北京奧運";

char temp[200];

char* buf;

CString str;

_variant_t v1;

_bstr_t v2;

2、其他數據類型到字符串的轉換

(1)短整形int->字符串

itoa(i,temp,10); //按十進制把i轉換為字符串存入temp中

itoa(i,temp,2); //按二進制把i轉換為字符串存入temp中

(2)長整形long->字符串

ltoa(l,temp,10);

3、從其他包含了字符串的變量中獲取指向該字符串的指針

(1)從CString變量中獲取字符串

str="祈福四川";

buf=(LPSTR)(LPCTSTR)str;

(2)從BSTR類型的_varitant_t變量中獲取字符串

v1=(_bstr_t)"程序員";

buf=_com_util::ConvertBSTRToString((_bstr_t)v1);

4、字符串轉換為其他數據類型

strcpy(temp,"123");

(1)i=atoi(temp); //字符串->短整型int

(2)l=atol(temp); //字符串->長整形long

(3)d=atof(temp); //字符串->浮點型double

5、其他數據類型轉換到CString

(1)使用CString的成員函數Format來轉換

A:str.Format("%d",i); //短整型int->CString

B:str.Format("%f",f); //浮點數float->CString

(2)支持CString構造函數的數據類型可以直接賦值,例如char*

str=username;

六、BSTR、_bstr_t和CCombBSTR

BSTR:指向字符串的32位指針,_bstr_t和CComBSTR都是對它的封裝。

1、char*->BSTR的轉換

BSTR b=_com_util::ConvertStringToBSTR("數據");

注:使用之前需要加上comutil.h頭文件

2、BSTR->char*的轉換

char* p=_com_util::ConvertBSTRToString(b);

七、VARIANT、_variant_t和COleVariant

1、對于VARIANT變量的賦值:首先給vt成員賦值,指明數據類型。再對聯合結構中相同數據類型的變量賦

值(可參考VC98\Inlude\OAIDL.H頭文件中關于tagVARIANT結構體的定義)。舉例如下:

VARIANT va;

va.vt=VT_l4; //指明數據類型

va.lVal=2008;

2、對于不馬上賦值的VARIANT,最好先使用void VariantInit(VARIANTARG FAR* pvarg)函數對其進行初始

化,其本質是將vt設置為VT_EMPTY。vt與常用數據類型的對應關系(略)。

3、_variant_t是VARIANT的封裝類,賦值可以使用強制類型轉換,其構造函數會自動處理這些數據類型。

例如:

long l=222;

int i=100;

_variant_t lVal(l);

lVal=(long)i;

4、COleVariant與_variant_t的使用方法基本一樣,示例如下:

COleVariant v3="字符串",v4=(long)1999;

CString str=(BSTR)v3.pbstrVal;

long l=v4.lVal;

八、其他

1、對消息的處理中,我們通常需要將WPARAM或LPARAM等32位數據(DWORD)分解成兩個16位數據

(WORD),例如:

LPARAM lParam;

WORD loValue=LOWORD(lParam); //取低16位

WORD hiValue=HIWORD(lParam); //取高16位

2、對于16位的數據(WORD),我們可以使用同樣的方法分解成高低兩個8位的數據(BYTE),例如:

WORD wValue;

BYTE loValue=LOBYTE(wValue); //取低8位

BYTE hiValue=HIBYTE(wValue); //取高8位

3、如何將CString類型的變量賦給char*類型的變量

(1)CString::GetBuffer函數

char* p;

CString str="hello";

p=str.GetBuffer(str.GetLength());

str.ReleaseBuffer();

(2)strcpy函數

CString str("aaaaaaaa");

strcpy(str.GetBuffer(10),"aa");

str.ReleaseBuffer();

GetBuffer(int n)函數用于獲取字符數組,其中n表示字符數組的長度,使用完該字符數組之后一定要調用

ReleaseBuffer()函數來釋放這個字符數組。

注:在能夠使用const char*的地方,通常不要使用char*

(3)memcpy函數

CString mCS=_T("cxl");

char mch[20];

memcpy(mch,mCS,20);

(4)LPCTSTR強制類型轉換(不建議使用)

char* ch;

CString str;

ch=(LPSTR)(LPCTSTR)str;

str="good!";

sprintf(ch,"%s",(LPTSTR)(LPCTSTR)str);

(5)CString->LPTSTR->char*

CString Msg;

Msg=Msg+"abc";

LPTSTR lpsz;

lpsz=new TCHAR[Msg.GetLength()+1];

_tcscpy(lpsz,Msg);

char* psz;

strcpy(psz,lpsz);

4、如何將CString類型的變量賦給const char*類型的變量

char* a[100];

CString str("abcdef");

strncpy(a,(LPCTSTR)str,sizeof(a));

strncpy(a,str,sizeof(a));

注:編譯器會自動將CString類型的變量轉換為const char*類型

5、如何將CString類型的變量賦給LPCTSTR類型的變量

CString cStr;

const char* lpctStr=(LPCTSTR)cStr;

6、如何將LPCTSTR類型的變量賦給CString類型的變量

LPCTSTR lpctStr;

CString cStr=lpctStr;

7、如何將char*類型的變量賦給CString類型的變量

(1)直接賦值:CString myString="This is a test";

(2)構造函數:CString s1("Tom");

8、如何將CString類型的變量賦給char[](字符串)類型的變量

(1)sprintf函數

CString str="good!";

char temp[200];

sprintf(temp,"%s",(LPCSTR)str);

注:強制類型轉換(LPCSTR)str與(LPTSTR)(LPCTSTR)str等同,使用的區別僅在于CString對象是變量

還是常量。LPCTSTR表示const char*,它得到的字符串是不可寫的!如果將其強制轉換位LPTSTR(去

掉const),是極為危險的!要得到char*,應該使用GetBuffer或GetBufferSetLength函數,用完之后再調

用ReleaseBuffer函數。

(2)strcpy函數

CString str;

char c[256];

strcpy(c,str);

str="Hello";

strcpy((char*)&c,(LPCTSTR)str);

九、關于CString的使用

1、指定CString形參

(1)對于大多數需要字符串參數的函數,最好將函數原型中的形參指定為一個指向字符(LPCTSTR),而非

CString的const指針。當將形參指定為指向字符的const指針時,可將指針傳遞到TCHAR數組(如字符串["hi

here"]或傳遞到CString對象)。CString對象將自動轉換成LPCTSTR。任何能夠使用LPCTSTR的地方也能

夠使用CString對象。

(2)如果某個形參將不會被修改,則也將該參數指定為常量字符串引用(const CString&)。如果函數要修改

該字符串,則刪除const修飾符。如果需要默認為空值,則將其初始化為空字符串([""]),如下所示:

void AddCustomer(const CString& name,const CString& address,const CString& comment="");

(3)對于大多數函數的結果,按值返回CString對象即可。

2、串的基本運算

char s1[20]="dir/bin/appl",s2[20]="file.asm",s3[30],*p;

int result;

(1)求串長

int strlen(char* s); //求串s的長度

例:printf("%d",strlen(s1));

(2)串復制

char* strcpy(char* to,char* from); //將from串復制到to串中,并返回to開始處的指針

例:strcpy(s3,s1);

(3)串聯接

char* strcat(char* to,char* from); //將from串復制到to串的末尾

例:strcat(s3,"/");

strcat(s3,s2);

(4)串比較

int strcmp(char* s1,char* s2); //比較s1和s2的大小,s1<s2(小于0)、s1=s2(0)和s1>s2(大于0)

例:result=strcmp("baker","Baker"); //大于0

result=strcmp("12","12"); //等于0

result=strcmp("Joe","joseph"); //小于0

(5)字符定位

char* strchr(char* s,char c); //找c在字符串s中第一次出現的位置。若找到,則返回該位置;否則NULL。

例:p=strchr(s2,'.'); //p指向"file"之后的位置

(6)注意

A:上述操作是最基本的,其中后4個操作還有變種形式:strncpy、strncath和strnchr。

B:其他的串操作見C的<string.h>頭文件。在不同的高級語言中,對串運算的種類及符號都不盡相同。

C:其余的串操作一般可由這些基本操作組合而成。

例:求子串的操作可如下實現

//s和sub是字符數組,用sub返回串s的第pos個字符長度為len的子串

void substr(char* sub,char* s,int pos,int len)

{

//其中0<=pos<=strlen(s)-1,且數組sub至少可容納len+1個字符

if(pos<0 || pos>strlen(s)-1 ||len<0)

Error("parameter error!");

//從s[pos]起復制至多len個字符到sub

strncpy(sub,*s[pos],len);

}

posted @ 2012-06-04 09:05 Mumoo 閱讀(2732) | 評論 (0)編輯 收藏
 

文件函數,顧名思義就是處理文件用的函數。使用這些文件處理函數前,必須先包含頭文件FileFunc.nsh。該頭文件目前包含如下一些函數:Locate、GetSize、DriveSpace、GetDrives、GetTime、GetFileAttributes、GetFileVersion、GetExeName、GetExePath、GetParameters、GetOptions、GetRoot、GetParent、GetFileName、GetBaseName、GetFileExt。文件處理函數的主要作用有文件搜索、獲取路徑、獲取驅動器信息、獲取命令行參數等等,應用甚廣。下面我們就將該頭文件中的函數作用作以簡單介紹。

  • Locate - 搜索指定文件夾中符合指定過濾文件大小或指定文件過濾名的文件,并根據選項返回查找的文件路徑、文件夾和名稱
  • GetSize - 搜索文件、指定文件過濾名的文件或文件夾的大小或數量
  • DriveSpace - 獲取驅動器的全部、已用和可用空間
  • GetDrives - 查找系統中所有可用驅動器
  • GetTime - 獲取本地或系統時間;獲取文件訪問、創建和修改時間
  • GetFileAttributes - 獲取文件或文件夾屬性
  • GetFileVersion - 獲取可執行文件的版本信息
  • GetExeName - 獲取安裝程序運行完整路徑
  • GetExePath - 獲取安裝程序運行所在文件夾
  • GetParameters - 獲取安裝程序運行命令行參數
  • GetOptions - 獲取安裝程序運行命令行選項的值
  • GetRoot - 獲取給定路徑所屬的根目錄
  • GetParent - 獲取給定路徑的上層目錄
  • GetFileName - 獲取文件路徑中的文件名稱
  • GetBaseName - 獲取文件路徑中的文件基本名
  • GetFileExt - 獲取文件路徑中的文件擴展名
posted @ 2012-05-15 14:00 Mumoo 閱讀(982) | 評論 (0)編輯 收藏
 

轉自:http://hi.csdn.net/jinglidong

文本函數,顧名思義就是處理文本文件的函數。使用這些文本函數前,必須先包含頭文件TextFunc.nsh。有些函數需要預聲明,這個在幫助中有詳細介紹,具體可查閱幫助。該頭文件目前包含如下一些函數:LineFind、LineRead、FileReadFromEnd、LineSum、FileJoin、TextCompare、TextCompareS、ConfigRead、ConfigReadS、ConfigWrite、ConfigWriteS、FileRecode、TrimNewLines。下面我們就常用函數用法做以簡單介紹。

  • LineFind

查找文本文件中的指定行并在回調函數中編輯或者查看該行。語法:
${LineFind} "[文件1]" "[文件2|/NUL]" "[行號]" "函數"

  • LineRead

讀取指定文本文件中指定行號的內容。語法:
${LineRead} "[文件]" "[行號]" $輸出變量

  • FileReadFromEnd

從末尾起逐行讀取文本文件。語法:
${FileReadFromEnd} "[文件]" "函數"

  • LineSum

獲取文本文件的行數。語法:
${LineSum} "[文件]" $輸出變量

  • FileJoin

將兩個文件合并為一個。語法:
${FileJoin} "[文件1]" "[文件2]" "[文件3]"

  • TextCompare

比較兩個文本文件。語法:
${TextCompare} "[文件1]" "[文件2]" "[選項]" "函數"

  • FileRecode

將文本文件從 DOS 重新編碼為 Windows 格式,反之亦然。語法:
${FileRecode} "[文件]" "[格式]"

  • TrimNewLines

修剪字符串中的新行。語法:
${TrimNewLines} "[字符串]" $輸出變量

該頭文件中的ConfigRead/ConfigWrite函數與NSIS內置的ReadINIStr及WriteINIStr命令用法類似,故在此不再贅述。

posted @ 2012-05-15 09:59 Mumoo 閱讀(1018) | 評論 (0)編輯 收藏
 
轉自 http://hi.csdn.net/jinglidong

文字函數,顧名思義就是處理字符串的函數。使用這些字符串函數前,必須先包含頭文件WordFunc.nsh。該頭文件目前包含如下一些函數:WordFind、WordFind2X、WordFind3X、WordReplace、WordAdd、WordInsert、StrFilter、VersionCompare、VersionConvert等。這些函數的主要作用都是查找字符串。下面我們就常用函數用法做以簡單介紹。

  • WordFind

用于在給定字符串中查找使用指定的分隔符分隔的字符串。由于功能眾多,其語法與參數在此不再贅述。舉例說明:假如我們要從字符串“first;second;third;forth”中查找第二個字符串,就必須使用這樣的代碼:
${WordFind} "first;second;third;forth" ";" +2 $R0
輸出的結果$R0為second。其中的+2中的“+”代表從左查找,2代表第二個字符串。

  • WordFind2X

用于在給定字符串中查找使用指定的兩個分隔符包圍的字符串。功能強大,語法與參數亦不贅述。舉例說明其用法:假如我們要從字符串“<System>|<Guest>|<User>”中查找第三個字符串,也就是倒數第一個,即User,用第一個就比較麻煩了。這是我們需要借助WordFind2X查找。代碼如下:
${WordFind2X} "<System>|<Guest>|<User>" "<" ">" -1 $R0
輸出的結果$R0為User。其中的-1中的“-”代表從右計算,1代表第二個字符串。

  • WordFind3X

與WordFind2X比較相似,用于在給定字符串中查找使用指定的兩個分隔符包圍且含有指定字符串的字符串。使用方法將不做介紹,用戶可以參考中文版本的幫助文件。

  • WordReplace
WordReplace的作用是從字符串中替換或刪除詞語。語法:
${WordReplace} "[字符串]" "[詞語1]" "[詞語2]" "[E][選項]" $輸出變量

 

  • WordAdd

從選項中指定的字符串2添加詞語到字符串1(如果不存在),或刪除詞語(如果存在)。語法:
${WordAdd} "[字符串1]" "[分隔符]" "[E][選項]]" $輸出變量

 

  • WordInsert
在字符串中插入詞語。語法:
${WordInsert} "[字符串]" "[分隔符]" "[詞語]" "[E][選項]]" $輸出變量

 

 

 

  • StrFilter

轉換字符串為大寫或小寫;設置符號過濾。語法:
${StrFilter} "[字符串]" "[選項]" "[符號1]" "[符號2]" $輸出變量

 

  • VersionCompare
用來比較版本號的大小。例如,比較1.1.0.1和1.1.1.0的大小。語法:
${VersionCompare} "[版本1]" "[版本2]" $輸出變量

 

 

 

  • VersionConvert

將帶字母的版本轉換為可用于比較的十進制數版本號。語法:
${VersionConvert} "[版本]" "[字符列表]" $輸出變量
用法示例:${VersionConvert} "9.0c" "" $R0
結果變量$R0的值為9.0.03。這樣轉換后可以用于和別的版本如9.0a比較。

posted @ 2012-05-15 09:55 Mumoo 閱讀(5952) | 評論 (0)編輯 收藏
僅列出標題
共4頁: 1 2 3 4 
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美一区二区激情| 亚洲欧美日韩综合aⅴ视频| 欧美片第1页综合| 欧美va亚洲va日韩∨a综合色| 久久riav二区三区| 老司机精品久久| 欧美日韩国产探花| 国产精品自拍网站| 国产在线观看91精品一区| 有坂深雪在线一区| 亚洲人成久久| 亚洲专区免费| 久久久久综合一区二区三区| 欧美高清在线精品一区| 日韩视频在线观看| 欧美一区亚洲二区| 欧美日韩国产探花| 激情成人亚洲| 在线视频欧美一区| 久久视频精品在线| 日韩网站在线观看| 久久精品99国产精品| 欧美全黄视频| 韩国在线一区| 亚洲无限乱码一二三四麻| 久久久久久久97| 亚洲精品一区二区在线| 欧美电影资源| 91久久精品日日躁夜夜躁欧美| 亚洲精品偷拍| 欧美在线视频免费观看| 亚洲国产成人tv| av不卡在线观看| 久久福利精品| 国产精品激情| 亚洲狼人综合| 久久在精品线影院精品国产| 99re6这里只有精品| 久久亚洲精品欧美| 国产欧美日韩精品丝袜高跟鞋| 亚洲日本久久| 免费成人性网站| 午夜精品免费| 国产精品久久久久一区二区三区共 | 狠狠色噜噜狠狠狠狠色吗综合| 亚洲欧洲精品一区| 久久精品夜色噜噜亚洲aⅴ | 午夜日韩视频| 欧美日韩亚洲一区二区| 亚洲国产成人av好男人在线观看| 翔田千里一区二区| 99国产欧美久久久精品| 久久影音先锋| 黄色国产精品一区二区三区| 欧美一区成人| 亚洲一区精品电影| 国产精品一区二区三区观看| 亚洲一区二区三区国产| 91久久亚洲| 欧美大秀在线观看| 亚洲日韩中文字幕在线播放| 亚洲第一福利社区| 欧美精品手机在线| 国产精品99久久久久久www| 亚洲另类春色国产| 欧美亚洲不卡| 亚洲免费综合| 亚洲欧美日韩国产综合在线| 国产精品一区二区欧美| 久久久久久夜| 久久亚洲私人国产精品va| 伊人伊人伊人久久| 亚洲国产高清在线| 欧美视频一区二区三区四区| 亚洲自拍高清| 欧美一区二区三区视频| 激情综合在线| 亚洲精品精选| 国产视频精品xxxx| 欧美人成网站| 一本到12不卡视频在线dvd| 亚洲黄色成人| 国产精品久久一级| 久久久久欧美精品| 久久天天躁狠狠躁夜夜av| 亚洲国产日韩欧美在线99| 91久久精品美女| 国产精品久久久久影院色老大| 欧美中文字幕在线播放| 久久尤物电影视频在线观看| 一本久久综合亚洲鲁鲁五月天| 中文精品在线| 狠狠久久婷婷| 一区二区欧美精品| 伊人天天综合| 亚洲深爱激情| 亚洲国内自拍| 亚洲免费视频一区二区| 亚洲国产一区在线| 亚洲一区二区三区久久| 亚洲国产裸拍裸体视频在线观看乱了中文 | 伊人夜夜躁av伊人久久| 亚洲蜜桃精久久久久久久| 国产在线欧美日韩| 99国产成+人+综合+亚洲欧美| 国内久久婷婷综合| 亚洲视频综合| 99国产精品久久久久久久| 欧美一区2区三区4区公司二百| 亚洲日本欧美天堂| 午夜精品久久久久久久久| 亚洲美女91| 久久久久久久999| 午夜欧美大片免费观看| 欧美激情精品久久久久久黑人| 久久成人在线| 欧美视频福利| 亚洲精品黄色| 日韩亚洲欧美一区二区三区| 久久久久久久尹人综合网亚洲| 亚洲欧美日韩网| 欧美日韩在线观看一区二区| 欧美黄在线观看| 影音国产精品| 久久久五月婷婷| 久久久中精品2020中文| 国产精品一卡| 亚洲一区二区三区午夜| 亚洲一区二区三区高清| 欧美日韩视频在线一区二区 | 国产精品高清在线观看| 亚洲激情不卡| 91久久精品日日躁夜夜躁国产| 久久精品99国产精品酒店日本| 欧美一级专区免费大片| 极品裸体白嫩激情啪啪国产精品| 欧美另类极品videosbest最新版本 | 91久久夜色精品国产九色| 亚洲国产一区二区a毛片| 久久久久久久久一区二区| 久久久美女艺术照精彩视频福利播放| 国产精品入口夜色视频大尺度| 亚洲韩国日本中文字幕| 亚洲美女视频网| 欧美人在线观看| 在线视频一区二区| 欧美一级二级三级蜜桃| 国产亚洲欧美激情| 久久久久中文| 亚洲国产日韩欧美在线动漫| aa成人免费视频| 国产精品久久久久久久久久久久久久| 99国产精品久久久久久久久久| 亚洲一级高清| 国产在线精品一区二区夜色| 两个人的视频www国产精品| 亚洲日本成人在线观看| 亚洲欧美日韩在线观看a三区| 国产啪精品视频| 久色成人在线| 亚洲桃花岛网站| 免费欧美日韩国产三级电影| 亚洲另类在线视频| 国产精品乱码| 久久综合色播五月| 亚洲最新视频在线| 久久婷婷丁香| 9i看片成人免费高清| 国产女同一区二区| 免费日韩av| 亚洲欧美精品一区| 亚洲电影免费观看高清完整版在线 | 亚洲午夜精品视频| 国产亚洲成av人在线观看导航| 久久伊人亚洲| 正在播放欧美视频| 欧美刺激性大交免费视频| 亚洲一级高清| 亚洲国产精品一区制服丝袜| 欧美午夜寂寞影院| 免费的成人av| 欧美淫片网站| 亚洲网站啪啪| 亚洲精选久久| 欧美电影免费| 久久久人成影片一区二区三区| 在线综合亚洲欧美在线视频| 影音先锋一区| 国产亚洲aⅴaaaaaa毛片| 欧美日韩在线免费观看| 六月丁香综合| 久久久久网址| 性欧美18~19sex高清播放| 亚洲精品在线三区| 欧美成人一区在线| 久久久99精品免费观看不卡| 亚洲午夜在线视频| 夜夜躁日日躁狠狠久久88av| 亚洲黄页一区| 亚洲国产精品一区二区久|