编写断点续传和多线程下载模块
本文配套源码
概述
在当今的网络时代,下载软件是使用最为频繁的软件之一。几年来,下载技术也在不停地发展。最原始的下载功能仅仅是个“下载”过程,即从WEB服务器上连续地读取文件。其最大的问题是,由于网络的不稳定性,一旦连接断开使得下载过程中断,就不得不全部从头再来一次。
随后,“断点续传”的概念就出来了,顾 ...
简单的表达式求值
一直很想做个比Windows自带的高级一点的计算器,能将整个表达式输入,然后求值。这个程序要求读者具备编译原理的一些知识。举个实例来说明程序处理过程。假设要求值的表达式为 :
-25*(56+15)# (其中#号作为表达式结束标志)。
首先对表达式进行词法分析,允许出现的字符为:
{0 ,1, 2 ,3 ,4 ,5 ,6, 7 ,8, 9 . ...
C++编程人员容易犯的10个C#错误
我们知道,C#的语法与C++非常相似,实现从C++向C#的转变,其困难不在于语言本身,而在于熟悉.NET的可管理环境和对.NET框架的理解。尽管C#与C++在语法上的变化是很小的,几乎不会对我们有什么影响,但有些变化却足以使一些粗心的C++编程人员时刻铭记在心。在本篇文章中我们将讨论C++编程人员最容易犯的十个错误。
陷阱1: 没 ...
浏览文件的一段代码
#include
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TTreeNode* currnode;
int DirCount,FileCount,DriveCount;
//--------------------------------------------------- ...
PE文件格式文档
NT头---可选头---IMAGE_DATA_DIRECTORY---IMAGE_DIRECTORY_ENTRY_RESOURCE--->
IMAGE_SECTION_HEADER[](节头/表)
……
节n---->IMAGE_RESOURCE_DIRECTORY_ENTRY[]---IMAGE_RESOURCE_DIRECTORY[]
-----------------0OS头
-----------------1:NT头
typedef struct _IMAGE_NT_HEADERS {
DWORD Signature;//PE文件头标志 :"PE\0 ...
C++ Builder中目录处理的一些函数
在编程时,经常有一些针对目录的操作,如打开目录对话框选择一个目录,直接创建多级目录,直接删除多级目录,判断某个目录是否存在等。本文就这些问题给出编程实现方法,并给出详细的程序代码,供各位编程爱好者参考。
一、判断目录是否存在:
C++ Builder中提供了检查文件是否存在的函数FileExists,但没有提供检查目录是否存在 ...
如何实现鼠标拖放文件
一.
1:取得要拖放的文件名与路径。
2:取得目标文件名与路径。
3:在拖动事件中把文件从原目录拷入目标目录。
4:取得文件图标放入TImageList。
5:以一种方式显示文件名和图标。
这里有些难度的是第四步,如何取得图标,现把刚学来的再告诉你(以在TListView显示图标为例):
在头文件中加入:#define NO_WIN32_LEAN_AND_ ...
获得文件的版本信息
我们在许多情况下,(如编制安装程序时),需要获得应用程序的版本信息,以决定是否更新文件。最简单的办法是比较文件的生成日期。其实,对于EXE、DLL、OCX等类型的文件有更加准确的方法获得文件的版本信息。利用API函数GetFileVersionInfo,GetFileVersionInfoSize,VerQueryValue,我们可以很方便地获得文件的一系列信息 ...
在C++Builder中使用Delphi文件
在使用多种语言和工具编写一个应用程序时,最为困难的事情之一是创建和维护定义文件的接口。幸运的是,C++Builder把这一切都替你做好了。当在项目中加入一个.PAS文件时,C++Builder会自动创建一个.HPP文件。
在CPP文件中,可以调用Pascal的函数、对象等。这为Delphi的程序员移植全部或部分的项目提供了便捷的途径。
下面是 ...
C++ Builder中各种资源的利用
在编写程序的过程中,经常要用到各种资源。比如说,想给自己的程序换个自己的图标,使用一些活泼的光标来增加趣味性,播放一些声音和动画文件,或者使用别人写好的程序来实现某个功能。我们往往希望将这些资源直接放到EXE文件中以形成一个单独的可执行文件,这就存在一个如何在运行时访问和使用这些资源的问题。
----在编译 ...
C++BUILDER的文件操作
在编程的过程中,文件的操作是一个经常用到的问题,在C++Builder中,可以使用多种方法对文件操作,下面我就按以下几个部分对此作详细介绍,就是:
1、基于C的文件操作;
2、基于C++的文件操作;
3、基于WINAPI的文件操作;
4、基于BCB库的文件操作;
5、特殊文件的操作。
壹、基于C的文件操作
在ANSI C中,对文件的操作分为 ...
如何把一个网页存为一个单独的mht文件
#include "SHDocVw_OCX.h"
#include "cdoex.h"
#include "msado15.h"
using namespace CDO;
// 本文是ccrun(老妖)根据相关资料改的,在BCB 6.0 下成功编译并测试通过.
// 如果有不能正常运行的,可能需要在机器上安装有outlook.
void __fastcall SaveWholePage(BSTR bstrUrl, BSTR bstrFileName)
{
CoInitialize(NULL);
...
文件关联型木马的编程思路
我们知道一般情况下想在开机启动程序,就要把程序写在注册表中的
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunService
等环境中,由于这个值大家都比较熟悉所以 ...
选择目录的两种方法
在我们的应用程序中经常需让用户选择目录,如杀毒软件中用户选择处理目录等。这就涉及目录的选择,我们可使用如下方法之一让用户选择目录:
1、使用SHBrowseForFolder和SHGetPathFromIDList函数
函数原形申明如下:
WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder(LPBROWSEINFO lpbi);
WINSHELLAPI BOOL WINAPI SHGetP ...
用C++ Builder设计实现文件切割机
一、程序设计原理
我们知道文件之所以能够被分割是因为所有文件都是以二进制的形式存储的,然后再根据文件系统的相应规定来进行读取处理。我们基于这个原理,把所有类型的文件都以二进制进行读写,合并时再以二进制的格式把分割后的文件重新重新组合起来,这样就实现了对文件的分割与合并。
二、程序设计过程及祥解
1.我们 ...
BCB提供的文件操作的库函数
在BCB中也提供了文件操作的函数,这些函数的功能和前面所介绍的大致相同,但这类函数和BCB关系紧密,能使用BCB中的AnsiString等数据类型,在BCB中用这种方式的文件操作是最方便的,下面我就把这种文件操作详细介绍。
在BCB提供的这组文件操作函数中,可分为三种类型,就是:1、文件名函数,2、文件管理函数;3、文件I/O函数 ...
从系统中取得指定资源图像
在Winuser.h中定义了一些系统常用的资源,比如对话框的图标,某些按钮上的图像等。
以下是部分OEM资源序号和一些标准ICON的ID:
//---------------------------------------------------------------------------
// OEM Resource Ordinal Numbers
#define OBM_OLD_CLOSE 32767
#define OBM_SIZE 32766
#d ...
PE文件格式分析心得
PE文件格式最近好像炒得沸沸扬扬,由于我正在做一个这样的程序,索性将自己的心得写出来与大家同享。
PE文件头分两大部分:
1:DOS ‘MZ’ HEADER
2:IMAGE_NT_HEADERS
其中IMAGE_NT_HEADERS中包含
PE signature
IMAGE_FILE_HEADER
IMAGE_OPTIONAL_HEADER(其中包含Data Direcotry)
文件头后紧跟着为
Section Table (array ...
C++ Builder中保持控件的位置及大小
C++ Builder/Delphi是Inprise(原Borland)公司广受欢迎的可视化C++/Pascal开发工具,利用它可极大地加快应用程序的开发速度。但是,也正因为其是可视化编程工具,将控件拖放到Form后,控件的位置就固定死了。随着Form的大小或屏幕分辨率的改变,控件和Form本身的位置往往变得非常混乱。本文将介绍一些正确定位控件及Form的 ...
用C++Builder设计动态网页按钮
在信息爆炸式增长的今天,每天都有大量新的网站诞生,每时每刻网上都传递着难以计数的信息。建立网站来进行自我宣传和信息交流已成为一种新潮的媒体宣传方式,多姿多彩的网页也成为Internet中最为绚丽的部分。您也许已经注意到,在网络速度不断提高的今天,网站的站主们为了留住访问者的视线,开始越来越多地在网页中使用精 ...