• <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>


            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 閱讀(1717) | 評論 (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 閱讀(426) | 評論 (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 閱讀(380) | 評論 (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 閱讀(3926) | 評論 (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 閱讀(6831) | 評論 (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 閱讀(798) | 評論 (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 閱讀(2711) | 評論 (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 閱讀(961) | 評論 (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 閱讀(988) | 評論 (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 閱讀(5919) | 評論 (0)編輯 收藏
            僅列出標題
            共4頁: 1 2 3 4 
             
            日本精品久久久久中文字幕8 | 亚洲AV无码久久| 国产精品美女久久久免费| 69久久精品无码一区二区| 久久亚洲熟女cc98cm| 欧美久久久久久| 97精品国产97久久久久久免费| 中文精品99久久国产| 97精品依人久久久大香线蕉97| 亚洲精品乱码久久久久久按摩 | 青青草国产精品久久久久| 久久久久久毛片免费播放| 奇米综合四色77777久久| 日本欧美久久久久免费播放网| 色婷婷综合久久久久中文| 久久久女人与动物群交毛片| 婷婷五月深深久久精品| 72种姿势欧美久久久久大黄蕉| 久久久国产精品网站| 久久久久国产精品麻豆AR影院| 欧洲性大片xxxxx久久久| 2021国内久久精品| 色欲综合久久躁天天躁蜜桃| 久久国产乱子伦免费精品| 久久中文字幕一区二区| 久久夜色精品国产| 国产偷久久久精品专区| 91精品国产高清久久久久久io| 国产成人精品久久亚洲高清不卡| 亚洲国产成人精品无码久久久久久综合 | 色狠狠久久AV五月综合| 国产精品99久久久久久www| 久久人人爽人人爽人人片AV高清 | 久久婷婷色香五月综合激情| 久久国产高潮流白浆免费观看| 国产精品gz久久久| 久久精品99久久香蕉国产色戒| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 久久超乳爆乳中文字幕| 久久精品中文字幕有码| 丰满少妇人妻久久久久久|