程序心得
k1988
这个作者很懒,什么都没留下…
展开
-
32位程序在64位系统上获取系统安装时间
众所周知,取系统的安装时间可取注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion的子项InstallDate,此值是个DWORD类型的UnixStamp。 但是在64位系统上有所不同(仅测试了win7、win8),默认情况下32程序在64位机器上访问的是下面这个地址HKEY_LOCAL_MACHINE\SOFT原创 2015-01-29 15:04:52 · 2744 阅读 · 0 评论 -
MongoDB学习总结
概念与说明MongoDB介绍<br />MongoDB的名称取自“humongous”(巨大的) 的中间部分。于2010年8月5日发布了最新的正式版本v1.6,这是其继1.0、1.2、1.4版本后的第四个主要稳定版本。由10gen公司为其提供商业支持。•它是一个开源的、面向文档的数据库,属于nosql数据库中的一种。(nosql全称是”notonly sql”,是非关系型数据存储的广义定义)。<br />它可运行在Linux、Windows或OSX平台,支持32位和64位应用并且提供了Java,PHP,Ru原创 2010-09-30 16:49:00 · 5050 阅读 · 4 评论 -
linux下boost编译及链接到系统目录
<br />我的boost是提前在windows下面下载编译好的,只是又装了一个utunbu,需要在linux下面编译,所以直接跳过下载和解压部分。<br />有需要的可以参考:http://www.hwcrazy.com/topic.action?idTopic=ff8081812a358610012a3587d7e30001#<br /> <br />1、打开终端,cd 到boost目录。<br />2、使用默认的参数直接运行 ./bootstrap.sh<br />3、./bjam 生成lib文件(没原创 2010-09-09 21:46:00 · 1648 阅读 · 0 评论 -
Delphi中Form的position属性与代码自定义窗体位置
<br /> 通过Form的Position属性可设置窗体的初始位置,如选择DesktopCenter为桌面中心,ScreenCenter为屏幕中心,等等。 这个属性在很多时候简化了程序代码。<br /> 但是,如果设置了position为ScreenCenter和DesktopCenter等,在窗体oncreate和onshow事件中使用代码控制窗体的位置就会不成功了,无论设置Self.Top,Self.Left为什么值,最后窗体都会自动根据Position自动调整位置。<br /> 我使用下面方法去原创 2010-06-21 17:27:00 · 4949 阅读 · 0 评论 -
使用flash+fms录制视频时遇到NetStream.Record.NoAccess错误
<br />在研究fms的publish时,使用record方式publish失败,查阅资料得知fms默认情况下不允许record文件到服务器,必须要进行设置,需要在服务器端的应用程序文件夹(默认位置在<FMS_Installation_Dir>/applications/live),在这个文件夹下面有一个main.far,main.far是个压缩文件(可以用winrar解压),解压后里面有两个文件main.asc 和 Application.xml, 打开Application.xml,代码如下:<br原创 2010-06-02 17:29:00 · 2323 阅读 · 0 评论 -
flash录制时出现NetStream.Record.NoAccess错误
<br />在研究fms的publish时,使用record方式publish失败,查阅资料得知fms默认情况下不允许record文件到服务器,必须要进行设置,需要在服务器端的应用程序文件夹(默认位置在<FMS_Installation_Dir>/applications/live),在这个文件夹下面有一个main.far,main.far是个压缩文件(可以用winrar解压),解压后里面有两个文件main.asc 和 Application.xml, 打开Application.xml,代码如下:<br原创 2010-06-02 17:34:00 · 2225 阅读 · 0 评论 -
浅析boost::asio::deadline_timer运行机制
在使用到deadline_timer时,我需要同时使io_serivice的post函数以及使用timer的async_wait,但是我不清楚async_wait是否准确地在它等待的时刻进行回调。于是我做了一个实验。#include #include #include #include #include #include #include #includ原创 2010-05-13 14:15:00 · 7597 阅读 · 3 评论 -
VS2005中使用boost ::bind导致error PRJ0002
今天发现在VS 2005环境下使用boost ::bind来定义使用错误就会引起编译器崩溃。错误信息是:项目 : error PRJ0002 : 错误的结果 1 (从“C:/Program Files/Microsoft Visual Studio 8/VC/bin/cl.exe”返回)。当然这个错误信息还有可能是其它原因导致的,这里提到的仅仅是其中的一种。 在网上找了些资料,现在原创 2010-05-14 11:26:00 · 1409 阅读 · 3 评论 -
boost::asio::ip::tcp::resolver::query定义不正确导致boost::asio::ip::tcp::resolver的resolve抛出异常
<br />boost::asio::ip::tcp::resolver::query一般的使用形式为boost::asio::ip::tcp::resolver::query query("地址","端口").<br /> <br />但是boost::asio::ip::tcp::resolver::query 的第二个参数不能想当然的认为是整型的端口号,这个端口号必须是string类型的,否则会调用basic_resolver_query的第一个构造函数,而导致后面发生异常。原创 2010-07-08 16:16:00 · 5286 阅读 · 3 评论 -
boost::timer 的替代方案
作者:吴尔平转自:http://www.cnblogs.com/WuErPIng/archive/2005/09/21/241407.html 在浅尝boost之timer的post里,我提到boost::timer在linux和windows下的不同表现,并用ACE_OS::gettimeofday做了一个替代方案。不过,为了这个功能把ACE的DLL绑到一起,感觉不是转载 2010-05-13 16:32:00 · 1496 阅读 · 0 评论 -
boost中bind、thread、io_services测试
// BoostTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#define BOOST_MEM_FN_ENABLE_STDCALL#define BOOST_MEM_FN_ENABLE_FASTCALL#include #include #include #include #include #include #include原创 2010-05-11 17:40:00 · 3280 阅读 · 5 评论 -
在模板类中使用字符串作为无类型模板参数
template class CConfigItemList{ public: CConfigItemList(){ m_xml_root_name = xml_root_name; } private: string m_xml_root_name; }原创 2010-05-11 14:15:00 · 2838 阅读 · 0 评论 -
C++ 宏定义中字符串连接操作
转载自:http://kenshinf.blog.51cto.com/1088256/252541关于记号粘贴操作符(token paste operator): ##1. 简单的说,“##”是一种分隔连接方式,它的作用是先分隔,然后进行强制连接。 其中,分隔的作用类似于空格。我们知道在普通的宏定义中,预处理器一般把空格 解释成分段标志,对于每一段和前面比较,相同的就被替换。但转载 2010-05-07 12:42:00 · 6036 阅读 · 3 评论 -
QT使用Q_OBJECT链接不通过的一种情况
<br />今天在main里自定义继承于QObject的类,添加了Q_OBJECT宏和信号之后,总是链接不通过,提示XXXX::staticMetaObject等等不存在。<br />后来得知在cpp里定义的Q_OBJECT,需要添加额外步骤才能编译通过。<br /> <br />下面是找到的一段文档,原文:<br />http://www.kuqin.com/qtdocument/moc.html<br /> <br /> <br />元对象编译器生成的输出文件必须被编译和连接,就像你的程序中的其它的C+原创 2011-02-28 15:58:00 · 3990 阅读 · 0 评论 -
QT制作全屏播放器以及出现的问题
<br />使用QT做播放器使用widget::winid可以获取播放器组件的windows句柄并以命令行的方式调起另一个程序使用D3D将内存缓冲区的图像打在上面。但是在做全屏是出现了问题,如果让播放器组件自己独立全屏就使用代码:<br />MainWindow::MainWindow(QWidget *parent){ _previewInitParent = ui->preview->parentWidget(); _previewInitPoit = ui->preview->pos();原创 2011-03-03 17:07:00 · 3869 阅读 · 0 评论 -
使用PHP返回需要登录验证的HTML页面
if(!isset($PHP_AUTH_USER)) { Header("WWW-Authenticate: Basic realm="登录对话框上显示的服务器名称""); Header("HTTP/1.0 401 Unauthorized"); echo "Text to send if user hits Cancel buttonn"; exit;}else { if ( !($PHP_AUTH_USER=="要验证的用户名" && $PHP_AUTH_PW=="要原创 2011-02-22 14:19:00 · 3445 阅读 · 0 评论 -
一些PHP函数
<?php/* 将URL中的某参数设为某值*/function url_set_value($url,$key,$value) { $a=explode('?',$url); $url_f=$a[0]; $query=$a[1];原创 2011-05-31 14:39:00 · 649 阅读 · 0 评论 -
新浪微博URL中的MID和微博id互转
$re = json_decode(file_get_contents("http://api.t.sina.com.cn/queryid.json?mid=xhMRc8nNu&isBase62=1&type=1"));$id = $re->id;echo $id;$re原创 2011-08-13 14:00:56 · 5040 阅读 · 0 评论 -
使用BOOST实现简单的HTTP网页下载
bool httpGet(/*out*/string& result, const string& host, uint16_t port, const string& url,boost::asio::io_service &_io){ try {原创 2011-08-01 13:53:02 · 6813 阅读 · 7 评论 -
windows批处理使用记录
::进入批处理所在目录cd "%~dps0"%~d0同理,将“文件全路径”作为参数时,进入这个文件所在文件夹的方式为cd "%~dpsN" 注:N需要用参数的索引替换%~dN ::终结某些进程TASKKILL /F /IM *.exe原创 2011-07-29 15:12:29 · 960 阅读 · 0 评论 -
javascript字符串trim的实现
使用正则表达式加上字符串对象的replace函数来实现trim功能。$("#streamid").val().replace(/(^[\\s]*)|([\\s]*$)/g, "")原创 2011-07-13 10:01:07 · 684 阅读 · 0 评论 -
SQL时间段查询
WHERE `updateTime`>='2011-07-07 9:00:00' AND `updateTime`< DATE_ADD('2011-07-07 9:00:00', INTERVAL +1 HOUR)WHERE (UNIX_TIMESTAMP(`updateTi原创 2011-07-07 13:23:16 · 707 阅读 · 0 评论 -
在PHP中获取IP来源地址并且插入数据库
在项目中用到查询IP来源地址的功能,在网上搜索了一下免费的IP地址数据库未果,就直接使用ip138网站做为数据来源了,通过直接使用PHP代码去查询IP信息,然后分析网页来得到地址,最后插入数据库。$content = iconv("gb2312", "ut原创 2011-07-04 10:57:50 · 3264 阅读 · 0 评论 -
QT显示中文
<br />在main文件中添加以下代码,并且包含头文件 “#include <QTextCodec>”。<br /> <br /> QTextCodec *codec = QTextCodec::codecForName("System");<br /> QTextCodec::setCodecForLocale(codec); <br /> QTextCodec::setCodecForCStrings(codec);<br /> QTextCodec::setCodecForTr(codec);<br原创 2011-04-20 11:08:00 · 572 阅读 · 0 评论 -
QT+flash注意事项
1、连接信号槽connect(flash, SIGNAL(FlashCall(QString)), this, SLOT(onFlashCall(QString)))貌似要在loadMovie之后才有效。2、使用dynamicCall("CallFunction(string, int)", encoder.GetXML())来调用函数时,xml字符串需要是紧凑的(无换行、无缩进) 。3、原创 2011-03-29 17:56:00 · 1203 阅读 · 1 评论 -
QT组件布局
<br /> 今天才算是入门了QT的组件布局,以前都是选几个组件,然后在QT designer中点击一些layout,这样的话这个layout实际上是一个单独的layout,并没有加入到这些组件的父组件中,这样当它们的父组件变化时,这些组件就很难对应着发生变化。<br /> 准确地用法是直接选择一个父控件,然后点击一些layout设置按钮,这样layout在属性面板中做为这个父控件的属性出现了,这个父控件下面的所有子控件就应用了新设置的layout。<br /> <br />还有,使用代码来控制la原创 2011-03-21 16:34:00 · 885 阅读 · 0 评论 -
QT的QHttp无信号发出,窗口程序关闭时崩溃
<br />昨天碰到一个问题就是,我使用VS2010+Qt的方式写了一个窗口程序,然后我需要使用QHttp,我就直接在工程文件里添加了QtNetwork4.lib以及头文件、库文件路径。在写好使用QHttp的代码后发现,我使用的QHttp没有任何信号发出,而且在程序关闭时还弹出错误。<br />经过研究,我当前程序是debug版,而我加入的lib是realease版本,应该在debug版本中使用QtNetworkd4.lib.<br /> <br />并且添加qt模块的工作,似乎编辑.pro更安全和靠谱一些原创 2011-02-23 09:41:00 · 1597 阅读 · 0 评论 -
怎么样得到Boost的options_description的描述字符串
<br /> boost::program_options::options_description desc("options"); stringstream desc_str; desc.print(desc_str);<br /> <br />使用stringstream 来得到options_description的输出原创 2011-03-11 14:25:00 · 1720 阅读 · 0 评论 -
批处理参数(%n)的替代
选项语法: ~0 - 删除任何引号("),扩充 %0 %~f0 - 将 %0 扩充到一个完全合格的路径名(“f”是file,即文件) %~d0 - 仅将 %0 扩充到一个驱动器号 %~p0 - 仅将 %0 扩充到一个路径 %~n0 - 仅将 %0 扩充到一个文件名(“n”是name 文件名)原创 2010-05-05 11:19:00 · 2030 阅读 · 0 评论 -
VS2005改变代码编辑器的背景
最近越来越感觉VS的编辑器的背景色是白色的太刺眼,特别是脑袋前方还有一排日光灯的情况下如果还把编辑器搞的太白,那我眼中的的世界就一片雪白,不知道会不会得雪盲症。我就把VS编辑器的背景色调成灰色,使用“工具”-> “选项”->“环境”->“字体和颜色”,在显示项中选中“纯文本”,然后就项背景色改为自己想要的颜色,ok,确定后再看,背景颜色改变了。但是。。某些标识符的背景色还是原来的色彩。。然后继原创 2010-04-23 08:52:00 · 4348 阅读 · 2 评论 -
Call 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。
想写一个批处理文件去调用多个批处理文件,按照以前写的调用多个程序的方法a.exeb.exec.exe写了一个startAll.bat--------------------内容----------a.batb.batc.bat然后发现,a.bat执行完了后,这个批处理文件就直接停止了。查询资料后发现应该使用call于是更改为startAll.ba原创 2009-09-28 14:33:00 · 5477 阅读 · 2 评论 -
给ListView的条目自绘边框
procedure TGroupItem.ListView1AdvancedCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage; var DefaultDraw: Boolean);var NodeRect: TRec原创 2009-09-26 09:38:00 · 2693 阅读 · 0 评论 -
禁止delphi的variant空类型转换到其它类型抛异常
以前做项目时遇到的读取xml中的一个不存在的元素时老是抛出异常,最开始是使用try...except捕获后使用默认值赋值,但如果元素多的话这样就很烦了,当初的解决方式是采用下面的方式,改变Variants单元中的全局变量NullStrictConvert。 var tempNullStrictConvert:Boolean;begin tempNullStrictConve原创 2009-09-22 11:09:00 · 2257 阅读 · 0 评论 -
带阴影的浮动窗体的实现
昨天设计部要求在软件的浮动小窗口的四周添加上阴影,本来以为很好做,直接拿一张带阴影的图像文件贴上去了。运行 起来完全不是那么回事,在不同的背景下看起来完全不一样,因为阴影是由黑到白渐变的,在白背景下慢慢溶入背景看起来很好,可是在深色背景下看起来四周的阴影看起来就没有渐变效果了,只是一圈灰边。 在网上搜下关于窗体阴影的解决方案,还真不多,搜到两种。第一是在http://www.codepro原创 2009-07-10 09:56:00 · 6945 阅读 · 2 评论 -
关于“无法定位程序输入点getaddrinfo于动态链接库WS32_32.dll上”的问题
今天收到一个bug,说我们的产品在windows 2000的操作环境下无法正常安装运行,安装后弹出“无法定位程序输入点getaddrinfo于动态链接库WS32_32.dll上”的错误。 简单地在网上搜了一下,发现多个讨论和解决方案。 方案一:http://hi.baidu.com/tjmd/blog/ITem/e35d0dd787b540dda144df98 该问题一般出现在用V原创 2009-06-15 15:32:00 · 11682 阅读 · 0 评论 -
flash全屏控制
在FLVPlayer项目升级过程中中使用到flash全屏,而全屏有两种方式,一种是点击外面的菜单或使用快捷键调用flash控件(ActiveX)的callFunction去调用swf里面的函数使之全屏, 另一种是在swf里的按键的事件中写上全屏代码,然后点击按钮实现。 但是,这两种有着本质的区别,第一种实际上只是改变swf里的一些自定义参数并没有使swf全屏,全屏的实际上是窗口,在调原创 2009-06-02 09:37:00 · 3741 阅读 · 0 评论 -
AS2中Tween类的delete与stop
昨天的计划中今天去实现项目中的播放列表单独与控制条自动隐藏,但又不想采用原来控制条的隐藏方式(原来是在隐藏的时候直接将visible设置为false),想做个渐变隐藏。于是就刷刷地加上N行代码。简单地说就是在播放列表的onMouseMove处理事件检测到鼠标在它的外边时就启动一个timer(时间间隔自己设置),当timer时间到了就新建一个Tween使播放列表渐渐隐藏。当检测到鼠标移动到播放列表的原创 2009-05-26 19:58:00 · 1630 阅读 · 0 评论 -
ATL写的DLL中调用MFC对话框
项目需求,制作BHO并且要求有个按钮。BHO使用ATL实现,按钮我想使用MFC的dialg上放置按钮的方式。1、先将ATL工程改成支持MFC,见:http://support.microsoft.com/default.aspx?scid=kb;en-us;q173974,或是在创建工程是直接选上suppot MFC。2、添加Dialog资源,然后在继承于IObjectWithSiteIm原创 2009-07-16 09:45:00 · 3277 阅读 · 5 评论 -
获取收藏夹路径的C++代码
今天在写测试代码时需要获取收藏夹路径,于是就查到了下面SHGetSpecialFolderLocation这个API,然后就试着写了一个,但没经过详细测试,所有不确定在任何一个Windows系统上都能跑。#include #include string GetSystemFavoritePath(){ char path[MAX_PATH] = ""; ITEMIDLIS原创 2009-04-27 11:26:00 · 986 阅读 · 0 评论 -
TvirtualStringTree之DragDrop
昨天在项目中需要做一个播放列表管理界面,播放列表中的结点本身要求可以拖动,并且要求播放列表能够支持从资源管理器上拖入FLV文件和播放列表文件。我继续使用了强大的TvirtualStringTree组件,但是在同时支持这两种拖动上犯了难,以前做的程序都是只支持其中一种拖动。 将TvirtualStringTree组件的dragMode属性设置为dmAutomatic,然后添加onD原创 2009-04-23 10:55:00 · 2015 阅读 · 0 评论