VC 学习 NO.1

lrenwang , 2011/01/04 16:28 , vc , 评论(0) , 阅读(665) , Via 本站原创
工具VC6中文版运行vc6 新建=>工程

选择win32 Console application
工程名称demo1

新建文件=>新建文本 保存到demo1目录下,命名为 demo1.cpp

在 Source files右键添加文件到目录, 选择demo1.cpp  复制代码

//iostream 库的基础是两种命名为 istream 和 ostream 的类型,分别表示输入流和输出流。流是指要从某种 IO 设备上读入或写出的字符序列
#include <iostream>
//主函数必有
int main()
{
  // cin输入
  // cout输出
  // endl 是一个特殊值,称为操纵符,将它写入输出流时,具有输出换行的效果,并刷新与设备相关联的缓冲区。通过刷新缓冲区,用户可立即看到写入到流中的输出。
  std::cout << "Enter two numbers:" << std::endl;
  int v1, v2;
  std::cin >> v1 >> v2;
  std::cout << "The sum of " << v1 << " and " << v2
      << " is " << v1 + v2 << std::endl;

  //如果不写这个,窗口直接关闭
  std::cin >> v1 >> v2;
  return 0;
}


按F7 运行, 生成demo1.exe  哈哈

php生成excel

lrenwang , 2011/01/03 10:17 , Php , 评论(0) , 阅读(913) , Via 本站原创

<?php
/**
* demo
*/

$doc = array (
   array ("哈哈", "测试哦", "12313123"),
   array ("Marlene", "Lucy", "Lina"),
   array ("哈哈", "测试哦", "12313123"),
   array ("Marlene", "Lucy", "Lina"),
);

$m = excel::get_xml('测试下载',$doc);

/**
* excel下载
*
*/
class excel
{

  /**
     * Header of excel document (prepended to the rows)
     *
     * Copied from the excel xml-specs.
     *
     * @access private
     * @var string
     */
  static private $header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?\>
<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"
xmlns:x=\"urn:schemas-microsoft-com:office:excel\"
xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"
xmlns:html=\"http://www.w3.org/TR/REC-html40\">";

  /**
     * Footer of excel document (appended to the rows)
     *
     * Copied from the excel xml-specs.
     *
     * @access private
     * @var string
     */
  static private $footer = "</Workbook>";

  /**
     * Document lines (rows in an array)
     *
     * @access private
     * @var array
     */
  static private $lines = array ();

  /**
     * Worksheet title
     *
     * Contains the title of a single worksheet
     *
     * @access private
     * @var string
     */
  static private $worksheet_title = "Table1";

  /**
     * Add a single row to the $document string
     *
     * @access private
     * @param array 1-dimensional array
     * @todo Row-creation should be done by $this->addArray
     */
  static private function addRow ($array)
  {

    $cells = "";
    foreach ($array as $k => $v):

    $cells .= "<Cell><Data ss:Type=\"String\">" . $v. "</Data></Cell>\n";

    endforeach;

    self::$lines[] = "<Row>\n" . $cells . "</Row>\n";

  }

  /**
     * Add an array to the document
     *
     * This should be the only method needed to generate an excel
     * document.
     *
     * @access public
     * @param array 2-dimensional array
     * @todo Can be transfered to __construct() later on
     */
  static function addArray ($array)
  {

    // run through the array and add them into rows
    foreach ($array as $k => $v):
    self::addRow ($v);
    endforeach;

  }

  /**
     * Set the worksheet title
     *
     * Checks the string for not allowed characters (:\/?*),
     * cuts it to maximum 31 characters and set the title. Damn
     * why are not-allowed chars nowhere to be found? Windows
     * help's no help...
     *
     * @access public
     * @param string $title Designed title
     */
  static function setWorksheetTitle ($title)
  {

    // strip out special chars first
    $title = preg_replace ("/[\\\|:|\/|\?|\*|\[|\]]/", "", $title);

    // now cut it to the allowed length
    $title = substr ($title, 0, 31);

    // set title
    self::$worksheet_title = $title;

  }

  /**
     * Generate the excel file
     *
     * Finally generates the excel file and uses the header() function
     * to deliver it to the browser.
     *
     * @access public
     * @param string $filename Name of excel file to generate (...xls)
     */
  static function generateXML ($filename)
  {

    // deliver header (as recommended in php manual)
    header("Content-Type: application/vnd.ms-excel; charset=UTF-8");
    header("Content-Disposition: inline; filename=\"" . $filename . ".xls\"");

    // print out document to the browser
    // need to use stripslashes for the damn ">"
    echo stripslashes ( self::$header);
    echo "\n<Worksheet ss:Name=\"" . self::$worksheet_title . "\">\n<Table>\n";
    echo "<Column ss:Index=\"1\" ss:AutoFitWidth=\"0\" ss:Width=\"110\"/>\n";
    echo implode ("\n", self::$lines);
    echo "</Table>\n</Worksheet>\n";
    echo self::$footer;

  }

  static function get_xml($name,$array)
  {
    self::addArray ( $array );
    self::generateXML ($name);
  }
}

?>

win7下用vs2008开发PHP扩展

lrenwang , 2010/12/21 07:53 , Php , 评论(3) , 阅读(2026) , Via 本站原创
环境:win7 + vs2008 + cygwin + webserver环境(php5.2.13) php5.2.15源码包
生成过程如下:
1、环境配置,安装cygwin,这个在生成PHP扩展的框架时有用到,我的安装目录为e:\cygwin  
  下载地址http://www.cygwin.com/setup.exe
2、安装webserver  下载地址 http://blog.lrenwang.com/down/other/webserver.rar
3、下载php5.2.15源码包,下载地址:http://www.php.net/get/php-5.2.15.tar.gz/from/this/mirror  (我的是在D:\webserver\c\php)
   D:\webserver\c\php\ext_skel_win32.php中的$cygwin_path变量设置成了MSYS的BIN目录
  $cygwin_path = 'e:\cygwin\bin';
4、安装vs2008,这个时间会久一些
5、如果以上的一切都安装好了,那么转第6步,我们开始开发扩展test

6、在命令行中,cd进入D:\webserver\c\php\ext\目录,输入D:\webserver\php\php.exe ext_skel_win32.php --extname=test,
此时在ext目录下会生成test文件夹及在此文件夹下与扩展相关的文件,包括php_test.h,test.c文件等。
如果php.exe所在目录没有加到PATH中,请在php.exe前面加程序的完整路径

7、打开vs2008,新建基于已有文件的项目,选择VC++,选择文件所在目录,输入项目名称 php_test , 下一步,在项目类型:中选择 动态链接库,next直到完成。
8、修改源码,
打开php_test.h文件,找到PHP_FUNCTION(confirm_test_compiled);在其下面增加一个扩展函数声明:PHP_FUNCTION(test_echo);
打开test.c文件,找到zend_function_entry test_functions[],在其元素中添加 PHP_FE(test_echo,  NULL)
在test.c文件中添加如下代码

PHP_FUNCTION(test_echo)
{
  char *arg = NULL;
  int arg_len, len;
  char *strg;

  if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
    return;
  }

  len = spprintf(&strg, 0, "This is %s's extension.the input string is %s.", "test", arg);
  RETURN_STRINGL(strg, len, 0);
}

9、按F7 build此项目,此时会有文件找不到报错,此乃php部分源码没有包含的原因,右键项目属性,
  选择【属性配置】-> 【C/C++】-> 【常规】-> 【附加包含目录】,
  将源码根目录,main目录,TSRM目录,Zend目录添加到此处我的是
  (”D:\webserver\c\php;D:\webserver\c\php\main;D:\webserver\c\php\TSRM;D:\webserver\c\php\Zend”)
  
10、继续build,此时可能会显示zend_config.h文件找不到,此时为部分宏没有定义,解决方案:
选择项目属性,选择【属性配置】-> 【C/C++】-> 【预定义】-> 【预定义处理器】,在此处理添加

ZEND_DEBUG=0;COMPILE_DL_test;ZTS;ZEND_WIN32;PHP_WIN32;HAVE_test=1;
对于不同的扩展可以将COMPILE_DL_test和HAVE_test中的test替换成你的扩展名


12、继续build,此时可能会显示fatal error LNK1120,
  解决方案:打开项目属性,选择【属性配置】-> 【连接器】->【输入】->【Additional Dependencies】,在此处添加php5ts.lib,
  D:\webserver\c\php\dev\php5ts.lib
另外需要在【工具】->【选项】->【项目和解决方案】->【VC++ 目录】,在【显示以下内容目录:】下拉中,选择库文件,将php5ts.lib所在的路径添加进来,此文件存在于 二进制版本的dev/lib目录下。
13、右键solution属性,将Configuration选择为Release
14、build,在ext\test\Release下会有生成你一个以你的项目名为名称的dll文件(我的为php_test.dll)
15、将php_test.dll文件拷贝到机器中运行的php所在的ext目录,修改php.ini文件,添加一行:extension=php_test.dll,重启apache,
16,运行一个包含了 echo test_echo(”phppan.com”);语句的php文件,可以看到有输出This is test’s extension.the input string is phppan.com.
如果你在启动apache中有报错为:
PHP Warning: PHP Startup: test: Unable to initialize module\nModule compiled with build ID=API20090626,TS\nPHP compiled with build ID=API20090626,TS,VC6\nThese options need to match\n in Unknown on line 0

Warning: PHP Startup: test: Unable to initialize module
Module compiled with build ID=API20090626,TS
PHP compiled with build ID=API20090626,TS,VC6
These options need to match
in Unknown on line 0
你需要在main/config.w32.h中添加如下语句
#define PHP_COMPILER_ID “VC6″
Tags:

DOS下打印文件

lrenwang , 2010/12/12 19:41 , windows , 评论(0) , 阅读(879) , Via 本站原创
在使用其它MS-DOS命令时打印正文文件。

如果输出设备连接到系统的串行口或并行口,则该命令可以在后台打印。


语法 :

PRINT [/D:device] [/B:size] [/U:ticks1] [/M:ticks2] [/S:ticks3]
[/Q:qsize] [/T] [[drive:][path]filename[ ...]] [/C] [/P]

使用下列语法按默认参数安装PRINT或不影响打印队列显示打印队列的内容:

PRINT



参数 :

[drive:][path]filename
指定要打印的一个或多个文件位置和文件名。可在一行上包括多个文件(一般最多为10个)。


开关 :

/D:device
指定打印设备名。并行口的合法值为LPT1、LPT2、LPT3。串行口的合法值为COM1、COM2、COM3和COM4。默认值为LPT1,它也称为PRN。/D开关必须位于文件名前。

/B:size
设置内部缓冲区的大小(单位为字节),缓冲区用于在把数据送给打印机前存储数据。缓冲区大小的最小和默认值为512;最大值为16384。增大该值会减少系统的可用内存,但会加快打印速度。

/U:ticks1
指定PRINT等待打印机可用的最大时钟数(每秒有18个时钟)。如果在指定的时间片内打印机不可用,则不打印。ticks1的值必须在1到255之间。其默认值为1。

/M:ticks2
指定PRINT打印一个字符可花费的最大时钟数。ticks2的值在1到255之间,其默认值为2。如果打印字符速度太慢,MS-DOS会显示一条错误消息。

/S:ticks3
指定MS-DOS调度程序分配给后台打印的时钟数。ticks3的值在1到255之间。其默认值为8。增大该值可加快打印,但会降低其它程序的运行速度。

/Q:qsize
指定打印队列中的最大文件数。qsize的值必须在4至32之间。默认值为10。

/T
从打印队列中删除所有文件。

/C
从打印队列中删除文件。可在命令行上同时使用/C和/P开关。

当/C开关位于文件名列表之前时,它适用于/C开关之后的所有文件,直到碰到/P开关,在这种情况,/P开关适用于它前面的文件。

当/C开关在文件名之后,它适用于/C开关前的文件及/C开关后的所有文件,直到碰到/P开关,在这种情况,/P开关适用于它前面的文件。

/P
在打印队列中加入文件。可在命令行上同时使用/C和/P开关。

当/P开关位于文件名列表之前时,它适用于/P开关后的所有文件,直到碰到/C开关。在这种情况,/C开关适用于它之前的文件。

当/P开关位于文件名之后时,它适用于/P开关前和/P开关之后的所有文件,直到碰到/C开关为止。在这种情况,/C开关适用于它之前的文件。




相关命令:

关于配置连接到并行口的打印机的信息,请参阅命令。

关于显示打印机状态的信息,请参阅命令。

关于配置连接到串行口的打印机的信息,请参阅命令。

关于准备打印机字符集切换的信息,请参阅命令。




--------------------------------------------------------------------------------

PRINT─注解



打印队列项的长度

每个打印队列项最多64个字符.每个打印队列项包括驱动器字母,目录和子目录。



开关限制

启动MS-DOS后第一次使用PRINT命令时,才能使用/D、/B、/U、/M、/S和/Q开关。在使用PRINT后要再次使用这些开关时,必须重新启动计算机。



尽可能地使用应用程序自身的打印命令

许多应用程序自身具有打印命令.应使用应用程序自身的打印命令去打印该应用程序创建的文件。




--------------------------------------------------------------------------------

PRINT─例子

要查看打印队列的状态,可键入以下命令:

print

MS-DOS会显示正在打印的文件名(如果有的话)、队列中的文件名,如果有错误,还会显示错误信息。

以下命令从打印队列中删除PENCIL.TST文件:

print a:pencil.tst /c

以下命令从打印队列中删除PENCIL.TST文件,并加入PEN.TST文件:

print pincil.tst /c pen.tst /p

下列命令中使用的开关为启动计算机后第一次使用PRINT命令时才能使用的开关。

以下命令为LPT1设置打印队列:

print /d:lpt1

要指定PRINT命令为打印机可用等待60个时钟数,并为后台打印分配25个时钟数(而非默认的8个时间片),可使用如下命令:

print /u:60 /s:25

下例指定PRINT打印每个字符最多花费4个时钟数(而非默认的2个时间片):

print /m:4

要改变打印队列中的最大文件数,可使用如下带/Q开关的PRINT命令:

print /q:32
mkdir /bat
vi /bat/sqlbak

#!/bin/sh
/usr/local/webserver/mysql/bin/mysqldump -uroot -p123456 test>  /data/bak/sql/test_$(date -d "day" +"%Y%m%d").sql

chmod +x vi /bat/sqlbak

加入定时计划 crontab -e
每天晚上5点备份数据库
00 17 * * * /bat/sqlbak



操作系统 centos5
Tags:
分页: 14/38 第一页 上页 9 10 11 12 13 14 15 16 17 18 下页 最后页 [ 显示模式: 摘要 | 列表 ]