1  /  2  页   12 跳转 查看:1621

C++Builder经验总结

C++Builder经验总结

感觉使用Borland C++Builder的生涯快要结束了,准备写点东西总结一下,没发过置顶的帖子,今天发个,先占个位置,欢迎经验跟帖
小鱼是我永远的好学生,老师相信小鱼永远是最棒的,只比狼子差一点点!
                              ---------------三草老师
 

回复: C++Builder经验总结


 附件: 您所在的用户组无法下载或查看附件

C++Builder 6.0做的报表设计器
小鱼是我永远的好学生,老师相信小鱼永远是最棒的,只比狼子差一点点!
                              ---------------三草老师
 

回复: C++Builder经验总结

这种方法可以将数据库中的任何数据导出到EXCEL文件,而且可以导出成复杂的格式,可以控制EXCEL文件单元格的颜色,单元格合并等等..........最重要的是速度要快很多很多
小鱼是我永远的好学生,老师相信小鱼永远是最棒的,只比狼子差一点点!
                              ---------------三草老师
 

回复: C++Builder经验总结

小鱼是我永远的好学生,老师相信小鱼永远是最棒的,只比狼子差一点点!
                              ---------------三草老师
 

回复:C++Builder经验总结

LZ你设置的权限真高啊,我不够啊!!~~
 

回复: C++Builder经验总结

按照指定的有效位数转换数字 

#include "strstream.h"
#include "fstream.h"
#include "iomanip.h"
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  try
  {
    int iLength=this->Edit1->Text.Length();
    if(iLength<1||StrToInt(this->Edit2->Text)>12)
      return;
    char *StrBuffer=new char[iLength];
    ostrstream ofstr(StrBuffer,iLength);
    ofstr<Edit2->Text))<Edit1->Text)<    this->Edit3->Text=StrBuffer;
  }
  catch(...)
  {
    MessageBox(Handle,"数字输入错误","信息提示",MB_OK);
    return;
  }
}
小鱼是我永远的好学生,老师相信小鱼永远是最棒的,只比狼子差一点点!
                              ---------------三草老师
 

将全角字符串转换成半角字符串

在Windows系统中,中文字符和全角字符均占两个字节,并且使用了ASCII Chart2(codes 128-255)表示,因此可以判断用户输入的字符是否是中文字符或全角字符,实际上,全角的字符第一个字节总是被置为163,而第二个字节则是相同半角字符编码加上128(不包括空格),如半角'A'为65,全角'A'则是163(第一个字节),193(第二个字节,128+65)

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  int iLength=this->Edit1->Text.Length();
  if (iLength<1)
      return;
  AnsiString Str="";
  char *CharTemp=new char[iLength+1];
  StrPCopy(CharTemp,this->Edit1->Text);
  BYTE c1,c2;
  int i;
  for (i=0;i  {
      c1=CharTemp;
      c2=CharTemp[i+1];
      if (c1==163)//判断是否为全角字符
      {
        Str=Str+AnsiString((char)(c2-128));
        i++;
        continue;
      }
      if (c1>163)//判断是否为文字
      {
        Str=Str+AnsiString((char)c1);
        Str=Str+AnsiString((char)c2);
        i++;
        continue;
      }
      if ((c1==161) && (c2==161))//全角空格是个特例,另加处理
      {
        Str=Str+" ";
        i++;
        continue;
      }
      Str=Str+ AnsiString(char(c1));
  }
  this->Edit2->Text=Str;
  delete CharTemp;
}
小鱼是我永远的好学生,老师相信小鱼永远是最棒的,只比狼子差一点点!
                              ---------------三草老师
 

将小写金额转换成大写

AnsiString TransferNumberToChinese(double fNumber, bool DisplayZero, int SpaceLength)
{  //将数值转换为大写金额
    //18个单位
    const String StrScale[18] = {"分","角","元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","兆","拾","佰","仟"};
    //10个数字
    const String StrNumber[10] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
    AnsiString StrTemp;
    StrTemp=FloatToStr(fNumber);
    StrTemp.Delete(StrTemp.Pos("."), 1);        //去掉小数点
    AnsiString StrRusult = " ";
    for (int i = StrTemp.Length(); i > 0; i--)
    {
        if ( !DisplayZero && i > 2 && StrTemp[StrTemp.Length() - i + 1] - 48 == 0 )
            continue;
        StrRusult += StrNumber[StrTemp[StrTemp.Length()-i+1]-48];
        StrRusult += StrScale[i-1];
        StrRusult += AnsiString::StringOfChar(' ', SpaceLength);
    }

    return StrRusult;
}
小鱼是我永远的好学生,老师相信小鱼永远是最棒的,只比狼子差一点点!
                              ---------------三草老师
 

如何获得一段代码的执行时间

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int start = GetTickCount();
for(int i = 0 ; i < 100; i ++){
Memo1->Lines->Add("String");
}
int timeelapse = GetTickCount()-start;
ShowMessage(IntToStr(timeelapse));
}
小鱼是我永远的好学生,老师相信小鱼永远是最棒的,只比狼子差一点点!
                              ---------------三草老师
 

BCB实现精确定时

@@@申明:本文基本内容属于本人原创,部分内容来自互联网,如需转载,请注明作者,
还有出处,否则本人可以考虑法律程序解决。@@@

想了解如何精确定时吗?想知道这个算法的核心实现吗?请看下文:






//$$---- Form CPP ----
//---------------------------------------------------------------------------

#include
#include
#pragma hdrstop

#include "u_TimeEvent.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int TimeID;
int TimeAccuracy;
int num = 0;

void __stdcall TimeCallProc(UINT TimerID,UINT msg,DWORD dwUser,DWORD a,DWORD
b){
TForm1 *eventForm = dynamic_cast(Form1);
String Str;
Str = "Lines";
Str += "-----------------";
Str += IntToStr(++ num);
eventForm->Log->Lines->Add(Str);
}
//---------------------------------------------------------------------------
__fastcall TForm1:Form1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StartClick(TObject *Sender)
{
int TimeInterval = 1;
TimeID =
timeSetEvent(TimeInterval,TimeAccuracy,&TimeCallProc,1,TIME_PERIODIC);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StopClick(TObject *Sender)
{
timeKillEvent(TimeID);
}
//---------------------------------------------------------------------------





引用

原来以为C++Builder能够实现更加精确的定时

这次网上查寻一下

才发现好像不能实现到那么精确

希望发现有更加精确的方法

能告诉我




Tags: c++builder , 精确定时 | 引用(0)
引用地址:
注意: 该地址仅在今日23:59:59之前有效
db300  2007/12/10 14:53
应该在创建多媒体定时器之前,先定义一下精确度
timeGetDevCaps
timeBeginPeriod
timeSetEvent
调用CallBack
timeKillEvent
timeEndPeriod
小鱼是我永远的好学生,老师相信小鱼永远是最棒的,只比狼子差一点点!
                              ---------------三草老师
 
1  /  2  页   12 跳转

版权所有 程序员家园论坛   Sitemap

Powered by Discuz!NT 2.1.202    Copyright © 2001-2008 Comsenz Inc.
Processed in 0.09375 second(s) , 5 queries. 浙ICP备07502118号
返顶部