存档

‘程序开发’ 分类的存档

【C/C++】联合union的用法和说明

2011年4月26日 没有评论

看了几篇c语言中union的文章,整理记录一下

============分=======隔=======线============

1、什么是联合?

“联合”是一种特殊的类,也是一种构造类型的数据结构。在一个“联合”内可以定义多种不同的数据类型, 一个被说明为该“联合”类型的变量中,允许装入该“联合”所定义的任何一种数据,这些数据共享同一段内存,已达到节省空间的目的(还有一个节省空间的类型:位域)。 这是一个非常特殊的地方,也是联合的特征。另外,同struct一样,联合默认访问权限也是公有的,并且,也具有成员函数。

阅读全文…

分类: 程序开发 标签: 1,450次阅读

【Discuz】自动同步登陆的完美解决办法

2011年4月3日 6 条评论

Discuz很强大,安装、使用都很方便,能满足大部分论坛的需求,于是在做系统开发用到论坛的话几乎是毫不犹豫地会选择Discuz(对比过Discuz和PHPWind)。

但Discuz的同步登陆问题是个头疼的问题,网上搜搜,类似的文章、贴子无数,也参考过很多的文章,始终没能完美地解决自己系统登陆后同步登陆Discuz的问题;在开发机上正常的,放到服务器上就会出现无法同步登陆的情况。

无奈之下,自己看了一下UCenter、Discuz同步登陆的机制,提炼出了以下用于同步登陆Discuz的代码:

阅读全文…

分类: 程序开发 标签: 2,429次阅读

【PHP】setcookie设置Cookie用法(及设置无效的问题)

2011年4月3日 没有评论

平时用Session比较多,很少用到Cookie,这次是为了解决Discuz!自动同步登陆不得不用Cookie。

结果碰到一个问题,setcookie设置了Cookie并没有生效,在浏览器端也没有看到。查了一下,原来是setcookie是通过HTTP请求响应的Header来完成的,需要在请求响应内容输出之前执行(就像其他Header设定一样)。

在php.ini中error_reporting = E_ALL的情况下,输出内容之后再setcookie会弹出以下提示:

Warning: Cannot modify header information – headers already sent by (output started at C:\xampp\htdocs\b.php:2) in  on line

但因为当时php.ini设置成了error_reporting = E_ALL & ~E_NOTICE,于是没有任何提示,所以开发的时候还是建议设成error_reporting = E_ALL 方便观察到一些异常情况

附一个setcookie用法实例

阅读全文…

分类: 程序开发 标签: 2,344次阅读

【PHP】获取MySQL数据库里所有表的方法

2011年4月3日 没有评论

获取某个MySQL数据库中所有表的PHP代码如下:

function list_tables($database)
{
    $rs = mysql_list_tables($database);
    $tables = array();
    while ($row = mysql_fetch_row($rs)) {
        $tables[] = $row[0];
    }
    mysql_free_result($rs);
    return $tables;
}

但由于mysql_list_tables方法已经过时,运行以上程序时会给出方法过时的提示信息,如下:

Deprecated: Function mysql_list_tables() is deprecated in on line xxx

阅读全文…

分类: 程序开发 标签: , 1,293次阅读

【PHP】强制下载文件的代码(解决了IE下中文文件名乱码问题)

2011年4月3日 没有评论

以下这段代码作用是:浏览器提交excel格式的数据和文件名到服务器上,PHP将请求转化为可下载的excel文件,并要求浏览器弹出文件下载提示窗口。

中间遇到一个问题是提交的中文文件名直接放到header里在IE下会变成乱码,解决方法是将文件名先urlencode一下再放入header,如下。

<?php

$file_name = urlencode($_REQUEST['filename']);

header("Pragma: public");

header("Expires: 0");

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

header("Content-Type: application/force-download");

header('Content-Type: application/vnd.ms-excel; charset=utf-8');

header("Content-Transfer-Encoding: binary");

header('Content-Disposition: attachment; filename='.$file_name);

echo stripslashes($_REQUEST['content']);

?>
分类: 程序开发 标签: 1,552次阅读

【C】常量指针和指针常量的区别

2011年3月30日 没有评论

常量指针,就是指向常量的指针,关键字 const 出现在 * 左边,表示指针所指向的地址的内容是不可修改的,但指针自身可变。

指针常量,就是指针内容的常量,关键字 const 出现在 * 右边,表示指针自身不可变,但其指向的地址的内容是可以被修改的。

比如:

        常量指针: const char *ptr = “hello”     ptr可改变,*ptr不可改变

        常量指针: char const *ptr = “hello”     ptr可改变,*ptr不可改变

        指针常量: char * const ptr = “hello”    ptr不可改变,*ptr可改变

阅读全文…

分类: 程序开发 标签: 1,210次阅读

【C】int与size_t的区别

2011年3月30日 没有评论

size_t是一些C/C++标准在stddef.h中定义的。这个类型足以用来表示对象的大小。

size_t的真实类型与操作系统有关,在32位架构中被普遍定义为:

typedef unsigned int size_t;

而在64位架构中被定义为:

typedef unsigned long size_t;

阅读全文…

分类: 程序开发 标签: 1,737次阅读

【C】取出结构中成员变量偏移位置的宏定义

2011年3月25日 没有评论

昨天看到的一句代码,是用来取出结构中成员变量相对偏移位置的宏,如下:

#define OFFSET_OF_STRUCT(type, var) ((size_t)(&((type *)NULL)->var))

举个例子

阅读全文…

分类: 程序开发 标签: 1,114次阅读

【Sybase】text类型字段select结果变短的解决办法

2011年3月10日 没有评论

在text类型字段中,如果插入的数据很长,那么select出来的结果会不完全。原因为考虑到text类型可能会存储大量数据的特殊情况,常规的select其实也不希望输出所有数据从而造成较大的数据传输延时,于是设定了文本最大输出长度,默认情况下为32768。可以通过设置textsize来改变,具体命令如下:

阅读全文…

分类: 程序开发 标签: 1,189次阅读

【WPF】C#跨线程操作窗体控件

2011年3月4日 没有评论

为防止任务处理对界面操作的阻塞,用多线程进行处理是自然对用到的方法,不过也引入了跨线程操作的问题。今天碰到的问题是任务线程需要获取和设置窗体控件的属性,解决还是蛮容易的,引入delegate即可解决。

写了一个实例程序,效果是文本框txtOutput中实时显示文本框txtUsername和密码框txtPassword的内容,代码如下:

阅读全文…

分类: 程序开发 标签: 1,890次阅读