BCB通用函數庫

今天浏览网页又有新收获

获得计算机名称

AnsiString GetComputerName()

{

    char name[MAX_COMPUTERNAME_LENGTH + 1];

    DWORD size = MAX_COMPUTERNAME_LENGTH + 1;

    if(GetComputerName(name,&size))

        return AnsiString(name);

    return "";

}

 

// 获得当前用户名

AnsiString GetUserName()

{

    char username[MAX_COMPUTERNAME_LENGTH + 1];

    DWORD size = MAX_COMPUTERNAME_LENGTH + 1;

    if(GetUserName(username,&size))

        return AnsiString(username);

 

    return "";

}

 

// Windows 文件夹

AnsiString GetWindowsDir()

{

    String path;

    path.SetLength(MAX_PATH);

    path.SetLength(GetWindowsDirectory(path.c_str(),path.Length()));

    return path;

}

 

// System 文件夹

AnsiString GetSystemDir()

{

    String path;

    path.SetLength(MAX_PATH);

    path.SetLength(GetSystemDirectory(path.c_str(),path.Length()));

    return path;   

}

 

// Temp 文件夹

AnsiString GetTempDir()

{

    String path;

    path.SetLength(MAX_PATH);

 

    path.SetLength(GetTempPath(MAX_PATH,path.c_str()));

    return path;   

}

// 当前文件夹

AnsiString GetCurrDir()

{

    String path;

    path.SetLength(MAX_PATH);

    path.SetLength(GetCurrentDirectory(MAX_PATH,path.c_str()));

    return path;

// return ExtractFilePath(Application->ExeName);

// return ExtractFilePath(ParamStr(0));

}

 

// 获得IE 版本

AnsiString GetIEVersion()

{

    AnsiString strReturn;

    LPCTSTR Data_Set = "SOFTWARE//Microsoft//Internet Explorer//";

    HKEY hKEY;

    long ret0 = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE,  // root key

                              Data_Set,           //要访问的键的位置;

                              0,                 //必须为0

                              KEY_READ,           //以查询的方式访问注册表;

                               &hKEY);               //hKEY保存此函数所打开的键的句柄。

    if(ret0 != ERROR_SUCCESS)

        return "Unavailable";

    else

    {

        char ver[MAX_COMPUTERNAME_LENGTH + 1];

        DWORD type = REG_SZ;

        DWORD cbData = 40;

        long ret1 = ::RegQueryValueEx(hKEY,         //所打开的键的句柄

                                      "Version",   //要查询的键值名

                                     NULL,

                                        &type,      //查询数据的类型

                                      ver,           //保存所查询的数据

                                      &cbData);       //预设置的数据长度

        if(ret1 != ERROR_SUCCESS)

            return "Unavailable";

        else

            strReturn = AnsiString(ver);

    }

    ::RegCloseKey(hKEY);

    return strReturn;

}

void Jpg2Bmp(String JpgFile, String BmpFile)    //Jpg文件转换为Bmp文件

{

    TJPEGImage *MyJPEG = new TJPEGImage;

    try

    {

        MyJPEG->LoadFromFile(JpgFile); //图片位置

        Graphics::TBitmap *MyBMP = new Graphics::TBitmap;

        MyBMP->Assign(MyJPEG);

        MyBMP->SaveToFile(BmpFile);     //保存路径

        delete MyBMP;

    }

    __finally

    {

        delete MyJPEG;

    }

}

void Bmp2Jpg(String BmpName, String JpgName)    //bmp文件转换为jpg文件

{

    Graphics::TBitmap *MyBMP = new Graphics::TBitmap;

    try

    {

        MyBMP->LoadFromFile(BmpName); //图片位置

        TJPEGImage *MyJPEG = new TJPEGImage;

        MyJPEG->Assign(MyBMP);

        MyJPEG->CompressionQuality = 60; //压缩比例 1..100

        MyJPEG->Compress();

        MyJPEG->SaveToFile(JpgName);    //保存路径

        delete MyJPEG;

    }

    __finally

    {

        delete MyBMP;

    }

}

// DirectX 版本

AnsiString GetDirectXVersion()

{

    AnsiString strReturn;

    LPCTSTR Data_Set = "SOFTWARE//Microsoft//DirectX//";

    HKEY hKEY;

    long ret0 = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE,  // root key

                              Data_Set,           //要访问的键的位置;

                              0,                 //必须为0

                              KEY_READ,           //以查询的方式访问注册表;

                               &hKEY);               //hKEY保存此函数所打开的键的句柄。

    if(ret0 != ERROR_SUCCESS)

        return "Unavailable";

    else

    {

        char ver[MAX_COMPUTERNAME_LENGTH + 1];

        DWORD type = REG_SZ;

        DWORD cbData = 40;

        long ret1 = ::RegQueryValueEx(hKEY,         //所打开的键的句柄

                                      "Version",   //要查询的键值名

                                     NULL,

                                        &type,      //查询数据的类型

                                      ver,           //保存所查询的数据

                                      &cbData);       //预设置的数据长度

        if(ret1 != ERROR_SUCCESS)

            return "Unavailable";

        else

            strReturn = AnsiString(ver);

    }

    ::RegCloseKey(hKEY);

    return strReturn;

}

// 开机后自动运行程序设置

#include <Registry.hpp>

void __fastcall AutoRunFromStart(bool Set,AnsiString Title, AnsiString ExeFile)

{

    TRegistry *Reg;

    Reg = new TRegistry();

    Reg->RootKey = HKEY_LOCAL_MACHINE;

    if(Set)

    {

        if(Reg->OpenKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run",false))

            Reg->WriteString(Title,ExeFile);

        delete Reg;

    }

    else

    {

        if(Reg->OpenKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run",false))

            Reg->WriteString(Title,"; " + ExeFile);

    }

    delete Reg;

}

// 根据窗口句柄获得窗口的Caption

AnsiString GetWndCaption(HWND hWnd)

{

    AnsiString strCaption;

    if(hWnd)

    {

        int Length = (int)SendMessage(hWnd,WM_GETTEXTLENGTH,0,0);

        if(Length)

        {

            char *buf = new char[Length+2];

            buf[Length] = '/0';

            buf[Length+1] = '/0';

            SendMessage(hWnd,WM_GETTEXT,Length+1,(LPARAM)buf);

            strCaption = AnsiString(buf);

            delete buf;

        }

    }

    return strCaption;

}

 

// 根据窗口句柄获得窗口的类名

AnsiString GetWndClassName(HWND hWnd)

{

    char buffer[256];

    GetClassName(hWnd,buffer,255);

    return AnsiString(buffer);

}

// 窗口位于最上

void __fastcall SetStayOnTop(bool Set,void *Handle)

{

    if(Set)

        SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

    else

        SetWindowPos(Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

}

// 是否显示在任务栏

void __fastcall ShowOnTaskbar(bool Set,void *Handle)

{   

    if(Set)

        ShowWindow(Handle,SW_SHOW);

    else

        ShowWindow(Handle,SW_HIDE);

}

// 获得子网掩码

#include <Registry.hpp>

AnsiString GetSubnetMask()

{

    AnsiString SubnetMask;

    TRegistry *reg = new TRegistry;

    DWORD Version = GetVersion();

    if(Version < 0x80000000) //WindowsNT

    {

        reg->RootKey = HKEY_LOCAL_MACHINE;

        if(reg->OpenKeyReadOnly("SYSTEM//CurrentControlSet//Services//Tcpip//Linkage"))

        {

            int BuffLength = reg->GetDataSize("Bind");

            char *Buff = new char[BuffLength+1];

            reg->ReadBinaryData("Bind",Buff,BuffLength);

            AnsiString Interface = (AnsiString)Buff;

            Interface = Interface.SubString(9,Interface.Length()-8);

            delete [] Buff;

            reg->CloseKey();

 

            if(reg->OpenKeyReadOnly("SYSTEM//CurrentControlSet//Services//"+Interface+"//Parameters//Tcpip"))

            {

                BuffLength = reg->GetDataSize("SubnetMask");

                Buff = new char[BuffLength+1];

                reg->ReadBinaryData("SubnetMask",Buff,BuffLength);

                SubnetMask = (AnsiString)Buff;

                delete [] Buff;

            }

        }

    }

    else //Windows9X

    {

        int i;

        reg->RootKey = HKEY_LOCAL_MACHINE;

        TStringList *ent = new TStringList;

        if(reg->OpenKeyReadOnly("System//CurrentControlSet//Services//Class//NetTrans"))

            reg->GetKeyNames(ent);

        reg->CloseKey();

        for(i=0;i<ent->Count ;i++)

        {

            reg->CloseKey();

            if(reg->OpenKeyReadOnly("System//CurrentControlSet//Services//Class//NetTrans//" +ent->Strings[i]))

            {

                AnsiString ip = reg->ReadString("IPAddress");

                AnsiString node = reg->ReadString("NodeType");

                if(ip != "0.0.0.0" && ip != "" && node == "1")

                {

                    SubnetMask = reg->ReadString("IPMask");

                    if(SubnetMask != "" && SubnetMask != "0.0.0.0")

                        break;

                }

            }

        }

        delete ent;

    }

    delete reg;

    return SubnetMask;

}

 

 

#include<winsock.h>

AnsiString GetLocalIP()

{

    //Start up WinSock

    WORD wVersionRequested = MAKEWORD(1,1);;

    WSADATA wsaData;

    WSAStartup(wVersionRequested, &wsaData);

 

    hostent *p;

    char s[128];

    char *p2;

    gethostname(s,128);//获取指定计算机的名字

    p = gethostbyname(s);

    p2 = inet_ntoa(*((in_addr *)p->h_addr)); //获取指定计算机的IP地址

    WSACleanup();

    return p2;

}

 

// 打开、关闭光驱

#include "mmsystem.h"

void CDRomOpen(BOOL bOpenDrive,TCHAR cDrive)

{

    MCI_OPEN_PARMS open;

    MCI_STATUS_PARMS status;

    DWORD flags;

    TCHAR szDriveName[4];

    strcpy(szDriveName,"?:");

    ::ZeroMemory(&open,sizeof(MCI_OPEN_PARMS));

    open.lpstrDeviceType = (LPCSTR)MCI_DEVTYPE_CD_AUDIO;

    szDriveName[0] = cDrive;

    open.lpstrElementName = szDriveName;

    flags = MCI_OPEN_TYPE + MCI_OPEN_TYPE_ID + MCI_OPEN_ELEMENT + MCI_OPEN_SHAREABLE;

    if(!mciSendCommand(0,MCI_OPEN,flags,(unsigned long)&open))

    {

        status.dwItem = MCI_STATUS_READY;

        if(bOpenDrive)

            mciSendCommand(open.wDeviceID,MCI_SET,MCI_SET_DOOR_OPEN,0);

        else

            mciSendCommand(open.wDeviceID,MCI_SET,MCI_SET_DOOR_CLOSED,0);

        mciSendCommand(open.wDeviceID,MCI_CLOSE,MCI_WAIT,0);

    }

}

 

 

// 得到鼠标指针的位置

POINT CurPos;

 

GetCursorPos(&CurPos);

 

// 获得端口

#include <Registry.hpp>

void __fastcall GetPort(TStrings *List)

{

    TRegistry *reg = new TRegistry;

    reg->RootKey = HKEY_LOCAL_MACHINE;

    reg->OpenKey("HARDWARE//DEVICEMAP//SERIALCOMM",true);

    reg->GetValueNames(List);

    List->BeginUpdate();

    for(int i=0;i<List->Count;i++)

        List->Strings[i] = reg->ReadString(List->Strings[i]);

    List->EndUpdate();

    delete reg;

}

// 判断操作系统

enum CWin32Type{wt3X, wtNT3, wt95, wt98, wtME, wtNT4, wt2000, wtXP, /*wtNS,*/ wtUnknown};

CWin32Type getWindowsVersion()

{

    CWin32Type Result;

    OSVERSIONINFO info;

    info.dwOSVersionInfoSize = sizeof(info);

 

    GetVersionEx(&info);

    switch(info.dwPlatformId)

    {

        case VER_PLATFORM_WIN32s: Result = wt3X; break;

        case VER_PLATFORM_WIN32_WINDOWS:

        {

            if(info.dwMajorVersion == 4)

            {

                if(info.dwMinorVersion == 0)

                    Result = wt95;

                else if(info.dwMinorVersion == 10)

                    Result = wt98;

                else if(info.dwMinorVersion == 90)

                    Result = wtME;

            }

            break;

        }

        case VER_PLATFORM_WIN32_NT:

        {

            if(info.dwMajorVersion == 3) // && info.dwMinorVersion == 51)

                Result = wtNT3;

            else if(info.dwMajorVersion == 4) // && info.dwMinorVersion == 0)

                Result = wtNT4;

            else if(info.dwMajorVersion == 5)

            {

                if(info.dwMinorVersion == 0)

                    Result = wt2000;

                else if(info.dwMinorVersion == 1)

                    Result = wtXP;

                /*else if(info.dwMinorVersion ==)

                    Result = wtNS;*/

            }

            break;

        }

    }

    return Result;

}

 

// 结束一个进程

void __fastcall ProcessKill(int pPid)

{

    HANDLE ps = OpenProcess(1,false,pPid);

    if(ps && TerminateProcess(ps,-9))

    {

        MessageBox(Handle,"中止成功!","信息",MB_OK|MB_ICONINFORMATION);

    }

    else

    {

        MessageBox(Handle,"中止失败!","信息",MB_OK|MB_ICONWARNING);

    }

}

 

String __fastcall TfrmTest::GetVersionInfo(String FileName)

{

/**************************************************************

  函数名:GetVersionInfo

  用途:返回指定文件的版本信息

**************************************************************/

    FileName=ExtractFilePath(Application->ExeName)+FileName;

    if(!FileExists(FileName))

    {

     //将要更新的文件不存在

     return 0;

    }

    //首先获得版本信息资源的长度

     DWORD dwHandle,InfoSize;

     String strVer;

     InfoSize = GetFileVersionInfoSize(FileName.c_str(),&dwHandle);

     //将版本信息资源读入缓冲区

     char *InfoBuf = new char[InfoSize];

     GetFileVersionInfo(FileName.c_str(),0,InfoSize,InfoBuf);

     //获得生成文件使用的代码页及字符集信息

     char *pInfoVal;

     unsigned int dwInfoValSize;

     try

     {

      VerQueryValue(InfoBuf,"//VarFileInfo//Translation",&((void *)pInfoVal), &dwInfoValSize);

      AnsiString V = "//StringFileInfo//" +IntToHex(*((unsigned short int *) pInfoVal),4) +IntToHex(*((unsigned short int *) &pInfoVal[2]),4)+ "//FileVersion";

      //获得具体的版本号

      VerQueryValue(InfoBuf, V.c_str(),&((void *)pInfoVal),&dwInfoValSize);

      strVer=AnsiString(pInfoVal).SetLength(dwInfoValSize-1);

      delete InfoBuf;

     }

     catch(...)

     {

      return 0;

     }

     if(strVer.Length()>10)

     {

      return 0;

     }

     String TmpStr;

//截取.

     for (int i=1;i<=strVer.Length();i++)

     {

       if(strVer.SubString(i,1)!=".")

       {

        TmpStr=TmpStr+strVer.SubString(i,1);

       }

       else if((strVer.SubString(i,1)==".")&&(i==2))

       {

        TmpStr=TmpStr+strVer.SubString(i,1);

       }

     }

//截取,

     if(strVer.Pos(",")!=0)

      {

       TmpStr="";

       for (int i=1;i<=strVer.Length();i++)

       {

        if((strVer.SubString(i,1)!=",")&&(strVer.SubString(i,1)!=" "))

        {

         TmpStr=TmpStr+strVer.SubString(i,1);

        }

        else if((strVer.SubString(i,1)==",")&&(i==2))

        {

         TmpStr=TmpStr+".";

        }

      }

     }

 

     strVer=TmpStr;

     return strVer;

}

//---------------------------------------------------------------------------

 

// 改变分辨率

void DynamicResolution(int x,int y,int c,int h)

{

    DEVMODE CurMode;

    CurMode.dmPelsWidth = x;

    CurMode.dmPelsHeight = y;

    CurMode.dmBitsPerPel = c;

    CurMode.dmDisplayFrequency = h;

    CurMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY;

    if(ChangeDisplaySettings(&CurMode, CDS_UPDATEREGISTRY) == DISP_CHANGE_SUCCESSFUL)

        MessageBox(Handle,"设置成功!","信息",MB_OK|MB_ICONINFORMATION);

    else

        MessageBox(Handle,"设置失败!","信息",MB_OK|MB_ICONINFORMATION);

}

// 显示信息,要返回其他类型的改改就可以了

String get1() // 获得分辨率

{

    TDeviceMode lpDevMode;

    EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&lpDevMode);

    return String(lpDevMode.dmPelsWidth) + " x " + String(lpDevMode.dmPelsHeight));

}

String get2() // 刷新率

{

    TDeviceMode lpDevMode;

    EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&lpDevMode);

    return String(lpDevMode.dmDisplayFrequency) + " Hz");

}

String get3() // 颜色

{

    TDeviceMode lpDevMode;

    EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&lpDevMode);

    switch(lpDevMode.dmBitsPerPel)

    {

        case 2: return " 4 ";

        case 4: return " 16 ";

        case 8: return " 256 ";

        case 16: return " 16 位增强色";

        case 24: return " 24 位真彩色";

        case 32: return " 32 位真彩色";

        default: break;

    }

}

//关闭应用程序

bool CloseApp(String ClassName)

{

    HWND ExeHandle = FindWindow(ClassName.c_str(),0);

    if(ExeHandle)

    {

         PostMessage(ExeHandle, WM_QUIT, 0, 0);

         return true;

    }

    return false;

}

 

这些都好像在www.chinabcb.com中的吧!

window 2000/XP 下窗口置前台!!!

void __fastcall SetForegroundWindowEx()

{

   if(IsWindowVisible(Handle)==0)

      Application->Restore();

   SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

   POINT xy;

   GetCursorPos(&xy);

   ShowCursor(false);

   static int clickThis;

   if(clickThis==100)

      clickThis=105;

   else

      clickThis=100;

   SetCursorPos(Left+clickThis,Top+Height-ClientHeight-4);

   mouse_event(MOUSEEVENTF_ABSOLUTE |MOUSEEVENTF_LEFTUP|MOUSEEVENTF_LEFTDOWN,0,0,0,0);

   SetWindowPos(Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

   SetCursorPos(xy.x,xy.y);

   ShowCursor(true);

}

 

]]>

// 显示Windows的关于对话框

void About()

{

    ShellAbout(Application->Handle, Application->MainForm->Caption.c_str(),"",Application->Icon->Handle);

}

void SetEditCell(TStringGrid *sg,int x,int y)

{

//任一CELLS获得焦点,并可直接使用键盘输入

TGridRect myRect;

myRect.Left = x;

myRect.Top = y;

myRect.Right = x;

myRect.Bottom = y;

sg->Selection = myRect;

sg->Options<<goEditing;

SendMessage(sg->Handle,WM_LBUTTONDOWN,0,0);

}

//------------------------------------------------------------------------

void DeleteRow(TStringGrid *sg,int x) // 删除第x(0...)

{

for (int y=0;y<sg->ColCount;y++)

{

TStringList *ss=new TStringList();

ss->AddStrings(sg->Cols[y]);

ss->Add("");

ss->Delete(x);

sg->Cols[y]=ss;

delete ss;

}

 

这是别人写的,没测试过

//复制整个目录

void Copy_dir(AnsiString Source, AnsiString Target)

{

  SHFILEOPSTRUCT OpStruc;

  {

    OpStruc.hwnd = Handle;

    OpStruc.wFunc = FO_COPY;  //FO_COPY, FO_MOVE, FO_DELETE

    OpStruc.fFlags = FOF_SIMPLEPROGRESS;

    OpStruc.pFrom = Source.c_str();

    OpStruc.pTo = Target.c_str();

    OpStruc.lpszProgressTitle = "正在复制文件……";

  }

  SHFileOperation(&OpStruc);

}

收藏!

顶!!!

删除c:/temp/a/ 这个目录和其子目录

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

SHFILEOPSTRUCT OpStruc;

  {

    OpStruc.hwnd = Handle;

    OpStruc.wFunc = FO_DELETE;  //FO_COPY, FO_MOVE, FO_DELETEFO_RENAME

    OpStruc.fFlags = FOF_NOCONFIRMATION;//设置自动确认,这样就可以不出现对话框了

    char From[]="c://temp//a/0/0";       // 删除c:/temp/a/ 这个目录和其子目录

    OpStruc.pFrom =From;         //设置源文件或目录

    OpStruc.pTo =NULL;        //设置目标文件或目录这里是删除文件所以可以忽略

 

//另外还有其他,在这里可以不设

  }

//执行函数

  SHFileOperation(&OpStruc);

}

 

//---------------------------------------------------------------------------

int  CopyFilesFun(String  SourceDir,String  DestDir)

{

  TSHFileOpStruct  *Dir;

  String  strTemp;

 

  Dir = (TSHFileOpStruct*)malloc(sizeof(TSHFileOpStruct));

 

  try

  {

    Dir->hwnd = Application->Handle;

    Dir->wFunc = FO_COPY;

    strTemp=SourceDir+"*.*"+'/0';

    Dir->pFrom =strTemp.c_str();

    Dir->pTo =  DestDir.c_str();

    Dir->fFlags = FOF_NOCONFIRMMKDIR+FOF_SILENT;

    SHFileOperation(Dir);

  }

  catch(...){if(Dir!=NULL){free(Dir);}}

  if(Dir!=NULL){free(Dir);}

  return  0;

}

//---------------------------------------------------------------------------

int  DeleteFileFun(String  FileDir)

{

  TSHFileOpStruct  *Dir;

  String  strTemp;

 

  Dir = (TSHFileOpStruct*)malloc(sizeof(TSHFileOpStruct));

 

  try

  {

    Dir->hwnd = Application->Handle;

    Dir->wFunc = FO_DELETE;

    strTemp=FileDir+"*.*"+'/0';

    Dir->pFrom =strTemp.c_str();

    Dir->pTo =  FileDir.c_str();

    Dir->fFlags = FOF_NOCONFIRMMKDIR+FOF_SILENT+FOF_NOCONFIRMATION;

    SHFileOperation(Dir);

  }

  catch(...){if(Dir!=NULL){free(Dir);}}

  if(Dir!=NULL){free(Dir);}

  return  0;

}

//---------------------------------------------------------------------------

关于AnsiSting的使用大全(1)

 

arrow:    

 

Ansistring char

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "哈哈";

    char *chr = Test.c_str();

}

   

 

 

charAnsistring

代码:

 

#include <windef.h>

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString str = "Sample";

    char chr[MAX_PATH];

    strcpy( chr , str.c_str() );

}

 

 

 

ansistringint

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "123";

    int i = StrToInt( Test );

}

 

 

intansistring

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    int i = 123;

    AnsiString str = IntToStr( i );

}

 

 

ansistingdouble

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "123";

    long double d = StrToFloat( Test );

}

 

 

 

doubleansistring

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    double d = 123.456;

    AnsiString str = FloatToStr( d );

}

 

 

 

 

doubleansistring并四舍五入

 

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    long double d = 123.456121212;

    AnsiString str = FloatToStrF( d , ffFixed ,5 , 4 );

//说明FloatTostrF5代表从第几个数字的后一位开始四舍五入,4代表取4位小数。

//执行后得到str123.4600:roll:

   

}

 

 

 

doubleansistring使用类似vbformat函数

 

代码:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    double d = 123.456;

    AnsiString str = FormatFloat( "000000.00" , d );

}

//得到 000123.45,当然你可以使用"# . , ; E+ E- xx"等符号,你自己试试 :wink:

 

 

 

ansiTclor型(从现在开始AnsiSting简称ansi

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "0x00FF8080";

    TColor Col = StringToColor( Test );

}

 

 

Tcloransi

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    TColor Col = 0x00FF8080;

    AnsiString str = ColorToString( Col );

}

 

 

ansi的一部分消除,哈哈,类似vb里的mid函数,不过是反的~

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "ABCDEF";

    int First = 3;     // 消除制定开头

    int Length = 2;    // 消除制定长度

    AnsiString Dstr = Test.Delete( First , Length );

}//得到ABEF

 

 

 

ansi的一部分插入

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "ABCDEF";

    AnsiString Ins = "12345";     // 插入串

    int Pos = 3;                  // 在哪插

    AnsiString Istr = Test.Insert( Ins , Pos );

//得到AB12345CDEF

}

 

 

取得ansi某一位字符

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "ABCDEF";

    AnsiString Npos = Test[3];//得到C

}

 

 

取得ansi里最后一个字符

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "ABCDEF";

    char *Lstr = Test.AnsiLastChar();//得到F

}

 

 

取出ansi字符,这才是vbmid函数!

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "ABCDEF";

    int First = 3;     // 3开始取

    int Length = 2;    // 2

    AnsiString Getstr = Test.SubString( First , Length );

//得到CD

}

 

 

ansi的字母 是否相同比较

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "ABCDEF";

    AnsiString Sample = "abcdef";

    int Result = Test.AnsiCompare( Sample );

返回1,不同!分大小写。

}

 

 

 

 

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "ABCDEF";

    AnsiString Sample = "abcdef";

    int Result = Test.AnsiCompareIC( Sample );

//返回0,相同!没有分大小写,哈哈

}

 

 

ansi中寻找字符

 

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "ABCDEF";

    AnsiString Sample = "E";

    int Result = Test.Pos( Sample );

//返回5,如果你写Sample"haha",就返回0,找不到,哈哈

}

 

 

ansi中找字符串,和上一个类似

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "ABCDEF";

    AnsiString Sample = "EF";

    int Result = Test.Pos( Sample );

//返回5,即E字符的位置

}

 

 

判断字符串长度,类似vblen

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "拿金币来";

    int Len = Test.Length();

//返回8

}

 

 

取得字符串,类似vbleft

 

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "小苹果然看了这篇文章";

    AnsiString SLstr = Test.SetLength(6);

}//得到“小苹果”

 

 

 

检测双字节字串

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

AnsiString ChkStr = "你好";

int ChkPos =  1  ;

if ( ByteType( ChkStr , ChkPos ) == mbSingleByte ){

    Edit1->Text="0";

    }

    else{

    Edit1->Text="1";

    }//返回1,如果你写ChkStr"fxxk",就返回0

}

 

 

检测空字符串

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "";

    bool chk = Test.IsEmpty();

    if (chk )

    Edit1->Text="1";//返回1

}

 

 

全部便小写vs全部便大写

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "ABCdef";

    AnsiString Lstr = Test.LowerCase();

}

 

 

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "ABCdef";

    AnsiString Ustr = Test.UpperCase();

}

 

 

类似vbTrim 的去空格函数

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "     ABCDEF      ";

    AnsiString TLstr = Test.TrimLeft();

   AnsiString TRstr = Test.TrimRight();

  AnsiString Tstr = Test.Trim();

}

 

 

但是,这个处理不了全角的空格   怎么办ni

代码:

 

AnsiString __fastcall TForm1::TrimStr( AnsiString Tm , AnsiString LR )

{

    // LR L:左除去   R:右除去   B:dou除去

    int len;

    // 左除去

    if ( LR == "L" || LR == "B" ){

        len = Tm.Length();

        while ( Tm.SubString(1,1) == " " || Tm.SubString(1,2) == " "){

            // 半角除去

            if ( Tm.SubString(1,1) == " " ){

                Tm = Tm.SubString(2,len);

                len = Tm.Length();

            }

            // 全角除去

            else if ( Tm.SubString(1,2) == " " ){

                Tm = Tm.SubString(3,len);

                len = Tm.Length();

            }

        }

    }

    // 右除去

    if ( LR == "R" || LR == "B" ){

        len = Tm.Length();

        while ( Tm.SubString(len,1) == " " || Tm.SubString(len-1,2) == " " ){

            // 半角除去

            if ( Tm.SubString(len,1) == " " ){

                len = Tm.Length();

                Tm = Tm.SubString(1,len-1);

                len = Tm.Length();

            }

            // 全角除去

            else if ( Tm.SubString(len-1,2) == " " ){

                len = Tm.Length();

                Tm = Tm.SubString(1,len-2);

                len = Tm.Length();

            }

        }

    }

    return Tm;

}

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Test = "  拳脚  ";

    AnsiString Ret = TrimStr(Test,"B")

}

 

 

 

 

相同字符重复输入

 

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Soc = AnsiString::StringOfChar( '*' , 100 );

   Edit1->Text=Soc ;//显示100*

 

}

 

关于AnsiSting的使用大全(2)

 

字符串替换

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Str = "Borland C++ Builder is free"; 

    AnsiString From = "C++ Builder";                      

    AnsiString To = "Delphi";                             

    AnsiString Result;                                     

    Result = StringReplace( Str, From, To, TReplaceFlags() <<

rfReplaceAll << rfIgnoreCase );

//<<后是参数,得到Borland Delphi is free

}

 

 

全角变半角

代码:

 

    AnsiString Zen = "1234567890";

    int Len = Zen.Length();

    char buf[MAX_PATH];

    ZeroMemory( buf, sizeof( buf ) );

    LCMapString( GetUserDefaultLCID(), LCMAP_HALFWIDTH, Zen.c_str(), Len, buf, sizeof( buf ) );

    AnsiString Han = AnsiString( buf );

    Edit1->Text=Han;

 

 

半角变全角

代码:

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    AnsiString Han = "1234567890";

    int Len = Han.Length();

    char buf[MAX_PATH];

    ZeroMemory( buf, sizeof( buf ) );

    LCMapString( GetUserDefaultLCID(), LCMAP_FULLWIDTH, Han.c_str(), Len, buf, sizeof( buf ) );

    AnsiString Zen = AnsiString( buf );

}

 

设置日期格式为YYYY-MM-DD

DateSeparator = '-';

ShortDateFormat = "yyyy-mm-dd";

 

让控件随窗口尺寸更改而更改(by jishiping)

ScaleBy(int M, int D); 函数就可以了。例如窗口放大到125%: ScaleBy(125, 100);

 

 

{=========================================================================

    :  得到硬盘序列号

    :

  返回值:  硬盘序列号

    :  此函数在9598下要将system下的smartvsd.vxd先复制到Windows

           IOSUBSYS目录下,重新启动后才可以使用。===========================================================================}

function GetIdeDiskSerialNumber : String;

type

  TSrbIoControl = packed record

    HeaderLength : ULONG;

    Signature    : Array[0..7] of Char;

    Timeout      : ULONG;

    ControlCode  : ULONG;

    ReturnCode   : ULONG;

    Length       : ULONG;

  end;

  SRB_IO_CONTROL = TSrbIoControl;

  PSrbIoControl = ^TSrbIoControl;

 

  TIDERegs = packed record

    bFeaturesReg     : Byte; // Used for specifying SMART "commands".

    bSectorCountReg  : Byte; // IDE sector count register

    bSectorNumberReg : Byte; // IDE sector number register

    bCylLowReg       : Byte; // IDE low order cylinder value

    bCylHighReg      : Byte; // IDE high order cylinder value

    bDriveHeadReg    : Byte; // IDE drive/head register

    bCommandReg      : Byte; // Actual IDE command.

    bReserved        : Byte; // reserved.  Must be zero.

  end;

  IDEREGS   = TIDERegs;

  PIDERegs  = ^TIDERegs;

 

  TSendCmdInParams = packed record

    cBufferSize  : DWORD;

    irDriveRegs  : TIDERegs;

    bDriveNumber : Byte;

    bReserved    : Array[0..2] of Byte;

    dwReserved   : Array[0..3] of DWORD;

    bBuffer      : Array[0..0] of Byte;

  end;

  SENDCMDINPARAMS   = TSendCmdInParams;

  PSendCmdInParams  = ^TSendCmdInParams;

 

  TIdSector = packed record

    wGenConfig                 : Word;

    wNumCyls                   : Word;

    wReserved                  : Word;

    wNumHeads                  : Word;

    wBytesPerTrack             : Word;

    wBytesPerSector            : Word;

    wSectorsPerTrack           : Word;

    wVendorUnique              : Array[0..2] of Word;

    sSerialNumber              : Array[0..19] of Char;

    wBufferType                : Word;

    wBufferSize                : Word;

    wECCSize                   : Word;

    sFirmwareRev               : Array[0..7] of Char;

    sModelNumber               : Array[0..39] of Char;

    wMoreVendorUnique          : Word;

    wDoubleWordIO              : Word;

    wCapabilities              : Word;

    wReserved1                 : Word;

    wPIOTiming                 : Word;

    wDMATiming                 : Word;

    wBS                        : Word;

    wNumCurrentCyls            : Word;

    wNumCurrentHeads           : Word;

    wNumCurrentSectorsPerTrack : Word;

    ulCurrentSectorCapacity    : ULONG;

    wMultSectorStuff           : Word;

    ulTotalAddressableSectors  : ULONG;

    wSingleWordDMA             : Word;

    wMultiWordDMA              : Word;

    bReserved                  : Array[0..127] of Byte;

  end;

  PIdSector = ^TIdSector;

 

const

  IDE_ID_FUNCTION = $EC;

  IDENTIFY_BUFFER_SIZE       = 512;

  DFP_RECEIVE_DRIVE_DATA        = $0007c088;

  IOCTL_SCSI_MINIPORT           = $0004d008;

  IOCTL_SCSI_MINIPORT_IDENTIFY  = $001b0501;

  DataSize = sizeof(TSendCmdInParams)-1+IDENTIFY_BUFFER_SIZE;

  BufferSize = SizeOf(SRB_IO_CONTROL)+DataSize;

  W9xBufferSize = IDENTIFY_BUFFER_SIZE+16;

var

  hDevice : THandle;

  cbBytesReturned : DWORD;

  pInData : PSendCmdInParams;

  pOutData : Pointer; // PSendCmdOutParams

  Buffer : Array[0..BufferSize-1] of Byte;

  srbControl : TSrbIoControl absolute Buffer;

 

  procedure ChangeByteOrder( var Data; Size : Integer );

  var ptr : PChar;

      i : Integer;

      c : Char;

  begin

    ptr := @Data;

    for i := 0 to (Size shr 1)-1 do

    begin

      c := ptr^;

      ptr^ := (ptr+1)^;

      (ptr+1)^ := c;

      Inc(ptr,2);

    end;

  end;

 

begin

  Result := '';

  FillChar(Buffer,BufferSize,#0);

  if Win32Platform=VER_PLATFORM_WIN32_NT then

    begin // Windows NT, Windows 2000

      // Get SCSI port handle

      hDevice := CreateFile( '//./Scsi0:',

        GENERIC_READ or GENERIC_WRITE,

        FILE_SHARE_READ or FILE_SHARE_WRITE,

        nil, OPEN_EXISTING, 0, 0 );

      if hDevice=INVALID_HANDLE_VALUE then Exit;

      try

        srbControl.HeaderLength := SizeOf(SRB_IO_CONTROL);

        System.Move('SCSIDISK',srbControl.Signature,8);

        srbControl.Timeout      := 2;

        srbControl.Length       := DataSize;

        srbControl.ControlCode  := IOCTL_SCSI_MINIPORT_IDENTIFY;

        pInData := PSendCmdInParams(PChar(@Buffer)

                   +SizeOf(SRB_IO_CONTROL));

        pOutData := pInData;

        with pInData^ do

        begin

          cBufferSize  := IDENTIFY_BUFFER_SIZE;

          bDriveNumber := 0;

          with irDriveRegs do

          begin

            bFeaturesReg     := 0;

            bSectorCountReg  := 1;

            bSectorNumberReg := 1;

            bCylLowReg       := 0;

            bCylHighReg      := 0;

            bDriveHeadReg    := $A0;

            bCommandReg      := IDE_ID_FUNCTION;

          end;

        end;

        if not DeviceIoControl( hDevice, IOCTL_SCSI_MINIPORT,

          @Buffer, BufferSize, @Buffer, BufferSize,

          cbBytesReturned, nil ) then Exit;

      finally

        CloseHandle(hDevice);

      end;

    end

  else

    begin // Windows 95 OSR2, Windows 98

      hDevice := CreateFile( '//./SMARTVSD', 0, 0, nil,

        CREATE_NEW, 0, 0 );

      if hDevice=INVALID_HANDLE_VALUE then Exit;

      try

        pInData := PSendCmdInParams(@Buffer);

        pOutData := @pInData^.bBuffer;

        with pInData^ do

        begin

          cBufferSize  := IDENTIFY_BUFFER_SIZE;

          bDriveNumber := 0;

          with irDriveRegs do

          begin

            bFeaturesReg     := 0;

            bSectorCountReg  := 1;

            bSectorNumberReg := 1;

            bCylLowReg       := 0;

            bCylHighReg      := 0;

            bDriveHeadReg    := $A0;

            bCommandReg      := IDE_ID_FUNCTION;

          end;

        end;

        if not DeviceIoControl( hDevice, DFP_RECEIVE_DRIVE_DATA,

          pInData, SizeOf(TSendCmdInParams)-1, pOutData,

          W9xBufferSize, cbBytesReturned, nil ) then Exit;

      finally

        CloseHandle(hDevice);

      end;

    end;

    with PIdSector(PChar(pOutData)+16)^ do

    begin

      ChangeByteOrder(sSerialNumber,SizeOf(sSerialNumber));

      SetString(Result,sSerialNumber,SizeOf(sSerialNumber));

    end;

end;

 

我是来做广告的,收集这里的代码用什么工具?

推荐我的作品:

http://chinaproject.51.net/winnote.htm

 

无需破解,免费绿色软件

帮助写得不好,但程序员用起来没有问题。在不同的地方多按按右键

//获取某主机的IP地址,如果主机名为空,则返回本机的名和IP地址---------

 

  AnsiString  TForm1::gethostip(AnsiString  &  host)

  {

   WSADATA wsaData;

  AnsiString IP;

  WSAStartup(MAKEWORD(2,0),&wsaData);

  if(host.IsEmpty())

  {

   char hostname[128];

   if(gethostname(hostname,128)!=0) return AnsiString("");

   host=hostname;

  }

  try

  {

   struct hostent *hp=gethostbyname(host.c_str());

   if(WSAGetLastError()==WSAHOST_NOT_FOUND)

   {

    IP="";

    return IP;

   }

   else

   IP=inet_ntoa(*(struct in_addr*)hp->h_addr_list[0]);

   }

  catch(...)

  {

   IP="";

  }

  WSACleanup();

  return IP;

  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值