delphi2013源码大全-15G

zhuye1 2013-02-26 10:51:00
8年来收集的全网最全的delphi 代码,新旧代码都有,一共15个G左右,可以说是网络上最的delphi 代码,没有视频、书籍 与 控件(除非部分程序里自己压缩有控件)在里面。

有商业代码,有精品代码,也有各种示例,是学习delphi 的很好的素材.是技术团队团队技术共享的好资源 适用人群:delphi 初学者、delphi 爱好者、delphi技术人员。

需要的联系我
...全文
1552 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
竹子1 2013-04-02
  • 打赏
  • 举报
回复
已经升级到22.6G了
vickly 2013-03-26
  • 打赏
  • 举报
回复
共享出现来吧
airways1 2013-03-24
  • 打赏
  • 举报
回复
不错,支持下
yaopengpeng 2013-03-24
  • 打赏
  • 举报
回复
引用 22 楼 unsigned 的回复:
要知道东西多了,反倒是一个负担,虽然里面可能有许许多多你用得上的,但是当你找得出来的话,时间已经耗掉了好大一部分了,而这些时间是完全可以好好利用的。
[size=40px]同感,只是感受得比较晚了[/size]
僵哥 2013-03-22
  • 打赏
  • 举报
回复
怎么样的代码才算商业代码?怎么样的代码才是精品代码,按什么标准来衡量,谁来评定?如果拿到一堆自己用不上的代码,那就是数字垃圾。早年我从国内外上近百个网站收集了三十多个GB的代码,最后就一条Format指令解决。要知道东西多了,反倒是一个负担,虽然里面可能有许许多多你用得上的,但是当你找得出来的话,时间已经耗掉了好大一部分了,而这些时间是完全可以好好利用的。所以,在很多时候你搜集这些代码,倒不如多去学几门语言,多去什么一些开源网站上去按自己的具体需求进行搜索来得有效。
ah竹子 2013-03-20
  • 打赏
  • 举报
回复
不错,有人收集,支持下
  • 打赏
  • 举报
回复
王菲特 2013-03-14
  • 打赏
  • 举报
回复
能够分析完 自带 demo就很了不起了--我新手
fyzqk1983 2013-03-13
  • 打赏
  • 举报
回复
这是懒人才要这些。
竹子1 2013-03-13
  • 打赏
  • 举报
回复
懒人才要这些 懒人是聪明人,懒人的时间是值钱的,去做更有价值的东西
竹子1 2013-03-12
  • 打赏
  • 举报
回复
delphi 技术千人群 195216132
山东蓝鸟贵薪 2013-03-12
  • 打赏
  • 举报
回复
楼主将硬盘邮寄给我吧, 我给你50元现金的
竹子1 2013-03-11
  • 打赏
  • 举报
回复
最近有更新,18G了
ffwin 2013-03-07
  • 打赏
  • 举报
回复
, mark
竹子1 2013-03-07
  • 打赏
  • 举报
回复
我只是收集了而已,辛苦的啊
hhhfff2010 2013-03-03
  • 打赏
  • 举报
回复
这年头,处处都是商业广告。。。
竹子1 2013-03-03
  • 打赏
  • 举报
回复
单个的代码可以免费提供,全部的是刻盘,收点费用
竹子1 2013-03-03
  • 打赏
  • 举报
回复
需要的联系我 QQ 35050809
haitao 2013-02-28
  • 打赏
  • 举报
回复
免费还是收费,应该首先提一下
wuyishiluan 2013-02-28
  • 打赏
  • 举报
回复
樓主好人,開放下載唄
加载更多回复(5)
ICS - Internet Component Suite - V8 - Delphi 7 to RAD Studio 10 Seattle ======================================================================= (Aka FPIETTE's Components) Revised: March 3, 2016 http://www.overbyte.be/ http://wiki.overbyte.be/ Table of content: ----------------- - Legal issues - Donate - Register - Contributions - Latest Versions - Version Control repository - Installation - Available VCL Components - Sample applications - About SSL - Support - Release notes - Midware - Known problems - Special thanks Legal issues: ------------- Copyright (C) 1997-2016 by Fran鏾is PIETTE Rue de Grady 24, 4053 Embourg, Belgium SSL implementation includes code written by Arno Garrels, Berlin, Germany, contact: ICS is freeware. This software is provided 'as-is', without any express or implied warranty. In no event will the author be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented, you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. 4. You must register this software by sending a picture postcard to the author. Use a nice stamp and mention your name, street address, EMail address and any comment you like to say. 5. As this code make use of OpenSSL, your rights are restricted by OpenSSL license as soon as you use any SSL feature. See http://www.openssl.org for details. Donate ------ ICS is freeware. You can use it without paying anything except the registration postcard (see "register" below). But of course donations are welcome. You can send cash (Euro currency or US Dollars) in an envelop to my street address or buy a gift certificate at Amazon in the UK. I will then use it to buy books. Here is the direct URL at Amazon UK (nearest to my home, please don't use another): http://www.amazon.co.uk/exec/obidos/gc-email-order1/ref=g_gc_email/202-6198323-6681414 For more generous amount, contact me by email. Register -------- ICS is freeware. If you use the components, you must register by sending a picture postcard showing the area you live in and some beautiful stamps for my kids who are stamp collectors. Do not use an envelop, I collect USED postcards sent to me. Write on the postcard that it is your ICS registration. Address your card to: Francois PIETTE, rue de Grady 24, 4053 Embourg, Belgium. Don't forget to mention your name, street address, EMail and web site. Contributions: -------------- ICS has been designed by Fran鏾is PIETTE but many other peoples are working on the components and sample programs. The history of changes in each source file list all developers having contributed (When no name is given, the change is by F. Piette). I can't list all contributors here but I want to specially thanks two specially active contributors: - Arno Garrels - Angus Robertson Latest versions: --------------- The latest versions of ICS can be downloaded from the ICS Wiki web site: http://wiki.overbyte.be/wiki/index.php/ICS_Download ICS V5 and V6 are archive releases no longer updated, last supported release was 2007. ICS V7 is a stable release that may still be updated for major bugs, but not for new releases of Delphi, latest it supported was XE3. ICS V8 is the current development release which is held in a public Version Control repository that is zipped each night for easy download. The download page above also includes the OpenSSL binaries needed to support SSL. ICS V8 supports Delphi 64-bit and Mac OS-X projects. Note that latest C++ Builder version supported is XE3 (lack of spare time, sorry). ICS V9 is in early development and is planned to support Android. There are no current plans for ICS for iOS. Version Control repository: --------------------------- svn://svn.overbyte.be/ics or http://svn.overbyte.be:8443/svn/ics (Usercode = ics, password = ics) Installation: ------------- ICS V8 has been designed for Embarcadero Delphi 2009 and up, and C++ Builder 2009 and up, but is fully compatible with Borland Delphi 7 and CodeGear 2006 and 2007. Embarcadero RAD Studio includes Delphi and C++ Builder. http://www.embarcadero.com/ With Delphi XE2 and later, VCL 64-bit Windows targets are supported for Delphi only. Currently FireMonkey is partly supported for Delphi only (there are still a few non-ported components). ICS for Mac OSX is currently experimental. The zip file has sub-directories in it. You must use the WinZip "Use folder names" option to restore this directory tree or you will have problems because the files would not be in their proper subdirectories. Please note most of these directories are differently named to ICS V7 and earlier, to ease support of multiple versions of Delphi and platforms, and to ease location of similar sample projects. Please don't install V8 over an existing V7 installation, it will be a mess of old and new. This is the new V8 sub-directory layout: .\ Info directory .\Install Component packages project groups for all versions .\Packages (was Delphi\Vc32) Delphi (7 and up) and C++Builder (2006 and up) packages projects .\Source (was Delphi\Vc32) ICS Delphi source code built into packages .\Source\Include (was Delphi\Vc32) .inc files (including OverbyteIcsDefs.inc) .\Source\Extras (was Delphi\Vc32) Extra source code not built into packages .\Source\zobj125 (was Delphi\Vc32) ZLIB C OBJ include files .\Lib Unit output directories for all package builds, subdirectories | for 2007+ will be created on building the packages \$(Config) Release / Debug | \$(Platform) Win32 / Win64 / OSX32 | \ D7..XE8, 10 Seattle includes .dcu and .dfm files for Delphi and .obj and .hpp files for C++ Builder .\Samples Delphi Win32/Win64 common source for all demos .\Samples\delphi\BroswerDemo Delphi Win32/Win64 Web Browser sample application (all Delphi versions) .\Samples\delphi\BroswerDemo\Resources Resource file, web pages and movie linked into browser demo .\Samples\delphi\FtpDemos Delphi Win32/Win64 FTP sample applications (all Delphi versions) .\Samples\delphi\MailNewsDemos Delphi Win32/Win64 SMTP, POP3, NNTP sample applications (all Delphi versions) .\Samples\delphi\MiscDemos Delphi Win32/Win64 Miscellaneous applications (all Delphi versions) .\Samples\delphi\OtherDemos Delphi Win32/Win64 DNS, Ping, SNMP, Syslog sample applications (all Delphi versions) .\Samples\delphi\PlatformDemos Delphi FireMonkey and cross-platform samples (Delphi XE2+) .\Samples\delphi\SocketDemos Delphi Win32/Win64 Socket sample applications (all Delphi versions) .\Samples\delphi\sslinternet Delphi Win32/Win64 SSL-enabled sample applications (all Delphi versions) .\Samples\delphi\WebDemos Delphi Win32/Win64 HTTP sample applications (all Delphi versions) .\Samples\delphi\WebDemos\WebAppServerData Directory for WebAppServ demo data files .\Samples\delphi\WebDemos\WebServData Directory for WebServ demo data files .\Samples\cpp\internet C++Builder sample applications .\Samples\cpp\internet\cb2006 C++Builder 2006 projects .\Samples\cpp\internet\cb2007 C++Builder 2007 projects .\Samples\cpp\internet\cb2009 C++Builder 2009 projects .\Samples\cpp\internet\cb2010 C++Builder 2010 projects .\Samples\cpp\internet\cbXE C++Builder XE projects .\Samples\cpp\internet\cbXE2 C++Builder XE2 projects UPGRADING and REINSTALLING Uninstall an existing ICS package (Menu | Component | Install Packages, select the component package and click Remove). Rename the old ICS directory and unzip to a new or empty directory, remove the old path from the library path and add either the new .\Source directory to the library path under Tools | Options |... or the appropriate .\Lib subdirectory according to version, ie .\Lib\Debug\Win32\D2007 for Delphi 2007. The latter has the advantage that the ICS source code won't be recompiled whenever your project is build. Also under Tools | Options |... add the new .\Source directory to the Browsing path. All DELPHI and C++ BUILDER VERSIONS/WIN32 Always upgrade your compiler with the latest update available from Embarcadero. Always update your system with http://windowsupdate.microsoft.com SSL or not SSL? By default the SSL code is compiled into the run-time package and additional SSL- enabled components are installed. In order to not compile the SSL code into the run-time package and to not install the SSL-Enabled components you need to remove the conditional define USE_SSL from both the run-time and design-time package. However if you do not build your applications with run-time packages it is recommended to build the packages with default settings. The SSL code will the be compiled into your applications depending on whether the conditional define USE_SSL is set in the project options or not (this requires having the .\Source directory in either in the library path or in projects Search path). Actual use of SSL in your applications also requires the OpenSSL files LIBEAY32.DLL and SSLEAY32.DLL being available somewhere in the path. Note different DLLs are needed for Win32 and Win64 applications. The ICS distribution includes the latest Win32 OpenSSL files in the .\OpenSSL-Win32 directory and the two main DLLs duplicated in .\Samples\delphi\sslinternet. Other OpenSSL files, including older and Win64, may be downloaded from: http://wiki.overbyte.be/wiki/index.php/ICS_Download INSTALLATION USING THE INSTALL PROJECT GROUPS For each Delphi and C++ Builder version one project group is provided in directory .\Install: Delphi 7 : D7Install.bpg Delphi 2006 : D2006Install.bdsgroup Delphi 2007 : D2007Install.groupproj Delphi 2009 : D2009Install.groupproj Delphi 2010 : D2010Install.groupproj Delphi XE : DXeInstall.groupproj Delphi XE2 : DXe2Install.groupproj // VCL only, no FireMonkey components Delphi XE2 : DXe2InstallVclFmx.groupproj // Both VCL and FireMonkey components Delphi XE3 : DXe3Install.groupproj // VCL only, no FireMonkey components Delphi XE3 : DXe3InstallVclFmx.groupproj // Both VCL and FireMonkey components Delphi XE4 : DXe4Install.groupproj // VCL only, no FireMonkey components Delphi XE4 : DXe4InstallVclFmx.groupproj // Both VCL and FireMonkey components Delphi XE5 : DXe5Install.groupproj // VCL only, no FireMonkey components Delphi XE5 : DXe5InstallVclFmx.groupproj // Both VCL and FireMonkey components Delphi XE6 : DXe6Install.groupproj // VCL only, no FireMonkey components Delphi XE6 : DXe6InstallVclFmx.groupproj // Both VCL and FireMonkey components Delphi XE7 : DXe7Install.groupproj // VCL only, no FireMonkey components Delphi XE7 : DXe7InstallVclFmx.groupproj // Both VCL and FireMonkey components Delphi XE8 : DXe8Install.groupproj // VCL only, no FireMonkey components Delphi XE8 : DXe8InstallVclFmx.groupproj // Both VCL and FireMonkey components Delphi 10 Seattle : D10SInstall.groupproj // VCL only, no FireMonkey components Delphi 10 Seattle : D10SInstallVclFmx.groupproj // Both VCL and FireMonkey components C++ Builder 2006 : CB2006Install.bdsgroup C++ Builder 2007 : CB2007Install.groupproj C++ Builder 2009 : CB2009Install.groupproj C++ Builder 2010 : CB2010Install.groupproj C++ Builder XE : CBXeInstall.groupproj C++ Builder XE2 : CBXe2Install.groupproj // VCL only no FireMonkey components C++ Builder XE2 : CBXe2InstallVclFmx.groupproj // Both VCL and FireMonkey components C++ Builder XE3 : CBXe3InstallVclFmx.groupproj // Both VCL and FireMonkey components 1 - Do a File/Open Project, navigate to the Install directory, select the correct file and open it. The project manager view should now display two package projects, one run-time and one design-time package. The run-time package name contains the "Run" suffix. The design-time package name contains the "Design" suffix. 2 - Select and Build the run-time package (do not install). 3 - Select and Install the design-time package. After a few seconds, you should have a dialog box telling you the package has been installed with a bunch of new components registered in the Tool Palette under "Overbyte ICS" and "Overbyte ICS SSL". Then do a "Save All" and a "Close All". 4 - One package is installed, called 'Overbyte ICS Design-Time Package for Delphi xxx'. 5 - Various directories under .\Samples\delphi\ include samples that illustrate use of all the ICS components, see later. FIREMONKEY CROSS PLATFORM PACKAGES: 1 - For XE2 and later, DXe?Install (where ? is the version) installs VCL components only, while DXe?InstallVclFmx also installs FireMonkey cross platform components (three run time packages). In order to use this feature first uninstall the old design-time package. 2 = Build all three run-time packages for all available platforms (32-bit and 64-bit Windows and Mac OS X) in the order they are listed in project manager. 3 - Next build and install the three design-time packages in the order they are listed in project manager. 4 - Three packages are installed, called: 'Overbyte ICS Common Design-Time Package for Delphi xxx' 'Overbyte ICS FMX Design-Time Package for Delphi xxx' 'Overbyte ICS VCL Design-Time Package for Delphi xxx' Note that the new packaging is still beta/alpha, both package names and included units might change in a future beta drop. The old VCL packages are still there however they do no longer support FireMonkey and of course only one set of packages can be installed in the IDE at the same time, if you want both VCL and FMX install DXe2InstallVclFmx.groupproj only. Currently the XE2 package cache is buggy and should be disabled by adding the -nocache parameter. 5 - The .\Samples\delphi\PlatformDemos\ folder contains FireMonkey sample projects that may all be built with FireMonkey for Mac OS X (and Windows). ALTERNATE INSTALLATION USING THE PACKAGE PROJECT FILES: For each Delphi and C++ Builder version two package project files exist in the .\Packages directory. One run-time and one design-time package project file. The run-time file name contains the "Run" suffix. The design-time file name contains the "Design" suffix. PACKAGE PROJECT FILE NAMES - VCL: Delphi 7 : OverbyteIcsD7Run.dpk, OverbyteIcsD7Design.dpk Delphi 2006 : OverbyteIcsD2006Run.bdsproj, OverbyteIcsD2006Design.bdsproj Delphi 2007 : OverbyteIcsD2007Run.dproj, OverbyteIcsD2007Design.dproj Delphi 2009 : OverbyteIcsD2009Run.dproj, OverbyteIcsD2009Design.dproj Delphi 2010 : OverbyteIcsD2010Run.dproj, OverbyteIcsD2010Design.dproj Delphi XE : OverbyteIcsDXeRun.dproj, OverbyteIcsDXeDesign.dproj Delphi XE2 : OverbyteIcsDXe2Run.dproj, OverbyteIcsDXe2Design.dproj Delphi XE3 : OverbyteIcsDXe3Run.dproj, OverbyteIcsDXe3Design.dproj Delphi XE4 : OverbyteIcsDXe4Run.dproj, OverbyteIcsDXe4Design.dproj Delphi XE5 : OverbyteIcsDXe5Run.dproj, OverbyteIcsDXe5Design.dproj Delphi XE6 : OverbyteIcsDXe6Run.dproj, OverbyteIcsDXe6Design.dproj Delphi XE7 : OverbyteIcsDXe7Run.dproj, OverbyteIcsDXe7Design.dproj Delphi XE8 : OverbyteIcsDXe8Run.dproj, OverbyteIcsDXe8Design.dproj Delphi 10 Seattle : OverbyteIcsD10SRun.dproj, OverbyteIcsD10SDesign.dproj C++ Builder 2006 : OverbyteIcsCB2006Run.bdsproj, OverbyteIcsCB2006Design.bdsproj C++ Builder 2007 : OverbyteIcsCB2007Run.cbproj, OverbyteIcsCB2007Design.cbproj C++ Builder 2009 : OverbyteIcsCB2009Run.cbproj, OverbyteIcsCB2009Design.cbproj C++ Builder 2010 : OverbyteIcsCB2010Run.cbproj, OverbyteIcsCB2010Design.cbproj C++ Builder XE : OverbyteIcsCBXeRun.cbproj, OverbyteIcsCBXeDesign.cbproj C++ Builder XE2 : OverbyteIcsCBXe2Run.cbproj, OverbyteIcsCBXe2Design.cbproj C++ Builder XE3 : OverbyteIcsCBXe3Run.cbproj, OverbyteIcsCBXe3Design.cbproj PACKAGE PROJECT FILE NAMES - FireMonkey and VCL: Delphi XE2 FMX/VCL : IcsCommonDXe2Run.dproj, IcsCommonDXe2Design.dproj Delphi XE2 VCL : IcsVclDXe2Run.dproj, IcsVclDXe2Design.dproj Delphi XE2 FMX : IcsFmxDXe2Run.dproj, IcsFmxDXe2Design.dproj Delphi XE3 FMX/VCL : IcsCommonDXe3Run.dproj, IcsCommonDXe3Design.dproj Delphi XE3 VCL : IcsVclDXe3Run.dproj, IcsVclDXe3Design.dproj Delphi XE3 FMX : IcsFmxDXe3Run.dproj, IcsFmxDXe3Design.dproj Delphi XE4 FMX/VCL : IcsCommonDXe4Run.dproj, IcsCommonDXe4Design.dproj Delphi XE4 VCL : IcsVclDXe4Run.dproj, IcsVclDXe4Design.dproj Delphi XE4 FMX : IcsFmxDXe4Run.dproj, IcsFmxDXe4Design.dproj Delphi XE5 FMX/VCL : IcsCommonDXe5Run.dproj, IcsCommonDXe5Design.dproj Delphi XE5 VCL : IcsVclDXe5Run.dproj, IcsVclDXe5Design.dproj Delphi XE5 FMX : IcsFmxDXe5Run.dproj, IcsFmxDXe5Design.dproj Delphi XE6 FMX/VCL : IcsCommonDXe6Run.dproj, IcsCommonDXe6Design.dproj Delphi XE6 VCL : IcsVclDXe6Run.dproj, IcsVclDXe6Design.dproj Delphi XE6 FMX : IcsFmxDXe6Run.dproj, IcsFmxDXe6Design.dproj Delphi XE7 FMX/VCL : IcsCommonDXe7Run.dproj, IcsCommonDXe7Design.dproj Delphi XE7 VCL : IcsVclDXe7Run.dproj, IcsVclDXe7Design.dproj Delphi XE7 FMX : IcsFmxDXe7Run.dproj, IcsFmxDXe7Design.dproj Delphi XE8 FMX/VCL : IcsCommonDXe8Run.dproj, IcsCommonDXe8Design.dproj Delphi XE8 VCL : IcsVclDXe8Run.dproj, IcsVclDXe8Design.dproj Delphi XE8 FMX : IcsFmxDXe8Run.dproj, IcsFmxDXe8Design.dproj Delphi 10 Seattle FMX/VCL: IcsCommonD10SRun.dproj, IcsCommonD10SDesign.dproj Delphi 10 Seattle VCL : IcsVclD10SRun.dproj, IcsVclD10SDesign.dproj Delphi 10 Seattle FMX : IcsFmxD10SRun.dproj, IcsFmxD10SDesign.dproj C++ Builder XE2 FMX/VCL : IcsCommonCBXe2Run.dproj, IcsCommonDXe2Design.dproj C++ Builder XE2 VCL : IcsVclCBXe2Run.dproj, IcsVclCBXe2Design.dproj C++ Builder XE2 FMX : IcsFmxCBXe2Run.dproj, IcsFmxCBXe2Design.dproj C++ Builder XE3 FMX/VCL : IcsCommonCBXe3Run.dproj, IcsCommonDXe3Design.dproj C++ Builder XE3 VCL : IcsVclCBXe3Run.dproj, IcsVclCBXe3Design.dproj C++ Builder XE3 FMX : IcsFmxCBXe3Run.dproj, IcsFmxCBXe3Design.dproj 1 - Open and Build the run-time package project (do not install!). 2 - Open and Install the design-time package project. (Do a File/Open Project, browse to the .\Packages directory. Select the correct file and open it. Then in the project manager view, right-click on the package, then click on either the Build or Install button.) 3 - For Delphi XE2 and later, a 64-bit run-time package can be built by changing the package target platform to 64-bit Windows. This has the same name as the 32-bit package, so a different package output directory needs to be specified in Tools / Options / Delphi Options for 64-bit Windows. After a few seconds, you should have a dialog box telling you the package has been installed with a bunch of new components registered in the Tool Palette under "Overbyte ICS" and "Overbyte ICS SSL". Then do a "Save All" and a "Close All". DELPHI 2006/WIN32, 2007/WIN32, 2009/WIN32, 2010/WIN32, XE/WIN32: Having installed the package, verify that the appropriate Win32 Library Path (Tools / Options / Delphi Options / Library - Win32 / Library Path) has been added, .\Lib subdirectory according to version, ie .\Lib\Debug\Win32\D2007 for Delphi 2007. If not, add it manually. It is not mandatory to add .\Lib to the global Delphi path, but it will be much easier for you because otherwise you'll have to add it to each project. DELPHI XE2/WIN32, XE3/WIN32, XE4/WIN32, XE5/WIN32, XE6/WIN32, XE7/WIN32, XE8/WIN32, 10 Seattle/WIN32, XE2/WIN64, XE3/WIN64, XE4/WIN64, XE5/WIN64, XE6/WIN64, XE7/WIN64, XE8/WIN64, 10 Seattle/WIN64: Similar to above, but the Library path is specified separately for 32-bit and 64-bit Windows Platforms. DELPHI 7: Add VC32 directory path to your library path (Tools menu / Environment Options / Library / Library Path. Add .\Lib\Debug\Win32\D7 path at the end of the existing path). SAMPLE DELPHI PROJECTS Once the package is installed, you may open the sample projects. The samples are split into several directories according to protocols, most with a project group that can be opened in all versions of Delphi. .\Samples\delphi\BroswerDemo .\Samples\delphi\FtpDemos\FtpDemos.bpg .\Samples\delphi\MailNewsDemos\MailNewsDemos.bpg .\Samples\delphi\MiscDemos\MiscDemos.bpg .\Samples\delphi\OtherDemos\OtherDemos.bpg .\Samples\delphi\PlatformDemos\XSamples.groupproj .\Samples\delphi\SocketDemos\SocketDemos.bpg .\Samples\delphi\sslinternet\SslDemos.bpg .\Samples\delphi\WebDemos\WebDemos.bpg Full details of the sample projects are shown later in this document. You might get some dialog box telling you that resource files are missing (they may not have been included in the zip file to save space) and are recreated by Delphi. It is OK. Any other error message is a problem you should fix. After all resource files have been recreated, you should see in the project manager a group of projects. To compile all samples in the group at once, do Project / Build all projects. This may take a few minutes. Note 1: Delphi may run out of memory if you ask to compile all projects at once. If you have not enough RAM, then compile each project individually. Note 2: Delphi has warnings which triggers a lot of messages for 100% OK code. You can turn those warnings off in the project/ options / Compiler messages and deselecting: "Deprecated symbol", "Platform symbol", "unsafe type", "unsafe code", "unsafe typecast". Those are intended for .NET and Linux portability. You can safely ignore them if you run windows. For you facility, I included a utility SetProjectOptions (source code, you must compile it) in the internet directory. This utility will update project options to disable the warnings. Once the components are all installed, you may open the sample projects each one after the other and compile them. For each project, do file/open and select the dpr file in the internet directory. Then Project/Build All. C++ BUILDER 2006, 2007, 2009, 2010, XE, XE2, XE3: Follow the installation procedure described for Delphi 2006. Just change the project group and package name: use CB2006, CBXe, etc, see above. You can't have Delphi 2006 and CBuilder 2006 packages installed at the same time in the IDE. So when switching from one to the other, be sure to remove the one you don't need. Building the FireMonkey CBXE2InstallVclFmx C++ packages for OSX may trigger an ILINK32 error, this is a bug in C++ Builder reported as QC #103668 the Win32 packages should build without errors. Once the components are all installed, you may open the sample projects each one after the other and compile them. For each project, do file/open and select the dpr file in the internet directory. Then Project/Build All. Projects are located in SAMPLES\CPP\INTERNET\CB2006\ (or CB2006, CBXE, etc) with a project group in each directory, OverbyteIcsCB2006Sam.bdsgroup, OverbyteIcsCBXe2Sam.groupproj, etc. It is likely that for each project, C++ Builder complains about a missing .res file. This is not a problem, C++ Builder will recreate it as needed. They have not been included to save space in the zip file. Once the components are all installed, you may open the sample projects each one after the other and compile them. For each project, do file/open and select the dpr file in the internet directory. Then Project/Build All. NOTES: - You may have an error message, using Delphi or C++ Builder complaining about Font.Charset, OldCreateOrder and other properties. Those are new properties in newer Delphi or C++ Builder versions, newer than the version you use. You can safely ignore those errors because those properties are not used by the components nor sample programs. You may encounter this error at run time. To avoid it, you must open each form at design time and ignore the error. Then recompile. If you don't ignore the error at design time, you'll have it at runtime ! - If you have Delphi or C++ Builder complaining about a file not found, add .\source directory to your library path. - If you are using C++ Builder you may encounter an error at link time such as "Unable to open file MWBCB30.LIB" (or other libs). This is a bug in C++ Builder. To solve it, you can edit project option file (right click in project manager) and remove any reference to the missing libraries. - Don't forget that the C++Builder components are located in .\delphi\vc32 which is object pascal source code (not a problem for C++Builder, just indicate that the *.pas files are displayed when installing). C++Builder will create the *.hpp files. There are some on-line help files in the VC32 directory. Available VCL Components ------------------------ - The following is a list of the files that should be installed in order to properly add all of the available components in this collection: > OverbyteIcsCharsetComboBox.pas Provides easy MIME charset selection > OverbyteIcsDnsQuery DNS lookup component - useful for getting MX records > OverbyteIcsDprUpdFix.pas IDE plugin for Delphi 2009 and 2010 to update old projects > OverbyteIcsEmulVT.pas ANSI terminal emulation in a control > OverbyteIcsFingCli.pas FINGER client protocol - Find information about user > OverbyteIcsFtpCli.pas FTP client protocol - file transfer > OverbyteIcsFtpSrv.pas FTP server protocol - file transfer > OverbyteIcsFtpSrvT.pas FTP server protocol - helpers > OverbyteIcsHttpAppServer.pas HTTP server protocol - used to build advanced web servers > OverbyteIcsHttpProt.pas HTTP client protocol - used by the web > OverbyteIcsHttpSrv.pas HTTP server protocol - used to build web servers > OverbyteIcsLogger.pas A component to log information > OverbyteIcsMimeDec.pas MIME component - decode file attach, use with POP3 > OverbyteIcsMultiProgressBar.pas A segmented progress bar > OverbyteIcsMultipartFtpDownloader.pas FTP client protocol - download one file using simultaneous connections to speedup download > OverbyteIcsMultipartHttpDownloader.pas HTTP client protocol - download one file using simultaneous connections to speedup download > OverbyteIcsNntpCli.pas NNTP client protocol - send and receive newsgroups messages > OverbyteIcsPing.pas ICMP echo protocol - ping a host > OverbyteIcsPop3Prot.pas POP3 client protocol - get mail from mail server > OverbyteIcsReg.pas Register design components > OverbyteIcsSmtpProt.pas SMTP client protocol - send mail to server > OverbyteIcsSmtpSrv.pas SMTP server protocol - receive mail from client > OverbyteIcsSnmpCli.pas SNMP client protocol - network management > OverbyteIcsSnmpMsgs.pas SNMP client protocol - message helper > OverbyteIcsSysLogClient.pas Syslog Client Protocol - receive syslog messages > OverbyteIcsSysLogDefs.pas Syslog Protocol - helpers > OverbyteIcsSysLogServer.pas Syslog Server Protocol - send syslog messages > OverbyteIcsTnCnx.pas TELNET client protocol - terminal emulation protocol > OverbyteIcsTnEmulVT.pas TELNET and ANSI terminal emulation combined > OverbyteIcsTnOptFrm.pas TELNET Client configuration form > OverbyteIcsTnScript.pas TELNET client protocol - with automation > OverbyteIcsWSocket.pas Winsock component - TCP, UDP, DNS,... > OverbyteIcsWSocketE.pas Register procedure and property editor for TWSocket > OverbyteIcsWSocketS.pas Winsock component for building servers > OverbyteIcsWSocketTS.pas Winsock component for building multithreaded servers - The following list support and utilities units: > OverbyteIcsAsn1Utils.pas ASN1 utilities (for TSnmpClient component) > OverbyteIcsAvlTrees.pas Implements a fast cache-like data storage > OverbyteIcsCharsetUtils.pas MIME-charset functions > OverbyteIcsCookies.pas Client Cookie Handling > OverbyteIcsCRC.pas 32 bit CRC computation > OverbyteIcsCsc.pas character set routines > OverbyteIcsDES.pas Implementation of the Data Encryption Standard (DES) > OverbyteIcsDigestAuth.pas HTTP Digest Access Authentication > OverbyteIcsFormDataDecoder.pas Decode a MIME data block as generated by a HTML form > OverbyteIcsHttpCCodZLib.pas Supports GZIP coding for HttpContCod > OverbyteIcsHttpContCod.pas HTTP Content Coding support, uses extra units > OverbyteIcsIcmp.pas ICMP protocol support, used by the PING component > OverbyteIcsIconv.pas Headers for iconv library (LGPL) > OverbyteIcsLIBEAY.pas Delphi encapsulation for LIBEAY32.DLL (OpenSSL) > OverbyteIcsMD4.pas Implementation of the MD4 Message-Digest Algorithm > OverbyteIcsMD5.pas Implementation of the MD5 Message-Digest Algorithm > OverbyteIcsMimeUtil.pas Support routines for MIME standard > OverbyteIcsMLang.pas A few header translations from MS mlang.h > OverbyteIcsNtlmMsgs.pas Client NTLM authentification messages used within HTTP protocol > OverbyteIcsNtlmSsp.pas Server NTLM authentification of user credentials using Windows SSPI > OverbyteIcsOneTimePw.pas One Time Password support functions, used by FTP > OverbyteIcsSHA1.pas Implementation of US Secure Hash Algorithm 1 (SHA1) > OverbyteIcsSocketUtils.pas Cross platform socket utilities for ICS > OverbyteIcsSSLEAY.pas Delphi encapsulation for SSLEAY32.DLL (OpenSSL) > OverbyteIcsSslSessionCache.pas A very fast external SSL-session-cache component > OverbyteIcsSslThrdLock.pas Implementation of OpenSsl thread locking (Windows); > OverbyteIcsSspi.pas A few header translations from MS sspi.h and security.h > OverbyteIcsStreams.pas Fast streams for ICS > OverbyteIcsThreadTimer.pas A custom timer class using custom timer messages from one or more threads > OverbyteIcsTicks64.pas GetTickCount64 support for all versions of Windows > OverbyteIcsTimeList.pas List of items with expiry times, used for WebSessions > OverbyteIcsTypes.pas Common types, mainly for backward compiler compatibility > OverbyteIcsURL.pas Support routines for URL handling > OverbyteIcsUtils.pas Vast number of common utilities, many supporting Unicode for D7/2007 > OverbyteIcsWSockBuf.pas FIFO buffers for TWSocket > OverbyteIcsWebSession.pas Web session support for THttpAppSrv and MidWare > OverbyteIcsWinnls.pas A few header translations for Unicode Normalization in winnls.h > OverbyteIcsWinsock.pas Some Winsock initialisations > OverbyteIcsWndControl.pas A class that encapsulates a windows message queue and a message map > OverbyteIcsZLibDll.pas Zlib support, interface to external zlib.dll functions > OverbyteIcsZlibHigh.pas Zlib support, high level interface for compression and decompression > OverbyteIcsZLibObj.pas Zlib support, interface to zlib linked C OBJ functions FireMonkey Cross Platform Support: ---------------------------------- For Delphi and C++ Builder XE2 and later, FireMonkey Desktop applications are an alternate to VCL Forms applications, supporting cross platforms of Windows 32-bit and 64-bit and Mac OS X (and perhaps other platforms in future). FireMonkey uses different visual components to VCL, while some non-visual components can be used for both VCL and FMX projects, while other components need special versions, such as ICS. Earlier betas of V8 used the conditional define "FMX" which is *no longer required in project options. Instead in your existing ICS FireMonkey app. add either "Ics.Fmx" to the unit scope names in project options or apply the following changes in the uses clause, rename: OverbyteIcsWndControl -> Ics.Fmx.OverbyteIcsWndControl OverbyteIcsWSocket -> Ics.Fmx.OverbyteIcsWSocket OverbyteIcsFtpCli -> Ics.Fmx.OverbyteIcsFtpCli OverbyteIcsFtpSrv -> Ics.Fmx.OverbyteIcsFtpSrv OverbyteIcsHttpProt -> Ics.Fmx.OverbyteIcsHttpProt OverbyteIcsWSocketS -> Ics.Fmx.OverbyteIcsWSocketS OverbyteIcsSmtpProt -> Ics.Fmx.OverbyteIcsSmtpProt.pas OverbyteIcsPop3Prot -> Ics.Fmx.OverbyteIcsPop3Prot.pas OverbyteIcsNntpCli -> Ics.Fmx.OverbyteIcsNntpCli.pas OverbyteIcsPing -> Ics.Fmx.OverbyteIcsPing.pas OverbyteIcsDnsQuery -> Ics.Fmx.OverbyteIcsDnsQuery.pas OverbyteIcsFingCli -> Ics.Fmx.OverbyteIcsFingCli.pas OverbyteIcsSslSessionCache -> Ics.Fmx.OverbyteIcsSslSessionCache.pas OverbyteIcsSslThrdLock -> Ics.Fmx.OverbyteIcsSslThrdLock.pas OverbyteIcsHttpSrv -> Ics.Fmx.OverbyteIcsHttpSrv.pas OverbyteIcsSocketUtils -> Ics.Fmx.OverbyteIcsSocketUtils.pas OverbyteIcsMultipartFtpDownloader -> Ics.Fmx.OverbyteIcsMultipartFtpDownloader.pas OverbyteIcsMultipartHttpDownloader -> Ics.Fmx.OverbyteIcsMultipartHttpDownloader.pas OverbyteIcsHttpAppServer -> Ics.Fmx.OverbyteIcsHttpAppServer.pas OverbyteIcsThreadTimer -> Ics.Fmx.OverbyteIcsThreadTimer.pas OverbyteIcsCharsetComboBox -> Ics.Fmx.OverbyteIcsCharsetComboBox.pas { Demo units } OverbyteIcsWebAppServerCounter -> Ics.Fmx.OverbyteIcsWebAppServerCounter OverbyteIcsWebAppServerMailer -> Ics.Fmx.OverbyteIcsWebAppServerMailer The list above is also the list of units that now have different names in the FireMonkey framework however most of them share the same source file. Dropping a ICS component on the form will add the correct unit name for each framework automatically (don't forget to disable the package cache as described above). Unit OverbyteIcsLibrary.pas has been *deprecated* and ICS IPv8 doesn't use it anymore. If you used it in your own code read the comment in OverbyteIcsLibrary.pas, search for "deprecated". Sample applications: -------------------- With V8, the sample applications are now grouped into directories according to general functionality, to make it easier to compare related samples. Many samples are similar. When searching for something, always look at the date the demos where created. The most recent is always the best code! In the lists below, ACTIVE!! indicates applications that are actively maintained to test and support new functionality in the ICS components. These may not be simplest samples, but are usually the first to try when learning about a component. Delphi Win32/Win64 Web Browser sample application ------------------------------------------------- .\Samples\delphi\BroswerDemo > FrameBrowserIcs.dpr Web Browser using HtmlViewer component - ACTIVE!! Note this sample needs HtmlViewer component installed Delphi Win32/Win64 FTP sample applications ------------------------------------------ .\Samples\delphi\FtpDemos\FtpDemos.bpg - Project group > OverbyteIcsBasFtp.dpr Basic FTP client program > OverbyteIcsConFtp.dpr Basic console mode FTP client > OverbyteIcsFtpAsy.dpr Example of asynchronous FTP client > OverbyteIcsFtpMulti.dpr Demo to do several FTP downloads in parallel to get a list of files > OverbyteIcsFtpMultipartDownload.dpr Demo to FTP download a single large file in several parts in parallel > OverbyteIcsFtpServ.dpr General purpose FTP server, uses TSocketServer - ACTIVE!! > OverbyteIcsFtpThrd.dpr Demo of multithreaded FTP client, see also FTPASY > OverbyteIcsFtpTst.dpr Basic graphical FTP client - ACTIVE!! Delphi Win32/Win64 SMTP, POP3, NNTP sample applications ------------------------------------------------------- .\Samples\delphi\MailNewsDemos\MailNewsDemos.bpg - Project group > OverbyteIcsBasNntp.dpr Basic NNTP client program > OverbyteIcsConPop3.dpr Basic console mode demo for POP3 (mail receive) > OverbyteIcsConSmtp.dpr Basic console mode demo for SMTP (mail send) > OverbyteIcsMailHtml.dpr Example of HTML formatted EMail sending, including embedded images - ACTIVE!! > OverbyteIcsMailRcv.dpr Internet EMail access using POP3 protocol - ACTIVE!! > OverbyteIcsMailSnd.dpr Example of EMail sending using SMTP, including file attach - ACTIVE!! > OverbyteIcsMailSndAsync.dpr Example of parallel EMail sending with multiple connections > OverbyteIcsMimeDemo.dpr Example of EMail decoding (attached files are extracted) - ACTIVE!! > OverbyteIcsNewsReader.dpr Example of TNntpCli component (Send/receive newsgroups) - ACTIVE!! > OverbyteIcsSmtpServer.dpr Internet EMail server using SMTP protocol - ACTIVE!! Delphi Win32/Win64 Miscellaneous applications --------------------------------------------- .\Samples\delphi\MiscDemos\MiscDemos.bpg - Project group > OverbyteIcsBufStrmTst.dpr Test of buffered stream classes > OverbyteIcsCacheTest.dpr Test of TCacheTree class used in TSslAvlSessionCache > OverbyteIcsMD4Test.dpr Test program for MD4 unit > OverbyteIcsMD5File.dpr Example of MD5 unit: computer MD5 checksum for files > OverbyteIcsMD5Test.dpr Test program for MD5 unit > OverbyteIcsOneTimePassword.dpr One Time Password test routines for OverByteIcsOneTimePw unit > OverbyteIcsSHA1Test.dpr Test program for SHA unit > OverbyteIcsThreadTimerDemo.dpr Demo for TIcsThreadTimer > OverbyteIcsTicks64Demo.dpr GetTickCount64 test routines for OverbyteIcsTicks64 unit > OverbyteIcsTimerDemo.dpr Very simple demo for TIcsTimer > OverByteIcsWndControlTest.dpr Test program for windows and threads Delphi Win32/Win64 DNS, Ping, SNMP, Syslog sample applications -------------------------------------------------------------- .\Samples\delphi\OtherDemos\OtherDemos.bpg - Project group > OverbyteIcsBatchDnsLookup.dpr Batch async DNS lookup using DnsLookup (IPv6 and IPv4) > OverbyteIcsConPing.dpr Basic console mode demo for ping component > OverbyteIcsDll1.dpr Demo showing how to use a TWSocket component in a DLL > OverbyteIcsDll2.dpr Demo showing how to use a THttpCli component in a DLL > OverbyteIcsDllTst.dpr Test program calling ICSDLL1 and ICSDLL2 > OverbyteIcsDnsLook.dpr Example of name resolution (IPv6 and IPv4) > OverbyteIcsDnsResolver.dpr Batch async DNS lookup event driven using DnsQuery > OverbyteIcsFinger.dpr Example of TFingerCli component > OverbyteIcsNsLookup.dpr Demo for the DnsQuery component > OverbyteIcsPingTst.dpr Demo for the ping component, includes trace route > OverbyteIcsSnmpCliTst.dpr Demo for SNMP (simple network management protocol) component > OverbyteIcsSysLogClientDemo.dpr Demo for SysLog client component > OverbyteIcsSysLogServerDemo.dpr Demo for SysLog server component Delphi FireMonkey cross-platform samples (Delphi XE2 and later) --------------------------------------------------------------- All these samples may be built for Mac OS X (and Windows). .\Samples\delphi\PlatformDemos\XSamples.groupproj > IcsCliDemo.dproj Example of client for SRVDEMO, IPV4 only > IcsTcpSrvIPv6.dproj Basic server without client forms, event-driven, IPv4/IPV6 > IcsConSmtp.dproj Basic console mode demo for SMTP (mail send) > IcsMailSnd.dproj Example of EMail sending using SMTP, including file attach > IcsMailRcv.dproj Internet EMail access using POP3 protocol > IcsHttpsTst.dproj Example of THttpCli component (GET), show many features > IcsWebServ.dproj Demo of HTTP server, uses TSocketServer > IcsWebAppServ.dproj Advanced HTTP server demo, uses WebServ, adds sessions > IcsFtpTst.dproj Basic graphical FTP client > IcsFtpServ.dproj General purpose FTP server, uses TSocketServer > IcsUdpLstn.dproj UDP listen demo > IcsUdpSend.dproj UDP send demo > IcsBatchDnsLookup.dproj Batch async DNS lookup using DnsLookup (IPv6 and IPv4) > IcsDll1.dproj Demo showing how to use a TWSocket component in a DLL > IcsDll2.dproj Demo showing how to use a THttpCli component in a DLL > IcsDllTst.dproj Test program calling ICSDLL1 and ICSDLL2 > IcsThreadTimerDemo.dproj Very simple demo for TIcsTimer Delphi Win32/Win64 Socket sample applications --------------------------------------------- .\Samples\delphi\SocketDemos\SocketDemos.bpg - Project group > OverbyteIcsBinCliDemo.dpr Client program to receive binary and delimited text data. Works with BinTcpSrv demo. > OverbyteIcsCliDemo.dpr Example of client for SRVDEMO, IPV4 only - ACTIVE!! > OverbyteIcsClient5.dpr Basic client GUI applications > OverbyteIcsClient7.dpr Simple client application demonstrating TWSocket > OverbyteIcsConCli1.dpr Basic client/server console applications > OverbyteIcsConCli2.dpr Basic client/server console applications with thread > OverbyteIcsConSrv1.dpr Basic server application in console mode > OverbyteIcsConUdpLstn.dpr Console application to listen for UDP messages > OverbyteIcsDynCli.dpr Demo of dynamically created TWSocket components > OverbyteIcsMtSrv.dpr Basic server, multi-threaded, see THRDSRV for better code > OverbyteIcsRecv.dpr Simple file receive (server), use with SENDER demo (client) > OverbyteIcsSender.dpr Simple file send (client), use with RECV demo (server) > OverbyteIcsServer5.dpr Basic server GUI applications > OverbyteIcsSocksTst.dpr How to use TWSocket with SOCKS protocol (firewall traversing) > OverbyteIcsSrvDemo.dpr Example of server using a TTable - ACTIVE!! > OverbyteIcsSrvTcp.dpr Basic server without client forms, event-driven > OverbyteIcsSvcTcp.dpr Same as SRVTCP but as an NT/2K/XP service > OverbyteIcsTWSChat.dpr Chat program (both client and server in a single program) > OverbyteIcsTcpSrv.dpr Basic server without client forms, event-driven, IPv4 only - ACTIVE!! > OverbyteIcsTcpSrvIPv6.dpr Basic server without client forms, event-driven, IPv4/IPV6 - ACTIVE!! > OverbyteIcsTelnetClient.dpr Telnet client using a TnEmulVT > OverbyteIcsThrdSrv.dpr Basic multithreaded TCP server, banner sent in main thread > OverbyteIcsThrdSrvV2.dpr Basic multithreaded TCP server, banner sent in worker thread > OverbyteIcsThrdSrvV3.dpr Basic TCP server showing how to use TWSocketThrdServer > OverbyteIcsTnDemo.dpr Telnet client using a TMemo > OverbyteIcsTnSrv.dpr Basic TCP server with client forms, event-driven > OverbyteIcsUdpLstn.dpr UDP listen demo > OverbyteIcsUdpSend.dpr UDP send demo Delphi Win32/Win64 SSL-enabled sample applications -------------------------------------------------- .\Samples\delphi\sslinternet\SslDemos.bpg - Project group > OverbyteIcsHttpsTst.dpr Example of TSslHttpCli component (GET) - ACTIVE!! > OverbyteIcsPemTool.dpr ICS Pem Certificate Tool - Create and import certificates in OpenSLL PEM format > OverbyteIcsSimpleSslCli.dpr Example of simple SSL client using TSslWSocket - ACTIVE!! > OverbyteIcsSimpleSslServer.dpr Example of SSL server using TSslWSocket - ACTIVE!! > OverbyteIcsSslFtpServ.dpr General purpose FTP SSL server, uses TSocketServer - ACTIVE!! > OverbyteIcsSslFtpTst.dpr Basic graphical FTP SSL client - ACTIVE!! > OverbyteIcsSslMailRcv.dpr Internet EMail access using POP3 protocol and SSL - ACTIVE!! > OverbyteIcsSslMailSnd.dpr Example of EMail sending using SMTP and SSL - ACTIVE!! > OverbyteIcsSslNewsRdr.dpr Example of TSslNntpCli component (Send/receive newsgroups) - ACTIVE!! > OverbyteIcsMsVerify.dpr Verify and show an OpenSSL certificate or certificate chain using class TMsCertChainEngine which uses MS crypto API - ACTIVE!! > OverbyteIcsSslSniSrv.dpr Test of Server Name Indication (SNI) in server mode - ACTIVE!! > OverbyteIcsSslWebServ.dpr Demo of HTTPS server, uses TSocketServer - ACTIVE!! > OverbyteIcsSslWebAppServer.dpr Advanced HTTPS server demo, uses WebServ, adds sessions - ACTIVE!! > OverbyteIcsSslSmtpServer.dpr Internet EMail server using SMTP protocol and SSL - ACTIVE!! Delphi Win32/Win64 HTTP sample applications ------------------------------------------- .\Samples\delphi\WebDemos\WebDemos.bpg - Project group > OverbyteIcsConHttp.dpr Basic console mode HTTP client > OverbyteIcsHttpAsp.dpr Example of THttpCli component with cookie (POST to an ASP page) > OverbyteIcsHttpAsy.dpr Example of THttpCli component with multiple async requests (GET) > OverbyteIcsHttpChk.dpr Example of THttpCli to check for valid URL using HEAD request > OverbyteIcsHttpDmo.dpr Simple HTTP client demo with proxy > OverbyteIcsHttpGet.dpr Example of THttpCli component (GET into a file) > OverbyteIcsHttpMultipartDownload.dpr Demo application for TMultipartHttpDownloader to download files using simultaneous connections > OverbyteIcsHttpPg.dpr Example of THttpCli component (POST to CGI script) > OverbyteIcsHttpPost.dpr Example of THttpCli component (POST), work with WebServ sample - ACTIVE!! > OverbyteIcsHttpThrd.dpr Example of THttpCli component (multi-threaded GET) > OverbyteIcsHttpTst.dpr Example of THttpCli component (GET), show many features - ACTIVE!! > OverbyteIcsIsapi.dll Example of FTP client component within an ISAPI extension > OverbyteIcsWebAppServer.dpr Advanced HTTP server demo, uses WebServ, adds sessions - ACTIVE!! > OverbyteIcsWebServ.dpr Demo of HTTP server, uses TSocketServer - ACTIVE!! Two samples are not in the project group since they need extra components installed > OverbyteIcsRestDemo.drp Demo program showing how to use REST API from Google and Yahoo > OverbyteIcsRestJsonDemo.drp Demo program showing how to use REST API from Google Search and JSON Sample Notes ------------ Note 1: Not all samples have been rewritten in C++ for C++ Builder. And those rewritten are frequently much simpler. So C++ Builder user: have a look at the Delphi sample too ! Note 2: Follow "UserMade" link on ICS web site to find more sample programs written by ICS users. As explained in the component installation, you may encounter an error loading a sample application or running it. This may be because the last time I loaded the form, I was using another Delphi or C++ Builder version which has new properties. You can safely ignore messages related to those new properties. They are not used in the samples. (The properties are CharSet, OldCreateOrder and others). You can also encounter error about duplicate resources. You can ignore them safely. If you have those errors, open each form in the IDE, ignore the error then recompile. If you don't open the form in the IDE, you'll get the errors at runtime and your program will abort. When installing a new version, always delete old dcu, obj, dcpil and always recompile everything ! Close everything before recompiling the library or packages. When installing a new version, be sure to unzip it in the same directory tree as the old one or you'll mess both versions. About SSL: ---------- TSslWSocket and TSslWSocketServer component are derived from the standard TWSocket and TWSocketServer component. The SSL code is compiled into the component only if you define USE_SSL symbol to your packages and projects. Just add USE_SSL to the defines in the project or package options and recompile everything. The components make use of LIBEAY32.DLL and SSLEAY32.DLL to handle SSL protocol stuff. The DLLs are dynamically loaded at runtime. It means that the DLLs will only be required at runtime when you first make use of a SSL function. Your applications will run on systems without OpenSSL DLLs as long as you don't call any SSL function. The files may be downloaded from: http://wiki.overbyte.be/wiki/index.php/ICS_Download Most ICS components have their SSL enabled counter part. They work exactly the same way as the regular component except when SSL specific stuff is needed, for example certificates. To support SSL stuff, the SSL-enabled version use some new properties, events and methods. Many sample programs have their SSL-enabled counter part in a separate sources located in SslInternet folder. SSL certificates: To make use of SSL, you frequently need certificates. I provide some demo certificates I built using command line OpenSSL tool. PEM certificates can be opened by a text editor, LF as well as CRLF are allowed as line breaks. CACERT.PEM : A demo certificate for "Example CA" 01CERT.PEM : A demo certificate which is signed by CACERT.PEM 01KEY.PEM : A demo private key for 01CERT.PEM Passphrase is "password". CLIENT.PEM : A demo certificate and private key. Passphrase is "password". SERVER.PEM : A demo certificate and private key. Passphrase is "password". ROOT.PEM : A demo CA certificate. Passphrase is "password". TRUSTEDCABUNDLE.PEM : A demo CA file in PEM format containing multiple well known root CA certificates to be specified in property CA Path of the demo applications. Read the comments included in this file. 6F6359FC.0 : Located in sub directory SslInternet\TrustedCaStore, it's the file CACERT.PEM stored with a hashed file name. Directory TrustedCaStore can be specified in property CA Path of the demo applications. For details about certificate, see the excellent book: "Network security with OpenSSL", O'Reilly, ISBN 10: 0-596-00270-X The SSL demo project OverbyteIcsPemTool may be used to create self signed PEM certificates, certificate requests for commercial use, to convert existing certificates in the Windows Certificate Store to PEM format understood by OpenSSL and to examine PEM certificates. You will find more information in IcsSslHowTo.txt file. Commercial SSL certificates: To avoid browsers giving certificate warning messages, you need to purchase a SSL certificate from one of numerous companies, such as Verisign, Thawte GeoTrust or RapidSSL. Prices vary dramatically and are often cheaper from resellers such as Servertastic than from the main issuing companies. The main purpose of an SSL certificate is to prove the identity of the owner of a web site, ideally the company behind the web site. That usually requires paper work identifying the company is submitted and also proof the domain being protected is owned by that company, it usually also involves telephone calls. Such certificates are usually called fully validated and cost $120 or more each year for a single domain, ie secure.website.com. Wild card certificates cost $350 or more, but protect multiple sub-domains, ie web.website.com as well. Extended Validation certificates cost from $450 a year, and show the company name in green in the address bar. For testing and simple use, instant issued SSL certificates cost from $15 per year and protect a single domain only with automated checking reducing the cost (an email to admin@website.com to prove you receive email for the domain, perhaps a telephone call as well). Note these instant certificates do not include a company name. To buy and install an SSL certificate for use with ICS and OpenSSL follow these steps: 1 - Build the SSL demo project OverbyteIcsPemTool. Take Extras, Create Certificate Requests, fill in the various fields (check other certificates if uncertain, the Common Name is the domain to protect, ie secure.website.com and E-Mail should be an email address at the than domain, ideally admin or administrator, 2048 bits. Click Create, and specify two file names, first for the private key (mykey.pem) then the certificate request file (myreq.pem). The request can also be done using OpenSSL command line arguments, or you can build it into your own application. 2 - Choose you SSL supplier and certificate type, at some point during the ordering process you will be asked for the certificate request, so open the PEM file you saved with a text editor and copy the base64 encoded block starting -BEGIN CERTIFICATE REQUEST- into the web form. It should be decoded and displayed so you check it's correct. The private key is not needed for the certificate to be issued. At this point the validation process starts as mentioned above, which might take hours or weeks to complete. 3 - Eventually the SSL certificate should be issued, either by email or made available to download from the supplier's web site. It should be in X.509 format in a base64 encoded block starting -BEGIN CERTIFICATE- which should be saved as a PEM file (mycert.pem). There should also be an Intermediate CA certificate, with which your new certificate was signed, which should also be saved as a file (mycacert.pem). This may also be downloadable from the supplier as a bundle file and should be common to any certificates they issue, ie RapidSSL_CA_bundle.pem. 4 - The OverbyteIcsPemTool tool has a View PEM button that allows examination of your new PEM files. 5 - The three PEM files now need to be attached to the SslContext component in your application, with properties SslCertFile, SslPrivKeyFile and SslCAFile. The request certificate file has no further use. Support: -------- There is a mailing list to discuss F. Piette's components and applications. To subscribe surf to http://lists.elists.org/mailman/listinfo/twsocket. Do not use an aliased EMail address, use your real EMail address, the one you'll use to post messages. After asking for subscription, you'll receive a confirmation email you must reply to it or you will _not_ be added to the subscriber's list (this is to check for email path and also make sure someone doesn't subscribe you without your consent). Once you have been registered with the mailing list processor, you can send messages to twsocket@elists.org. Every subscriber will receive a copy of your message. I will respond, but anybody is welcome to respond to each other's messages. So every body can share his expertise. There are many other useful mailing lists at http://www.elists.org ! Before asking a question, browse the message archive you can download from the support page on the web site (click the "support" button from main page) and from the mailing list web site http://lists.elists.org/mailman/listinfo/twsocket. Google is also archiving the list with some delay. If you found a bug, please make a short program that reproduces the problem attach it to a message addressed to me. If I can reproduce the problem, I can find a fix ! Do not send exe file but just source code and instructions. Always use the latest version (beta if any) before reporting any bug. You are also encouraged to use the support mailing list to ask for enhancements. You are welcome to post your own code. The support mailing list has sometimes a heavy traffic. If it is too much for you, you can select "digest" mode in which mailing list processor will mail you only one big message per day. To select digest mode goto http://lists.elists.org/mailman/listinfo/twsocket. You can also subscribe to another mailing list called twsocket-announce which will receive only very few messages when major bug fixes or updates are done. The subscription process is the same as for the other mailing list. See above procedure. Release notes ------------- There is no global release notes. Each component and sample has his own history. You can find those histories in the comment in the beginning of each source file. There are also a bunch of useful comments in the source code. You should at least browse the source for the components you are interested in. MidWare ------- If you wants to build client/server applications using TCP/IP protocol, you can do it easily with ICS. But you can do it much more easily using another freeware product from Fran鏾is Piette: MidWare. Available from the same web site http://www.overbyte.be. francois.piette@overbyte.be francois.piette@swing.be http://www.overbyte.be/ http://wiki.overbyte.be/
ImageEn 是一款适用于图像处理,观察和分析的控件。它能加载和保存为若干种图像文件格式,包括从Twain 扫描仪中获得图像(单个和多个页面),屏幕截图,使用滤镜,合并图像,选择图像区域(支持魔术棒)以至于其他的图像格式。ImageEn允许你在你的应用 程序中安装包括专业版的图形软件制作特征。 提供不同的加载/保存操作 加载并保存为JPEG(RGB, GrayScale, YCbCr, CMYK, YCbCrK)格式到文件中(with also 1/2, 1/4 and 1/8 subsizes for fast preview)。读出/写入APP0-APP15,COM Jpeg标记。 JPEG2000:JP2,J2K,J2K和JPC代码串格式(标准的JPEG-2000 Part-1,ISO/IEC 15444-1) 可对Jpeg格式的图片进行无损的转换与剪切 评估一个jpeg文件的精度 处理ICC轮廓时可随意选择颜色管理系统(CMS) 读取/写入Exif信息(在Jpeg和TIFF中)。无需下载或转换原图像就能转换EXIF图像信息。 使用RGB,CMYK,B/W,CIELab为该文件加载并储存为TIFF(rev.6.0 and Tech. Note #2,Packbits, JPEG,LZW,CCITT G.3和G.4)格式,还提供FAX(CCITT3),G3F和G3N(Zetafax)的加载格式,同时也支持4,8,16,32,64,128 和 256位的颜色调板。 加载为G3F和G3N(Zetafax 样式) 无需解压就能实现本地操作,在TIFF文件中支持添加/移动/提取/enum以至于更快的处理方式。 读取简单的TIFF标签 保存为(PS和EPS)的附件形式,使用RLE,G3Fax,G4Fax和Jpeg格式对单个的或多个页面进行压缩。 保存为Adobe PDF格式。使用G3Fax, G4Fax and Jpeg格式对单个的或多个页面进行压缩。 以不同的压缩标准加载并保存为PNG格式 加载和保存压缩和未经压缩的2,16,256或16M颜色到BMP文件中 加载和保存未经压缩的黑/白WBMP(Wireless位图)图像 加载和保存压缩和未经压缩的2,16,256或16M颜色到PCX文件中 加载并储存为2,4,8,16,32,64,128或256色的GIFs格式的文件或串 加载并保存为DCX(多页的PCX)的文件格式 加载并保存为DIB,RLE,TGA(TARGA,VDA,ICB,VST,PIX)的文件格式 加载和保存便携式的PBM,PGM和PPM位图 加载并保存为ICO文件格式(随multi 溶解和颜色深度来预定义ICO设置) 加载WMF,EMF和CUR文件格式 加载并保存为AVI, 动态的GIF和多页的TIFF文件格式 读取单独的AVI帧格式 从JPEG和TIFF图像中读取/写入IPTC(IIMV4)信息(像PhotoSho中的文信息)。无需加载XIng或改变原图像就能替换IPTC中的信息。 为用户提供自定义的文件格式 支持Alpha通道模式(设置图像的透明度) 编辑动态的GIF图像:可提取,插入和删除单个图像 编辑多文本的TIFF图像:可提取,插入和删除单个图像 在读取/写入LZW GIF和TIFF图像的样品插件中附带有源代码 为GIF文件添加NON-LZW-GIF压缩样品插件 为GIF和TIFF图像添加标准的LZW压缩/解压的样品插件 无需加载就能设置图像属性 用户界面无需默认扫描仪的设置和完全控制扫描仪的功能就能从TWAIN 扫描仪中获取图像,同时支持模式和非模式的采集 从WIA扫描仪和照相机中获取图像 保存/加载有效的文件格式参数和保存/加载可预览的对话框(如:你能设置一个Jpeg图像的品质并可立即预览该图像的品质是否丢失),适用于Win2000/Xp/Me操作系统。 选择语言属性对话框(English, Italian, German, Spanish, French, Portuguese, Greek, Russian, Dutch, Swedish, Polish 或用户自定义的语言) 支持标准的TImage控件的链接 OnProgress事件适合于监测储存和加载信息 提供异常的输入/输出处理 为GIT,TIFF,PNG,ICO,CUR,TGA图像加载alpha通道模式 屏幕截图 使用http协议(LoadFromURL)从网络中加载图像 在TPicture中注册ImageEn格式的文件(打开/储存TImage和VCL的对话框) 提供Wang图像注释(加载/编辑/保存) 打印: 打印(和打印预览)功能,可从指定的页面队列或相对位置中打印简单的图像 print dialog with preview 安装方法: 1)解压缩到特定目录ImageEn 3.02,把该目录中的source和lib添加到Delphi的library path目录; 2)把ImageEn 3.02\Delphi7的DPK等拷贝到源文件目录ImageEn 3.02; 3)编译PKIECtrl7.dpk和PKIEDB7.dpk; 4)安装DPKIECTRL7.dpk和DPKIEDB7.dpk。
适用于“大智慧新一代 Level-2 V3.03.08.0801 ”的版本。 附件:数据表结构   ◎代码数据(cndm)结构 字段名 含义 类型 备注 dm 代码 char jc 简称 char ◎行情数据(cnfqhq)结构 字段名 含义 类型 备注 dm 代码 char rq 日期 date kp 开盘 num zg 最高 num zd 最低 num sp 收盘 num sl 成交数量 num je 成交金额 num yz 复权因子 num ◎除权数据(cncq)结构 字段名 含义 类型 备注 dm 代码 char rq 日期 date fh 分红 num sgbl 送股比例 num pgbl 配股比例 num pgjg 配股价格 num ◎股本数据(cngb)结构 字段名 含义 类型 备注 dm 代码 char rq 日期 date zgb 总股本 num ltg 流通A股 num bg B股 num hg H股 num ◎财务指标(cncw)结构 字段名 含义 类型 备注 dm 代码 char rq 日期 date eps 每股收益(全面摊薄) num eps1 每股收益(加权平均) num naps 每股净资产 num roe 净资产收益率(全面摊薄) num roe1 净资产收益率(加权平均) num ◎财务报表(cncwbb)结构 字段名 含义 类型 备注 dm 代码 char rq 日期 date bsdqtzje 短期投资净额 num bsyszkje 应收帐款净额 num bschje 存货净额 num bsldzc 流动资产 num bscqtzje 长期投资净额 num bsgdzc 固定资产 num bswxzc 无形及其他资产 num bszzc 总资产 num bsdqjk 短期借款 num bsyfzk 应付帐款 num bsldfz 流动负债 num bscqfz 长期负债 num bsfz 负债合计 num bsgb 股本 num bsssgdqy 少数股东权益 num bsgdqy 股东权益 num bszbgj 资本公积 num bsyygj 盈余公积 num iszysr 主营业务收入净额 num iszycb 主营业务成本 num iszylr 主营业务利润 num isqtlr 其它业务利润 num isyyfy 营业费用 num isglfy 管理费用 num iscwfy 财务费用 num istzsy 投资收益 num islrze 利润总额 num issds 所得税 num isjlr 净利润 num iskchjlr 扣除经常性损益后的净利润 num iswfplr 未分配利润 num cfjyhdxjlr 经营活动现金流入 num cfjyhdxjlc 经营活动现金流出 num cfjyhdxjje 经营活动现金净额 num cftzxjlr 投资现金流入 num cftzxjlc 投资现金流出 num cftzxjje 投资现金净额 num cfczxjlr 筹措现金流入 num cfczxjlc 筹措现金流出 num cfczxjje 筹措现金净额 num cfxjjze 现金及现金等价物净增额 num cfxsspxj 销售商品收到的现金 num mgsy 每股收益 num mgjzc 每股净资产 num tzmgjzc 调整后每股净资产 num mgzbgjj 每股资本公积金 num mgwfplr 每股未分配利润 num mgjyxjllje 每股经营活动产生的现金流量净额 num mgxjzjje 每股现金及现金等价物增加净额 num mll 毛利率 num zyywlrl 主营业务利润率 num jll 净利率 num zzcbcl 总资产报酬率 num jzcsyl 净资产收益率 num xsxjzb 销售商品收到的现金占主营收入比例 num yszczzl 应收帐款周转率 num chzzl 存货周转率 num gdzczzl 固定资产周转率 num zyywzzl 主营业务增长率 num jlrzzl 净利润增长率 num zzczzl 总资产增长率 num jzczzl 净资产增长率 num ldbl 流动比率 num sdbl 速动比率 num zcfzbl 资产负债比率 num fzbl 负债比率 num gdqybl 股东权益比率 num gdzcbl 固定资产比率 num kchmgjlr 扣除经常性损益后每股净利润 num ◎交易日期(cnrq)结构 字段名 含义 类型 备注 rq 交易日期 date ◎板块数据(cnbk)结构 字段名 含义 类型 备注 lb 类别 char bk 板块 char dm 代码 char zz 创建者 char ◎存款利率(cnll)结构 字段名 含义 类型 备注 dm 代码 char jc 简称 char rq 变动日期 date ll 利率 num ◎港股代码(hkdm)结构 字段名 含义 类型 备注 dm 代码 char jc 简称 char ◎港股行情(hkhq)结构 字段名 含义 类型 备注 dm 代码 char rq 日期 date kp 开盘 num zg 最高 num zd 最低 num sp 收盘 num sl 成交数量 num je 成交金额 num FxjData2FinData程序有上千行 调用方法: /************************************************************************************* 使用说明: 1)调用格式:FxjData2FinData(Market,DataType,FinDataLib) 其中, Market:市场代码,SH为沪市,SZ为深市,BK为板块指数,如果有其它市场数据,可有其它市场代码如HK等. DataType:数据类型,dm,cq,cw0,hq0,hq,等等,含义见下面注释 FinDataLib:目标逻辑库,如果给定的目标逻辑库不存在,则将设为Work 2)如果数据文件已经被分析家等软件占用导致无法打开时,将自动复制一份该文件,并从该备份文件中读取数据. 3)程序将自动补充数据,即如果目标表不存在,则建立并添加数据,如果目标表已存在,则判断表中每只证券的最新 数据,然后只添加数据表中所缺少的数据. ***************************************************************************************/ /*请修改以下的参数*/ %let FxjPath=C:\fxj\;/*分析家安装目录*/ /*HqmbFilesToRead=分笔成交读取文件数.若为1则只读取report.dat, 若为值n,则除了读取Report.dat外还将读取(n-1)个最新.PRP历史分笔成交数据文件*/ %let HqmbFilesToRead=2; /*请确认要转换的数据,在下面语句的%后加*变为注释取消转换*/ /*沪市*/ %FxjData2FinData(sh,dm,FinData); /*dm--证券代码,原数据集将保存为xxDM_bak*/ %FxjData2FinData(sh,cq,FinData); /*cq--除权数据*/ %FxjData2FinData(sh,cw0,FinData); /*cw0--最新财务数据*/ %FxjData2FinData(sh,hq0,FinData); /*hq0--最新行情*/ %FxjData2FinData(sh,hq,FinData); /*hq--每日行情*/ %FxjData2FinData(sh,hqmb,FinData); /*hqmb--每笔成交*/ %FxjData2FinData(sh,hq5,FinData);/*hq5--5分钟行情*/ %FxjData2FinData(sh,fp,FinData);/*fp--分红送配(专业财务数据)*/ %FxjData2FinData(sh,gb,FinData);/*gb--股本结构(专业财务数据)*/ %FxjData2FinData(sh,cw,FinData);/*cw--财务数据(专业财务数据)*/ %FxjData2FinData(sh,gd,FinData);/*gd--十大股东(专业财务数据)*/ %FxjData2FinData(sh,jjjz,FinData);/*jjjz--基金净值(专业财务数据)*/ %FxjData2FinData(sh,jjzh,FinData);/*jjzh--基金投资组合(专业财务数据)*/ /*深市*/ %FxjData2FinData(sz,dm,FinData); %FxjData2FinData(sz,cq,FinData); %FxjData2FinData(sz,cw0,FinData); %FxjData2FinData(sz,hq0,FinData); %FxjData2FinData(sz,hq,FinData); %FxjData2FinData(sz,hqmb,FinData); %FxjData2FinData(sz,hq5,FinData); %FxjData2FinData(sz,fp,FinData); %FxjData2FinData(sz,gb,FinData); %FxjData2FinData(sz,cw,FinData); %FxjData2FinData(sz,gd,FinData); %FxjData2FinData(sz,jjjz,FinData); %FxjData2FinData(sz,jjzh,FinData); /*板块及板块指数*/ %FxjData2FinData(bk,zh,FinData);/*板块数据:Market=bk,DataType=zh,...*/ %FxjData2FinData(bk,dm,FinData); %FxjData2FinData(bk,hq0,FinData); %FxjData2FinData(bk,hq,FinData); %FxjData2FinData(bk,hqmb,FinData); %FxjData2FinData(bk,hq5,FinData); /*香港市场*/ %*FxjData2FinData(hk,dm,FinData); %*FxjData2FinData(hk,hq0,FinData); %*FxjData2FinData(hk,hq,FinData); %*FxjData2FinData(hk,hqmb,FinData); %*FxjData2FinData(hk,hq5,FinData); 大智慧新一代 2.08.07.0907 数据格式 作者:root 日期:2007-12-12 字体大小: 小 中 大 备忘 日线数据文件day.dat case DataTypes.hq: fileName = "DAY.DAT"; startAddress = 0x41000; blockSize = 8192; recordSize = 32; codeIsLong = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,date,4,1,0,;" + "kp,开盘,single,4,2,4,B;" + "zg,最高,single,4,3,8,B;" + "zd,最低,single,4,4,12,B;" + "sp,收盘,single,4,5,16,B;" + "sl,成交数量,single,4,6,20,A;"+ "je,成交金额,single,4,7,24,";    数据格式几乎与分析家相同 起止地址 数据内容 数据含义 数据类型 00 - 03 F4 9B 13 FC 文件标志 int 04 - 07 00 06 00 00 未知 int 08 - 0B 00 00 00 00 保留 int 0C - 0F 97 04 00 00 证券总数 int 10 - 13 00 18 00 00 未知 int需添加之起始块号 14 - 17 DB 17 00 00 未知 int当前最后空块号 18 - 21 31 41 30 30 30...FF 证券代码 byte[10] 22 - 25 B0 09 00 00 日线记录数 int 26 - 57 00 00 25 04...FF FF 记录块号 char[25] ...... 记录块开始于0x41000 41000 - 41003 80 47 B2 2B 日期 int 41004 - 41007 B9 1E 25 41 开盘价 float 41008 - 4100B CD CC 4C 41 最高价 float 4100C - 4100F EC 51 18 41 最低价 float 41010 - 41013 9A 99 41 41 收盘价 float 41014 - 41017 80 06 B2 47 成交量 float 41018 - 4101B 40 1C BC 4C 成交金额 float 4101C - 4101D 00 00 上涨家数 char 4101E - 4101F 00 00 下跌家数 char 注:    1)起止地址、数据内容为十六进制,数据类型为 Delphi 下之定义。    2)从18h开始至40017h每64byte为一条股票数据分配记录,含义如上表18h - 57h所示;    3)从41000h开始每8KB为一股票数据存储块,每个股票数据存储块共存储256条日线记录,     每一条记录的长度为32 byte(含义如上表;上涨家数及下跌家数只对指数有效);    4)从41000h开始的8KB为第0号数据存储块,以后类推;    5)系统对每个股票日线数据存储以存储块为单位进行分配。    6)具体应用实例分析家数据管理程序。    7) 日期字段的意义为:实际日期 = StrToDate(^1970-01-01^)+(日期字段 div 86400);     即“日期字段”除以86400所得数为实际日期距1970年01月01日的天数。 有关块号计算方法,请参见分笔成交数据格式 日期字段的意义为:实际日期 = StrToDate(^1970-01-01^)+(日期字段 div 86400);  即“日期字段”除以86400所得数为实际日期距1970年01月01日的天数 1分钟数据文件min1.dat case DataTypes.hq1: fileName = "MIN1.DAT"; startAddress = 0x41000; blockSize = 12288;//8192 recordSize = 32; codeIsLong = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,datetime,4,1,0,;" + "kp,开盘,single,4,2,4,B;" + "zg,最高,single,4,3,8,B;" + "zd,最低,single,4,4,12,B;" + "sp,收盘,single,4,5,16,B;" + "sl,成交数量,single,4,6,20,A;"+ "je,成交金额,single,4,7,24,"; 5分钟数据文件min.dat case DataTypes.hq5: fileName = "MIN.DAT"; startAddress = 0x41000; blockSize = 8192; recordSize = 32; codeIsLong = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,datetime,4,1,0,;" + "kp,开盘,single,4,2,4,B;" + "zg,最高,single,4,3,8,B;" + "zd,最低,single,4,4,12,B;" + "sp,收盘,single,4,5,16,B;" + "sl,成交数量,single,4,6,20,A;" + "je,成交金额,single,4,7,24,"; 最新行情STKINFO60.dat case DataTypes.hq0: fileName = "STKINFO60.DAT"; startAddress = 0x68A8A6; blockSize = 0; recordSize = 273; codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "jc,简称,string,32,1,10,;" + "rq,更新时间,datetime,4,5,60,;" + "zs,昨收,single,4,7,68,;" + "kp,今开,single,4,8,72,;" + "zg,最高,single,4,9,76,;" + "zd,最低,single,4,10,80,;" + "sp,最新,single,4,11,84,;" + "sl,总手数,single,4,12,88,;" + "je,金额,single,4,13,92,;" + "xss,现手数,single,4,14,96,;" + "ztj,涨停价,single,4,27,184,;" + "dtj,跌停价,single,4,28,188,;" + "np,内盘,single,4,27,192,;" + "wp,外盘,single,4,28,196,;" + "mrjg1,买一价,single,4,15,100,;" + "mrsl1,买一量,single,4,18,120,;" + "mrjg2,买二价,single,4,16,104,;" + "mrsl2,买二量,single,4,19,124,;" + "mrjg3,买三价,single,4,17,108,;" + "mrsl3,买三量,single,4,20,128,;" + "mrjg4,买四价,single,4,32,112,;" + "mrsl4,买四量,single,4,34,132,;" + "mrjg5,买五价,single,4,33,116,;" + "mrsl5,买五量,single,4,35,136,;" + "mcjg1,卖一价,single,4,21,140,;" + "mcsl1,卖一量,single,4,24,160,;" + "mcjg2,卖二价,single,4,22,144,;" + "mcsl2,卖二量,single,4,25,164,;" + "mcjg3,卖三价,single,4,23,148,;" + "mcsl3,卖三量,single,4,26,168,;" + "mcjg4,卖四价,single,4,36,152,;" + "mcsl4,卖四量,single,4,38,172,;" + "mcjg5,卖五价,single,4,37,156,;" + "mcsl5,卖五量,single,4,39,176,"; //"jd,精度,int,4,3,52,;" + //"scbz,删除标志,int,4,4,56,"; //"unknown,(未知),int,4,31,164,;" + //",(未知),,48,40,200,;" 分笔成交数据文件report.dat(结构同day.dat,但其中一些数据不是直接保存) case DataTypes.hqmb: fileName = "REPORT.DAT"; startAddress = 0x41000; blockSize = 12272; recordSize = 52; codeIsLong = false; isIndexDataStruct = false;//不完全等同于day.dat结构,因此单独处理 fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,datetime,4,0,0,;" + "zjcj,最近成交价,single,4,1,4,;" + "zss,总手数,single,4,2,8,calc;" + "je,金额,single,4,3,12,;" + "xss,现手数,single,4,2,8,;" + "mm,内外盘,string,2,16,21,;" + "mr1jg,买一价,single,1,10,42,;" + "mr1sl,买一量,single,2,4,22,;" + "mr2jg,买二价,single,1,11,43,;" + "mr2sl,买二量,single,2,5,24,;" + "mr3jg,买三价,single,1,12,44,;" + "mr3sl,买三量,single,2,6,26,;" + "mr4jg,买四价,single,1,12,45,;" + "mr4sl,买四量,single,2,6,28,;" + "mr5jg,买五价,single,1,12,46,;" + "mr5sl,买五量,single,2,6,30,;" + "mc1jg,卖一价,single,1,13,47,;" + "mc1sl,卖一量,single,2,7,32,;" + "mc2jg,卖二价,single,1,14,48,;" + "mc2sl,卖二量,single,2,8,34,;" + "mc3jg,卖三价,single,1,15,49,;" + "mc3sl,卖三量,single,2,9,36,;"+ "mc4jg,卖四价,single,1,14,50,;" + "mc4sl,卖四量,single,2,8,38,;" + "mc5jg,卖五价,single,1,14,51,;" + "mc5sl,卖五量,single,2,8,40,;" + "bs,总笔数,int,2,0,16," ; //以上数据类型不是存储类型,程序中不直接用实际数据类型:买/卖X量为short,买/卖X价为byte //现手数通过当总手数计算而得,应该放在总手数后面 大智慧新一代Level-2 分笔成交数据格式 起止地址 数据内容 数据含义 数据类型 00 - 03 F4 9B 13 FC 日线文件标志 int 04 - 07 10 02 00 00 未知 int 08 - 0B 00 43 DF 46 1970.01.01 00:00:00始的秒数 int 0C - 0F 5D 05 00 00 证券总数 int 10 - 13 ED 20 00 00 未知 int 14 - 17 ED 20 00 00 未知 int 18 - 21 30 30 30 30 30 31 00 00 证券代码 byte[10] 22 - 25 9C 12 00 00 日分笔记录数 int 26 - 57 00 00 BA 03...FF FF 记录块号 char[25] 00041000 记录页起始点, 每记录长: 0x34 = 52 每页记录数: 0xEC = 236 每页长: 每记录长0x34 * 每页记录数0xEC = 0x2FF0 = 12272 地 址 数据内容 数据含义 数据类型 41000 - 41003 35 FA DF 46 1970.01.01 00:00:00 始的秒数 int 41004 - 41007 00 00 18 41 最新价 float 41008 - 4100B 00 80 B4 43 累计成交量 float 4100C - 4100F 80 46 A7 48 累计成交金额 float 41010 - 41011 51 9C 累计成交笔数 char 41012 - 41013 00 00 未知 char 41014 10 累计成交笔数的溢出标志(00|10) byte 41015 80 买入,卖出标识(80|E0买入,C0|A0卖出) byte 41016 - 41017 23 01 委买量1 char 41018 - 41019 8E 5B 委买量2 char 4101A - 4101B 80 27 委买量3 char 4101C - 4101D 8E 5B 委买量4 char 4101E - 4101F B8 40 委买量5 char 41020 - 41021 23 01 委卖量1 char 41022 - 41023 8E 5B 委卖量2 char 41024 - 41025 80 27 委卖量3 char 41026 - 41027 8E 5B 委卖量4 char 41028 - 41029 B8 40 委卖量5 char 4102A 16 委买价1 与成交价的差 byte 4102B 9A 委买价2 与成交价的差 byte 4102C 80 委买价3 与成交价的差 byte 4102D 40 委卖价4 与成交价的差 byte 4102E 30 委卖价5 与成交价的差 byte 4102F 57 委卖价1 与成交价的差 byte 41030 68 委卖价2 与成交价的差 byte 41031 69 委卖价3 与成交价的差 byte 41032 7A 委卖价4 与成交价的差 byte 41033 81 委卖价5 与成交价的差 byte 注意: 1、如有疑问请与 QQ 8588711 联系,愿与您共同挖掘股票成交数据。 2、数据类型为JAVA数据类型定义,实际读数据时应该将数据十六进制取反,如:41000 - 41003的数据为 35 FA DF 46,实际应该读成:   0x46DFFA35 = 1189083701, 这个1189083701值就是距1970.01.01 00:00:00 始的实际秒数。其他int,float,char都是这样取反的。 3、委买卖与成交价的差,是小数点后的整数差,如果买卖标识为80或C0,成交价小数点后是两位(股票),如果买卖标识为E0或A0,   成交价小数点后是三位(权证等) 4、累计成交笔数如果溢出,则41014位上的值不为00,而是10或者20,30等,成交笔数计算方法应为:41014位上的值反转,   10转为01,20转为02。。。 再与41010 - 41011位上的值合并成一个16进制串。 5、记录块号计算方法:char[0] = 0x00 第一个记录块起始地址为:41000h + 0x0000 * 0x2FF0 = 41000h,char[1] = 0x03BA   则第二个记录块起始地址为:41000h + 0x03BA * 0x2FF0 = 0x00077F78 标签: 财经 近日发现Level-2的逐笔成交数据是缓存在dzh2\data\sh\TEMP目录下,文件名以证券代码为名,后辍是.L2D,如果重启大智慧, L2D文件会全部被删除,而且临时文件只有在浏览过该证券的逐笔成交后才会生成,不过花的时间也不算太多。也许以后会要研究 逐笔成交数据了,这样的数据更有意义,读数据不是问题,最主要的是分析方法,当得到盘口异动数据后,还需要结合信息面来操作, 这样的成功几率非常大,我已经初尝胜果。后面,还要通过数据来分析大盘走势,还有通过行业数据异动,发现基金等大资金的中短期 目标,这点也非常之重要。这个十一假期,过得不会很闲,还有很多东西要做、、、 现在也不想接受QQ加好友请求,真正做数据盘口 分析的,发现数据格式,马上就已经投入战斗了,而且一看就会明了。在这个市场,每个人都有自己的方式生存,没有拿手绝活,那 是不要随便来玩的。逐笔成交数据格式,大概也会在不久后弄个明白。 财务数据(简单)STKINFO60.dat case DataTypes.cw0: fileName = "STKINFO60.DAT"; startAddress = 0x4c2a; blockSize = 2227; recordSize = 273;//196 codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,报告期,date,4,0,4,;" + "gxrq,更新日期,date,4,0,0,;" + "ssrq,上市日期,date,4,0,8,;" + "col1,每股收益,single,4,0,12,;" + "col2,每股净资产,single,4,0,16,;" + "col3,净资产收益率,single,4,0,20,;" + "col4,每股经营现金,single,4,0,24,;" + "col5,每股公积金,single,4,0,28,;" + "col6,每股未分配,single,4,0,32,;" + "col7,股东权益比,single,4,0,36,;" + "col8,净利润同比,single,4,0,40,;" + "col9,主营收入同比,single,4,0,44,;" + "col10,销售毛利率,single,4,0,48,;" + "col11,调整每股净资产,single,4,0,52,;" + "col12,总资产,single,4,0,56,;" + "col13,流动资产,single,4,0,60,;" + "col14,固定资产,single,4,0,64,;" + "col15,无形资产,single,4,0,68,;" + "col16,流动负债,single,4,0,72,;" + "col17,长期负债,single,4,0,76,;" + "col18,总负债,single,4,0,80,;" + "col19,股东权益,single,4,0,84,;" + "col20,资本公积金,single,4,0,88,;" + "col21,经营现金流量,single,4,0,92,;" + "col22,投资现金流量,single,4,0,96,;" + "col23,筹资现金流量,single,4,0,100,;" + "col24,现金增加额,single,4,0,104,;" + "col25,主营收入,single,4,0,108,;" + "col26,主营利润,single,4,0,112,;" + "col27,营业利润,single,4,0,116,;" + "col28,投资收益,single,4,0,120,;" + "col29,营业外收支,single,4,0,124,;" + "col30,利润总额,single,4,0,128,;" + "col31,净利润,single,4,0,132,;" + "col32,未分配利润,single,4,0,136,;" + "col33,总股本,single,4,0,140,;" + "col34,无限售股合计,single,4,0,144,;" + "col35,A股,single,4,0,148,;" + "col36,B股,single,4,0,152,;" + "col37,境外上市股,single,4,0,156,;" + "col38,其他流通股,single,4,0,160,;" + "col39,限售股合计,single,4,0,164,;" + "col40,国家持股,single,4,0,168,;" + "col41,国有法人股,single,4,0,172,;" + "col42,境内法人股,single,4,0,176,;" + "col43,境内自然人股,single,4,0,180,;" + "col44,其他发起人股,single,4,0,184,;" + "col45,募集法人股,single,4,0,188,;" + "col46,境外法人股,single,4,0,192,;" + "col47,境外自然人股,single,4,0,196,;" + "col48,优先股或其他,single,4,0,200,"; 分红送配STKINFO60.dat case DataTypes.cq: fileName = "STKINFO60.DAT"; startAddress = 0x44aa; blockSize = 2227; recordSize = 20; codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,date,4,0,0,;" + "sgbl,送股比例,single,4,1,4,;" + "pgbl,配股比例,single,4,2,8,;" + "pgjg,配股价格,single,4,3,12,;" + "fh,分红,single,4,4,16,"; 代码表STKINFO60.dat case DataTypes.dm: fileName = "STKINFO60.DAT"; startAddress = 0x68A8A6; blockSize = 0; recordSize = 273;//fxj248 codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "jc,简称,string,32,1,10,"; struct fileStruct { public string fileName;//文件名 public int startAddress,blockSize,recordSize;//起始地址,每块长度,记录长度 public bool codeIsLong, isIndexDataStruct; //codeIsLong索引中的代码包含有市场代码SH、SZ等;isIndexDataStruct象Day.Dat那样的结构即由索引+数据组成; public string[,] fields;//字段 public fileStruct(DataTypes fileType) { fileName = ""; startAddress = 0; blockSize = 0; recordSize = 0; codeIsLong = false; isIndexDataStruct = true; string fieldString = ""; //字段名,字段标签,类型,长度字段,存储顺序,偏移量 switch (fileType) { #region 代码表STKINFO60.DAT//代码的拼音是乱码,有可能拼音简写未存盘,而是由大智慧软件另行计算。 case DataTypes.dm: fileName = "STKINFO60.DAT"; //startAddress = 0x845898; startAddress = 0x6d0226; //startAddress = 0x68A8A6; blockSize = 0; //recordSize = 248;//原分析家 recordSize = 273; codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "jc,简称,string,32,1,10,;" + "py,拼音,string,10,2,42,"; break; #endregion #region 分红送配STKINFO60.DAT//除权数据//OK case DataTypes.cq: fileName = "STKINFO60.DAT"; startAddress = 0x44aa; blockSize = 2227; recordSize = 20; codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,date,4,0,0,;" + "sgbl,送股比例,single,4,1,4,;" + "pgbl,配股比例,single,4,2,8,;" + "pgjg,配股价格,single,4,3,12,;" + "fh,分红,single,4,4,16,"; break; #endregion #region 财务数据(简单)STKINFO60.DAT//OK case DataTypes.cw0: fileName = "STKINFO60.DAT"; startAddress = 0x4c2a; blockSize = 2227; recordSize = 273; codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,报告期,date,4,0,4,;" + "gxrq,更新日期,date,4,0,0,;" + "ssrq,上市日期,date,4,0,8,;" + "col1,每股收益,single,4,0,12,;" + "col2,每股净资产,single,4,0,16,;" + "col3,净资产收益率,single,4,0,20,;" + "col4,每股经营现金,single,4,0,24,;" + "col5,每股公积金,single,4,0,28,;" + "col6,每股未分配,single,4,0,32,;" + "col7,股东权益比,single,4,0,36,;" + "col8,净利润同比,single,4,0,40,;" + "col9,主营收入同比,single,4,0,44,;" + "col10,销售毛利率,single,4,0,48,;" + "col11,调整每股净资产,single,4,0,52,;" + "col12,总资产,single,4,0,56,;" + "col13,流动资产,single,4,0,60,;" + "col14,固定资产,single,4,0,64,;" + "col15,无形资产,single,4,0,68,;" + "col16,流动负债,single,4,0,72,;" + "col17,长期负债,single,4,0,76,;" + "col18,总负债,single,4,0,80,;" + "col19,股东权益,single,4,0,84,;" + "col20,资本公积金,single,4,0,88,;" + "col21,经营现金流量,single,4,0,92,;" + "col22,投资现金流量,single,4,0,96,;" + "col23,筹资现金流量,single,4,0,100,;" + "col24,现金增加额,single,4,0,104,;" + "col25,主营收入,single,4,0,108,;" + "col26,主营利润,single,4,0,112,;" + "col27,营业利润,single,4,0,116,;" + "col28,投资收益,single,4,0,120,;" + "col29,营业外收支,single,4,0,124,;" + "col30,利润总额,single,4,0,128,;" + "col31,净利润,single,4,0,132,;" + "col32,未分配利润,single,4,0,136,;" + "col33,总股本,single,4,0,140,;" + "col34,无限售股合计,single,4,0,144,;" + "col35,A股,single,4,0,148,;" + "col36,B股,single,4,0,152,;" + "col37,境外上市股,single,4,0,156,;" + "col38,其他流通股,single,4,0,160,;" + "col39,限售股合计,single,4,0,164,;" + "col40,国家持股,single,4,0,168,;" + "col41,国有法人股,single,4,0,172,;" + "col42,境内法人股,single,4,0,176,;" + "col43,境内自然人股,single,4,0,180,;" + "col44,其他发起人股,single,4,0,184,;" + "col45,募集法人股,single,4,0,188,;" + "col46,境外法人股,single,4,0,192,;" + "col47,境外自然人股,single,4,0,196,;" + "col48,优先股或其他,single,4,0,200,"; break; #endregion #region 最新行情STKINFO60.DAT//OK case DataTypes.hq0: fileName = "STKINFO60.DAT"; startAddress = 0x6D0226; blockSize = 0; recordSize = 273; codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "jc,简称,string,32,1,10,;" + "rq,更新时间,datetime,4,5,60,;" + "zs,昨收,single,4,7,68,;" + "kp,今开,single,4,8,72,;" + "zg,最高,single,4,9,76,;" + "zd,最低,single,4,10,80,;" + "sp,最新,single,4,11,84,;" + "sl,总手数,single,4,12,88,;" + "je,金额,single,4,13,92,;" + "xss,现手数,single,4,14,96,;" + "ztj,涨停价,single,4,27,184,;" + "dtj,跌停价,single,4,28,188,;" + "np,内盘,single,4,27,192,;" + "wp,外盘,single,4,28,196,;" + "mrjg1,买一价,single,4,15,100,;" + "mrsl1,买一量,single,4,18,120,;" + "mrjg2,买二价,single,4,16,104,;" + "mrsl2,买二量,single,4,19,124,;" + "mrjg3,买三价,single,4,17,108,;" + "mrsl3,买三量,single,4,20,128,;" + "mrjg4,买四价,single,4,32,112,;" + "mrsl4,买四量,single,4,34,132,;" + "mrjg5,买五价,single,4,33,116,;" + "mrsl5,买五量,single,4,35,136,;" + "mcjg1,卖一价,single,4,21,140,;" + "mcsl1,卖一量,single,4,24,160,;" + "mcjg2,卖二价,single,4,22,144,;" + "mcsl2,卖二量,single,4,25,164,;" + "mcjg3,卖三价,single,4,23,148,;" + "mcsl3,卖三量,single,4,26,168,;" + "mcjg4,卖四价,single,4,36,152,;" + "mcsl4,卖四量,single,4,38,172,;" + "mcjg5,卖五价,single,4,37,156,;" + "mcsl5,卖五量,single,4,39,176,"; //"jd,精度,int,4,3,52,;" + //"scbz,删除标志,int,4,4,56,"; //"unknown,(未知),int,4,31,164,;" + //",(未知),,48,40,200,;" break; #endregion #region 分笔成交数据文件report.dat(结构同day.dat,但其中一些数据不是直接保存)//OK case DataTypes.hqmb: fileName = "REPORT.DAT"; //fileName = "20080926.PRP"; startAddress = 0x41000; blockSize = 12272;//52*236=12272 recordSize = 52; codeIsLong = false; isIndexDataStruct = false;//不完全等同于day.dat结构,因此单独处理 fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,datetime,4,0,0,;" + "zjcj,最近成交价,single,4,1,4,;" + "zss,总手数,single,4,2,8,calc;" + "je,金额,single,4,3,12,;" + "xss,现手数,single,4,2,8,;" + "mm,内外盘,string,2,16,21,;" + "mr1jg,买一价,single,1,10,42,;" + "mr1sl,买一量,single,2,4,22,;" + "mr2jg,买二价,single,1,11,43,;" + "mr2sl,买二量,single,2,5,24,;" + "mr3jg,买三价,single,1,12,44,;" + "mr3sl,买三量,single,2,6,26,;" + "mr4jg,买四价,single,1,12,45,;" + "mr4sl,买四量,single,2,6,28,;" + "mr5jg,买五价,single,1,12,46,;" + "mr5sl,买五量,single,2,6,30,;" + "mc1jg,卖一价,single,1,13,47,;" + "mc1sl,卖一量,single,2,7,32,;" + "mc2jg,卖二价,single,1,14,48,;" + "mc2sl,卖二量,single,2,8,34,;" + "mc3jg,卖三价,single,1,15,49,;" + "mc3sl,卖三量,single,2,9,36,;" + "mc4jg,卖四价,single,1,14,50,;" + "mc4sl,卖四量,single,2,8,38,;" + "mc5jg,卖五价,single,1,14,51,;" + "mc5sl,卖五量,single,2,8,40,;" + "bs,总笔数,int,2,0,16," ; //以上数据类型不是存储类型,程序中不直接用实际数据类型:买/卖X量为short,买/卖X价为byte //现手数通过当总手数计算而得,应该放在总手数后面 break; #endregion #region 日线数据文件day.dat//OK case DataTypes.hq: fileName = "DAY.DAT"; startAddress = 0x41000; blockSize = 8192; recordSize = 32; codeIsLong = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,date,4,1,0,;" + "kp,开盘,single,4,2,4,B;" + "zg,最高,single,4,3,8,B;" + "zd,最低,single,4,4,12,B;" + "sp,收盘,single,4,5,16,B;" + "sl,成交数量,single,4,6,20,A;"+ "je,成交金额,single,4,7,24,"; break; #endregion #region 1分钟数据文件min1.dat case DataTypes.hq1: fileName = "MIN1.DAT"; startAddress = 0x41000; blockSize = 16384;//块大小为:/32=;原分析家是 recordSize = 32; codeIsLong = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,datetime,4,1,0,;" + "kp,开盘,single,4,2,4,B;" + "zg,最高,single,4,3,8,B;" + "zd,最低,single,4,4,12,B;" + "sp,收盘,single,4,5,16,B;" + "sl,成交数量,single,4,6,20,A;"+ "je,成交金额,single,4,7,24,"; break; #endregion #region 5分钟数据文件min.dat//OK case DataTypes.hq5: fileName = "MIN.DAT"; startAddress = 0x41000; blockSize = 8192; recordSize = 32; codeIsLong = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,datetime,4,1,0,;" + "kp,开盘,single,4,2,4,B;" + "zg,最高,single,4,3,8,B;" + "zd,最低,single,4,4,12,B;" + "sp,收盘,single,4,5,16,B;" + "sl,成交数量,single,4,6,20,A;"+ "je,成交金额,single,4,7,24,"; break; #endregion #region 分红送配数据文件exprof.fdt case DataTypes.fp: fileName = "EXPROF.FDT"; startAddress = 0x41000; blockSize = 3776; recordSize = 236; codeIsLong = true; fieldString = "dm,代码,code,12,0,0,;"+ "cqrq,除权日期,date,4,23,176,;" + "sgbl,送股比例,double,8,1,12,;" + "sgdjr,送股股权登记日,date,4,2,20,;"+ "sgcqr,送股除权日,date,4,3,24,;"+ "sgssr,红股上市日,date,4,4,28,;"+ "zzbl,转增比例,double,8,5,32,;"+ "zzdjr,转增股权登记日,date,4,6,40,;"+ "zzcqr,转增除权日,date,4,7,44,;"+ "zzssr,转增上市日,date,4,8,48,;"+ "fhbl,分红比例,double,8,9,52,;"+ "fhdjr,分红股权登记日,date,4,10,60,;" + "fhcxr,分红除息日,date,4,11,64,;" + "fhpxr,分红派息日,date,4,12,68,;" + "pgbl,配股比例,double,8,13,72,;"+ "pgdjr,配股股权登记日,date,4,14,80,;"+ "pgcqr,配股除权基准日,date,4,15,84,;"+ "pgjkqsr,配股缴款起始日,date,4,16,88,;"+ "pgjkzzr,配股缴款终止日,date,4,17,92,;"+ "pgssr,配股可流通上市日,date,4,18,96,;"+ "pgjg,配股价格,single,4,19,100,;"+ "frgpgbl,公众股受让法人股配股比例,double,8,20,104,;"+ "frgmgzrf,认购法人股配股每股转让费,single,4,21,112,;"+ "pgzcxs,配股主承销商,string,60,22,116,;"+ "bgrq,报告日期,date,4,24,180,;"+ "dshrq,董事会日期,date,4,25,184,;"+ "gdhrq,股东会日期,date,4,26,188,;"+ "fhggrq,分红公告日期,date,4,27,192,;"+ "zgbjs,总股本基数,double,8,28,196,;"+ "sgsl,送股数量,double,8,29,204,;"+ "zzsl,转增数量,double,8,30,212,;"+ "sjpgs,实际配股总数,double,8,31,220,;"+ "cqhzgb,除权后总股本,double,8,32,228"; break; #endregion #region 股本结构STKCapital.fdt case DataTypes.gb: fileName = "STKCAPITAL.FDT"; startAddress = 0x41000; blockSize = 3488; recordSize = 218; codeIsLong = true; fieldString = "dm,代码,code,12,0,0;" + "rq,日期,date,4,17,214;"+ "zgb,总股本,double,8,1,12;" + "gjg,国家股,double,8,2,20;" + "fqrg,发起人股,double,8,3,28;" + "frg,法人股,double,8,4,36;" + "ybfrps,一般法人配售,double,8,5,44;" + "zgg,内部职工股,double,8,6,52;" + "a,流通A股,double,8,7,60;" + "zltzag,战略投资A股,double,8,8,68;" + "zpg,转配股,double,8,9,76;" + "jjps,基金配售,double,8,10,84;" + "h,H股,double,8,11,92;" + "b,B股,double,8,12,100;" + "yxg,优先股,double,8,13,108;" + "ggcg,高级管理人员持股,double,8,14,116;" + "gbbdyy,股本变动原因,string,56,15,124;" + "gbbdyylb,股本变动原因类别,string,34,16,180"; break; #endregion #region 财务数据STKFinance.fdt case DataTypes.cw: fileName = "STKFINANCE.FDT"; startAddress = 0x41000; blockSize = 14848; recordSize = 464; codeIsLong = true; fieldString = "dm,代码,code,12,0,0,;"+ "rq,日期,date,4,,460,;"+ "bsdqtzje,短期投资净额,double,8,1,12,;"+ "bsyszkje,应收帐款净额,double,8,2,20,;"+ "bschje,存货净额,double,8,3,28,;"+ "bsldzc,流动资产,double,8,4,36,;"+ "bscqtzje,长期投资净额,double,8,5,44,;"+ "bsgdzc,固定资产,double,8,6,52,;"+ "bswxzc,无形及其他资产,double,8,7,60,;"+ "bszzc,总资产,double,8,8,68,;"+ "bsdqjk,短期借款,double,8,9,76,;"+ "bsyfzk,应付帐款,double,8,10,84,;"+ "bsldfz,流动负债,double,8,11,92,;"+ "bscqfz,长期负债,double,8,12,100,;"+ "bsfz,负债合计,double,8,13,108,;"+ "bsgb,股本,double,8,14,116,;"+ "bsssgdqy,少数股东权益,double,8,15,124,;"+ "bsgdqy,股东权益,double,8,16,132,;"+ "bszbgj,资本公积,double,8,17,140,;"+ "bsyygj,盈余公积,double,8,18,148,;"+ "iszysr,主营业务收入净额,double,8,1,156,;"+ "iszycb,主营业务成本,double,8,2,164,;"+ "iszylr,主营业务利润,double,8,3,172,;"+ "isqtlr,其它业务利润,double,8,4,180,;"+ "isyyfy,营业费用,double,8,5,188,;"+ "isglfy,管理费用,double,8,6,196,;"+ "iscwfy,财务费用,double,8,7,204,;"+ "istzsy,投资收益,double,8,8,212,;"+ "islrze,利润总额,double,8,9,220,;"+ "issds,所得税,double,8,10,228,;"+ "isjlr,净利润,double,8,11,236,;"+ "iskchjlr,扣除经常性损益后的净利润,double,8,12,244,;"+ "iswfplr,未分配利润,double,8,13,252,;"+ "cfjyhdxjlr,经营活动现金流入,double,8,1,260,;"+ "cfjyhdxjlc,经营活动现金流出,double,8,2,268,;"+ "cfjyhdxjje,经营活动现金净额,double,8,3,276,;"+ "cftzxjlr,投资现金流入,double,8,4,284,;"+ "cftzxjlc,投资现金流出,double,8,5,292,;"+ "cftzxjje,投资现金净额,double,8,6,300,;"+ "cfczxjlr,筹措现金流入,double,8,7,308,;"+ "cfczxjlc,筹措现金流出,double,8,8,316,;"+ "cfczxjje,筹措现金净额,double,8,9,324,;"+ "cfxjjze,现金及现金等价物净增额,double,8,10,332,;"+ "cfxsspxj,销售商品收到的现金,double,8,11,340,;"+ "mgsy,每股收益,single,4,1,348,;"+ "mgjzc,每股净资产,single,4,2,352,;"+ "tzmgjzc,调整后每股净资产,single,4,3,356,;"+ "mgzbgjj,每股资本公积金,single,4,4,360,;"+ "mgwfplr,每股未分配利润,single,4,5,364,;"+ "mgjyxjllje,每股经营活动产生的现金流量净额,single,4,6,368,;"+ "mgxjzjje,每股现金及现金等价物增加净额,single,4,7,372,;"+ "mll,毛利率,single,4,8,376,;"+ "zyywlrl,主营业务利润率,single,4,9,380,;"+ "jll,净利率,single,4,10,384,;"+ "zzcbcl,总资产报酬率,single,4,11,388,;"+ "jzcsyl,净资产收益率,single,4,12,392,;"+ "xsxjzb,销售商品收到的现金占主营收入比例,single,4,13,396,;"+ "yszczzl,应收帐款周转率,single,4,14,400,;"+ "chzzl,存货周转率,single,4,15,404,;"+ "gdzczzl,固定资产周转率,single,4,16,408,;"+ "zyywzzl,主营业务增长率,single,4,17,412,;"+ "jlrzzl,净利润增长率,single,4,18,416,;"+ "zzczzl,总资产增长率,single,4,19,420,;"+ "jzczzl,净资产增长率,single,4,20,424,;"+ "ldbl,流动比率,single,4,21,428,;"+ "sdbl,速动比率,single,4,22,432,;"+ "zcfzbl,资产负债比率,single,4,23,436,;"+ "fzbl,负债比率,single,4,24,440,;"+ "gdqybl,股东权益比率,single,4,25,444,;"+ "gdzcbl,固定资产比率,single,4,26,448,;"+ "kchmgjlr,扣除经常性损益后每股净利润,single,4,27,452,"; break; #endregion #region 十大股东stkhold.fdt case DataTypes.gd: fileName = "STKHOLD.FDT"; startAddress = 0x41000; blockSize = 17568; recordSize = 2196; codeIsLong = true; fieldString = "dm,代码,code,12,0,0,;"+ "rq,日期,date,4,66,2192,;" + "gd1mc,股东名称,string,160,1,12,;"+ "gd1cgsl,股东持股数量,double,8,2,172,;"+ "gd1cgbl,股东持股比例,single,4,3,180,;"+ "gd1bz,股东备注,string,20,4,184,;"+ "gd1fr,股东法人,string,8,5,204,;"+ "gd1jyfw,股东经营范围,string,16,6,212,;"+ "gd2mc,股东名称,string,160,7,228,;"+ "gd2cgsl,股东持股数量,double,8,8,388,;"+ "gd2cgbl,股东持股比例,single,4,9,396,;"+ "gd2bz,股东备注,string,20,10,400,;"+ "gd2fr,股东法人,string,8,11,420,;"+ "gd2jyfw,股东经营范围,string,16,12,428,;"+ "gd3mc,股东名称,string,160,13,444,;"+ "gd3cgsl,股东持股数量,double,8,14,604,;"+ "gd3cgbl,股东持股比例,single,4,15,612,;"+ "gd3bz,股东备注,string,20,16,616,;"+ "gd3fr,股东法人,string,8,17,636,;"+ "gd3jyfw,股东经营范围,string,16,18,644,;"+ "gd4mc,股东名称,string,160,19,660,;"+ "gd4cgsl,股东持股数量,double,8,20,820,;"+ "gd4cgbl,股东持股比例,single,4,21,828,;"+ "gd4bz,股东备注,string,20,22,832,;"+ "gd4fr,股东法人,string,8,23,852,;"+ "gd4jyfw,股东经营范围,string,16,24,860,;"+ "gd5mc,股东名称,string,160,25,876,;"+ "gd5cgsl,股东持股数量,double,8,26,1036,;"+ "gd5cgbl,股东持股比例,single,4,27,1044,;"+ "gd5bz,股东备注,string,20,28,1048,;"+ "gd5fr,股东法人,string,8,29,1068,;"+ "gd5jyfw,股东经营范围,string,16,30,1076,;"+ "gd6mc,股东名称,string,160,31,1092,;"+ "gd6cgsl,股东持股数量,double,8,32,1252,;"+ "gd6cgbl,股东持股比例,single,4,33,1260,;"+ "gd6bz,股东备注,string,20,34,1264,;"+ "gd6fr,股东法人,string,8,35,1284,;"+ "gd6jyfw,股东经营范围,string,16,36,1292,;"+ "gd7mc,股东名称,string,160,37,1308,;"+ "gd7cgsl,股东持股数量,double,8,38,1468,;"+ "gd7cgbl,股东持股比例,single,4,39,1476,;"+ "gd7bz,股东备注,string,20,40,1480,;"+ "gd7fr,股东法人,string,8,41,1500,;"+ "gd7jyfw,股东经营范围,string,16,42,1508,;"+ "gd8mc,股东名称,string,160,43,1524,;"+ "gd8cgsl,股东持股数量,double,8,44,1684,;"+ "gd8cgbl,股东持股比例,single,4,45,1692,;"+ "gd8bz,股东备注,string,20,46,1696,;"+ "gd8fr,股东法人,string,8,47,1716,;"+ "gd8jyfw,股东经营范围,string,16,48,1724,;"+ "gd9mc,股东名称,string,160,49,1740,;"+ "gd9cgsl,股东持股数量,double,8,50,1900,;"+ "gd9cgbl,股东持股比例,single,4,51,1908,;"+ "gd9bz,股东备注,string,20,52,1912,;"+ "gd9fr,股东法人,string,8,53,1932,;"+ "gd9jyfw,股东经营范围,string,16,54,1940,;"+ "gd10mc,股东名称,string,160,55,1956,;"+ "gd10cgsl,股东持股数量,double,8,56,2116,;"+ "gd10cgbl,股东持股比例,single,4,57,2124,;"+ "gd10bz,股东备注,string,20,58,2128,;"+ "gd10fr,股东法人,string,8,59,2148,;"+ "gd10jyfw,股东经营范围,string,16,60,2156,;"+ "gdzs,股东总数,int,4,61,2172,;"+ "gjgfrggds,国家股法人股股东数,int,4,62,2176,;"+ "aggds,流通股A股股东数,int,4,63,2180,;"+ "bggds,流通股B股股东数,int,4,64,2184,"; break; #endregion #region 基金周报fundweek.fdt case DataTypes.jjjz: //fileName = "FUNDWEEK.FDT"; fileName = "FUNDINFO.fdt"; startAddress = 0x41000; blockSize = 12032; recordSize = 188; codeIsLong = true; fieldString = "dm,代码,code,12,0,0,;"+ "rq,日期,date,4,13,184,;"+ "dwjz,基金单位净值,single,4,6,152,;" + "jjze,基金净值总额,double,8,5,144,;" + "gm,基金规模,double,8,4,136,;" + "dwcz,基金单位初值,single,4,7,156,;"+ "tzhjz,基金调整后净值,single,4,8,160,;"+ "tzhcz,基金调整后初值,single,4,9,164,;"+ "zzl,基金增长率(%),double,8,10,168,;"+ "ljjz,基金累计净值,single,4,11,176,;"+ "slrq,基金设立日期,date,4,1,12,;"+ "glr,基金管理人,string,60,2,16,;"+ "tgr,基金托管人,string,60,3,76," ;//12为保留字段 break; #endregion #region 基金投资组合funddiv.fdt case DataTypes.jjzh: fileName = "FUNDDIV.FDT"; fileName = "FUNDINVEST.fdt"; startAddress = 0x41000; blockSize = 8320; recordSize = 260; codeIsLong = true; fieldString = "dm,代码,code,12,0,0,;" + "bgrq,报告日期,date,4,31,252,;" + "zzrq,截止日期,date,4,32,256,;" + "dm1,证券代码,string,12,1,12,;" + "sz1,证券市值,double,8,2,24,;" + "bl1,证券占净值比例(%),single,4,3,32,;" + "dm2,证券代码,string,12,4,36,;" + "sz2,证券市值,double,8,5,48,;" + "bl2,证券占净值比例(%),single,4,6,56,;" + "dm3,证券代码,string,12,7,60,;" + "sz3,证券市值,double,8,8,72,;" + "bl3,证券占净值比例(%),single,4,9,80,;" + "dm4,证券代码,string,12,10,84,;" + "sz4,证券市值,double,8,11,96,;" + "bl4,证券占净值比例(%),single,4,12,104,;" + "dm5,证券代码,string,12,13,108,;" + "sz5,证券市值,double,8,14,120,;" + "bl5,证券占净值比例(%),single,4,15,128,;" + "dm6,证券代码,string,12,16,132,;" + "sz6,证券市值,double,8,17,144,;" + "bl6,证券占净值比例(%),single,4,18,152,;" + "dm7,证券代码,string,12,19,156,;" + "sz7,证券市值,double,8,20,168,;" + "bl7,证券占净值比例(%),single,4,21,176,;" + "dm8,证券代码,string,12,22,180,;" + "sz8,证券市值,double,8,23,192,;" + "bl8,证券占净值比例(%),single,4,24,200,;" + "dm9,证券代码,string,12,25,204,;" + "sz9,证券市值,double,8,26,216,;" + "bl9,证券占净值比例(%),single,4,27,224,;" + "dm10,证券代码,string,12,28,228,;" + "sz10,证券市值,double,8,29,240,;" + "bl10,证券占净值比例(%),single,4,30,248,"; break; #endregion #region 板块userdata\block case DataTypes.bk: fileName = "BLOCK.DEF"; startAddress = 0; blockSize = 0; recordSize = 248; codeIsLong = false; isIndexDataStruct = false; fieldString = "lb,类别,string,20,0,0,;" + "bk,板块,string,20,1,10,;" + "dm,证券代码,string,10,2,42,"; break; #endregion #region 评级 case DataTypes.pj: fileName = "评级.str"; //fileName = "SIMU.DAT"; startAddress = 0; blockSize = 256; recordSize = 256; codeIsLong = true; isIndexDataStruct = false; fieldString = "dm,证券代码,string,12,0,0,;" + "pj,评级,string,2,2,0,;" + "sm,说明,string,244,2,0,"; break; #endregion #region 复权行情,计算而得 case DataTypes.hqfq: fileName = "DAY.DAT"; startAddress = 0x41000; blockSize = 8192; recordSize = 32; codeIsLong = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,date,4,1,0,;" + "kp,开盘复权价,single,4,2,4,B;" + "zg,最高复权价,single,4,3,8,B;" + "zd,最低复权价,single,4,4,12,B;" + "sp,收盘复权价,single,4,5,16,B;" + "sl,复权成交数量,single,4,6,20,A;" + "je,成交金额,single,4,7,24,;"+ "spsyl,收盘收益率,single,4,0,0,"; break; #endregion } string[] fieldLine = fieldString.Split(new char[] { ';' }); fields = new string[fieldLine.Length, 7]; for (int i = 0; i < fieldLine.Length; i++) { string[] field = fieldLine[i].Split(new char[]{','} ,7 ); for(int j=0;j
SakEmail components Copyright ?1997 - 2003 Sergio A. Kessler web: http://groups.yahoo.com/group/sakemail/To subscribe to the mailing list of sakemail, just go tohttp://groups.yahoo.com/group/sakemail/History:0.9 - First released version0.9.1b -Fixed when a mail server reply on the connection with more than one line0.9.2b - I forget to return a value in functions retrieveHeader/Message =) and fixed it. Some minor bugs that I don‘t remember fixed.- Added MIME-compliant base64 support (not for use by now). Added examples.0.9.2.1b- Fixed a bug when send a mail and the first line disappear (thanks to Arun)- Now, you could do MySMTP.MsgTo := ‘a@doma.com; b@domb.com;c@domc.com‘; the spaces before/after semicolon doesn‘t matter (I hope ;)).0.9.3b- Many changes, I added a SakMsg component that make send binary attachments a snap. But have one problem, if you send as attach a file > 20 Kb, it doesn‘t work (I don‘t know why, maybe a problem of sockets). Developed with a version 2.0b of WSockets and D3.0.9.3.1b- Changed the POP.login to a function that return the number of new msgs.- Added the event OnRetrieveProgress on the SakPOP, and fixed the example, sorry =)- Minor changes to the code.1.0- Developed with WSockets 1.2 POP.Login now return a boolean depending id the user is authorized, and POP.Init return the number of new msgs.1.01- Fixed a bug with a bounced mail.1.02- Minor bugs fixed (some variants of boundary)14/10/971.1.0- Warning: WSockets1.2 have some bugs that result in bad attachments. So I decided to use the sockets of Delphi 3 founded in D3 c/s D3.01 pro and D3.01 c/s. Now all seems to work fine and much more smooth. And of course the interface of SakEmail hasn‘t changed.26/10/971.2.0- Added the Reply-To field to TSakMsg comp. Now you must use ‘,‘ when you want to send the msg. to multiple recipients, i.e.: ‘a@doma.com, b@domb.com,c@domc.com‘ This change is done for better compatibility with other emails clients.- Better formatting of the field Date of TSakMsg. Some changes to the code.17/11/971.2.1- Now, all searches are made in case-insensitive, it could prevent some unexpected responses (no one reported, but...). Some changes to the code (again).20/11/971.2.2- Some bugs fixed. (Thanks to Serge Wagener from .lu)24/11/971.2.3- Added the field ‘MIME-Version: 1.0‘. It seems that is necessary :)25/11/971.3.0- Added compatibility with SCO and VAX servers. Fixed a minor bug with the boundary.- Change the generator of the message id.- Added the field MessageId and InReplyTo to the TSakMsg component.- Added the field In-Reply-To that is added to the message generated when it is <> ‘‘.30/11/971.3.1- Almost rewrote the parsing code. Now is more easy for you if you want hack/modify the code.- Better treatment of emails with html inside.15/12/971.4- Added support for UUCoded attachments.- Added a small delay when sending the email, seems that some servers can‘t deglut the info too fast, causing problems with sockets buffers and leading to crash the client machine, I don‘t know if is a Borland bug or Microsoft bug. (thanks to Don Higgins).19/12/971.4.1- Fixed a bug that send double ‘<‘ and ‘>‘ (ie. <>) when the full user name is used. Check the new SMTP demo. Thanks to Serge Wagener for locate this bug, track it down and send me the fix.2/2/981.5.0- Added the Canceled property to TSakPOP and to TSakSMTP. Due to this addition now RetrieveAllMessages is a function that return the number of msgs. retrieved and SendMessage is a boolean function (maybe someone has pressed the cancel btn).- Fixed a bug when the subject field is too large.9/2/981.5.1- Fixed a bug with a message within a message (recursive msgs).18/2/981.5.2- Fixed a bug what happens when after the field ‘To:‘ appear a blank line(Thanks to Osvaldo Fillia). Fixed a bug when sending email to more than two address (the separator is still ‘,‘).9/3/981.6.0- Sometimes the filenames of an attachment contain invalid chars making very dificult to open a TSaveDialog (you have noted this ?), now SakEmail deletes the invalid chars.- Applied a patch from Matjaz Bravc, that resolve the problem of localized dates, letting you choose (in design time) if you want localized dates (NOT recommended) or standards dates (english) via the LocalizedDates boolean property in the TSakSMTP comp. Thanks also to Serge Dosyukov for sending me a fix.- Also I applied another patch of Gregor Duchalski that cure a bug with PChar when this unit is used under NT. - It seems that some machines need more delay when sendig a msg (see previous posting 19/12/97), thanks to Matjaz Bravc.- I discover a bug in the transparency code, it is fixed now. Did you see the benefits of Open Source Software ? :)26/3/981.6.1- Added a FUNCFileName private variable to manage the complete path of the attached file. I receive problems reports with this, it work now ?.- Reduced the line sleep to 30 (tell me if this value doesn‘t work for you).27/4/981.7.0- Fixed a memory leak, thanks to Don Higgins.- Moved the string esErrorInFormatOfMsg to a property of SakPOP.- Because some people need to use IP addresses instead of Host names, I‘ve added a new property IPAddress to SakPOP and SakSMTP. If both are filled, then the Host name will be used, thanks to Roger F. Reghin for reporting this. The side effect for this is that YOUR app must check if the host is a host name or a IP address, in my app I remove the periods and try to convert the result to a float (long integers don‘t work, but float accept chars ‘e‘) if it doesn‘t work I assume that is a host name (someone has a better and simple idea ?).- Added the property FileStream to the class TAtachedFile and the procedure SaveToStream, this was done by Brian Sheperd- The address separator (in the TO: field) is ‘,‘ and ‘;‘ now (before it was ‘,‘ only).1.7.1- Roger F. Reghin has sended me a pair of nice patches that resolve in a good behavior when the destination address is something like "Roger Reghin" and some servers says that they couldn‘t relay that mail, etc. Also Roger has made the IPAddress property obsolete (do not use it, use Host instead), SakEmail will resolve the host properly no matter if it is a host name or a IP address. So in the next version I will remove the IPAddress property. Thank you, Roger.1.8.0- Well, it seems that I made a mistake, I investigated the previous behavior and it is a fault of the SMTP (RFC 821), so I fixed it.- The IPAddress property has been removed, use Host. Goeran Strehl (asem) has sended me a patch that fix a memory leak and one problem with the object inspector and the Text property of a SakMsg. Dmitry Bondarenko say that some servers do not send the msg size after the RETR command, so he fix that issuing a LIST n command first (work nicely).- Added the property CC (Carbon Copy) to the SakMsg object.1.8.1- Added the property ReturnPath to the SakMsg comp. Minor changes to the scanning code for the filename of attachments.1.8.2- Fixed a bug with the filename of attachments (thanks to Taufer Pavel Ing.).- Added the function IsIPAddress from hou yg (the actual code don‘t work if the server is 265.net :) Fixed a minor bug with html pages like attachments. Some fucking email server return a bounded message declaring the boundary like ‘boundary = ‘ and not ‘boundary=‘ wich is clear in the RFC, fixed.1.8.3- A obscure bug was found by HuangYeJun from china, in the RetrieveHeaders function if the retrieved text was larger than 1024 bytes and the crlf.crlf fall in the middle of two chunks, the function is blocked. I don‘t use this function, btw.1.8.3.1- Just cleaned up a bit the FindUUAtachs function. Not bug or enhancements release. Serge Wagener put me to work >:|1.8.4- Dmitry Bondarenko (again) has found a bug in wich I do not respect the RFC, wich say that replys from the SMTP server could be multi-line, and the previous version just manage as far as two lines. He also send me a nice patch, so the bug is fixed.- Craig Manley added a ExtraHeaders property, please, use with care, it‘s just not valid to put inside it whatever thing.- The CC header was not being added to the headers that were being sent, so Craig fixed it.- Warning: I‘ve put try/except in the TSakPOP.Connect and TSMTP.Connect function around the line FSocket.Open, so you will need to write something like: myPOP.Connect; if POPError then ... in your code, the old way was: try myPOP.Connect; except ..... end; If you are strongly opossed to this change, drop me a line and tell me why (I‘m in doubts).1.8.5- Greg Nixon added the priority property. The default priority for each msg created will be prNormal, so you don‘t need to change your code any bit.1.8.6- Ulf Sturegren has added D4 compatibility, not many changes to the source (one letter), but he found the error.- Hou yg has sent to me a revisited IsIPAddress function, so I put the newer function in, infortunely my reply to him doesn‘t want to go.1.8.7- Ok, I discovered a weird bug, some old emailers (navigator 2) does not format the message in multipart mode if people send an attach, without writing any text and with no MIME settings. Fixed. This could be serious, I recommend upgrading.1.8.8- A small fix with the CC field. Some stupid mail servers put tabs in some fields (CC:, TO:) when they want to make a new line, the correct is to put at least a space in the beginning of the line, added a little code to "fix" that.1.8.9- Some ‘moderns‘ pop3 servers doesn‘t support the LAST command, so I‘ve added a little code to cope with this and added a boolean property ServerSupportLastCmd. See TSakPOP.Init for more details. Reported by Jan Najvarek.1.9.0- Kaufman Alex has added two properties to the SakMsg object, the ContentType and the Headers property, that should be self explaining (I modified a little the code he sended me, btw).1.9.1- I rewrote and greatly simplified the code that deal with the multiple address in the TO: field and remove some possible bugs in it.1.9.2- Alex discovered and fix a bug when a file attached is not enclosed between quotes, resulting in the filename without the first and last character.1.9.3- Better detection of the boundary in multipart messages. Fixed a bug when the attached file is empty.1.9.4- Chris G黱ther send me *lots* of memory leaks fixes, very good job, Chris. - Some weird PGP messages are now processed well.- Yang Qiandong from china fixed a compiler hint and a warning.- Modified TSakSMTP.FReceiveTextFromSocket as suggested by Greg Nixon.- Dmitry Bondarenko send me a patch that fixes some issues with the LAST command (that some servers don‘t implement) and other patch that fixes a problem when servers add spare words in the tail of the answer.- Some minor changes suggested by Matthew Vincent.- Support for _big_ attachments files (me).- Make the code more modular and simple (still is not very modular).1.10.0- Move some stuff to a sak_util unit.- Support for quoted-printable msgs, thanks to Chris G黱ther.- Fix the BCC field.- New property sakMsg.ContentTransferEncoding.2.0.0- Major reestructure of the files and the source code.- Simplifyied sakPOP3.pas a _lot_- Support encapsulated messages (message/rfc822).- Nested multipart messages are processed fine.- Attachs with quoted-printable are processed fine.- Many bugs fixes.2.0.1- A fiasco, sorry.2.0.2- Fixed a bug in the sak_CleanUpAddress.- Do the rigth job if the ContentType is ‘plain/text‘ and the encoding is base64.- Redone sak_ExtractAddress and sak_ExtractAlias.- New ‘Sender‘ property in SakMsg (normally not used, so do not use it, unless you know what you are doing) ‘Thanks‘ to Alex Kaufman for this.2.0.3- A *severe* bug with multiple addresses was fixed.2.0.4- Fixed bogus Message-number (Message-id is the correct) Thanks to Peter Honan- Added SizeInBytes property to the SakMsg component. (petition of Alex Kaufman)- Fixed a minor bug in TSakPOP.RetrieveHeaders. Fix from Alex.- Added RetrieveMessageOnlyHeaders and - RetrieveAllMessagesOnlyHeaders.2.0.5- Fix when the mail server reply is like (two cr).- Fix function IsIpAddress.- Both fixes by Alessandro Rossi.2.0.6- Fix a bug in the sak_Base64Decode function when the data to decode is null (I found it in the hard way).- Andy Charalambous make it sure you can send more than one email without disconnecting and connecting again.- And Chris ‘Memory Hunter‘ G黱ther killed some memory leaks (again).2.2.0- the f* sleep line that was bothering us for years is gone, gone, gone. Thanks to Syed Ahmed.- a getUIDL method of SakPOP. Thanks to Alex Kaufman.- a UIDL property on SakMsg. (me)- a SakPOP.GetUIDLsOnRetrieve boolean property (default false) (me)- change some ‘Exception.Create()‘ to ‘raise Exception.Create()‘ Thanks to Anton Saburov.- change SakPOP.Init from function to procedure (me)- new SakPOP.NewMsgsCount property (me)- changed SakPOP.Password to SakPOP.UserPassword (me)- changed SakPOP.ErrorInFormatOfMsg to SakPOP.StrErrorInFormatOfMsg- OnLookup event on SakPOP and SakSMTP. Thanks to Syed Ahmed.- OnConnecting event on SakPOP and SakSMTP (me).- OnReceiveTextFromSocket event on SakPOP and SakSMTP (me). (mostly for debug)- OnSendTextToSocket event on SakPOP and SakSMTP (me). (mostly for debug)- Headers are retrieved without the mail body (ugly bug, fix from Alex Kaufman)2.4.0- I‘ve revamped TSakMsg, many funcionality from SakPOP was moved to SakMsg, where it belongs.- Now SakMsg has a RawMail property wich you may find useful, now you can do: SakMsg1.RawMail.LoadFromFile(‘(uidl).mail‘); SakMsg1.ParseMsg; or SakMsg1.RawMail.LoadFromStream( myStream); SakMsg1.ParseMsg; or SakMsg1.RawMail.SaveToFile( ‘(uidl).mail‘); etc, etc...- Added a property TSakMsg.ClearRawMailAfterParse for memory saving.- the return of the f* sleep line (it causes freezes on winsock 1.1 systems like win95, win98 has winsock 2 so there is no problem if you remove the line)- lost of the DecodeProgess events :( (sorry, I don‘t know how to fit this events on the new SakMsg)2.6.0- the sleep() line is dead, it will never come back. Sending an email is a pleasure now.- SakMsg has a TextEncoding (8Bit, Base64) property, I think this will be useful to people with others charset than iso-8859-1- the base64 routines have been rewritten, they are more OO and faster (they are now in SakMIME.pas).- cosmetic changes all over the place.2.6.1- simplifyed ParseMsg2 a lot, it work better now.- speed up the search for uucoded attachs (the previous search was very dumb)- fixed bug Msg.SizeInBytes always 0- added a couple of Application.ProcessMessages to make the app more responsive.2.6.2- moved some functions from sak_utils to SakMIME.- make const parameters all over the place.- fix the bug that introduces a final crlf in quoted-printable attachs.- fix a division by zero if attached file is 0 bytes long, fixed by Peter Kollanyi.2.6.3- fix a rare bug when the header of a email (more probably a encapsulated one) has first line/s in blank. Easy and innocuous bug.2.6.4- fix the bug that insert the attachs of type text/* on the body of the email.- change the Smtp.SendMessage for Smtp.SendTheMessage to avoid a BCBuilder problem. Both problems reported by Andreas Franzen. SendMessage is still there, but it‘s now deprecated, I will remove it in the future.2.6.5- moved the ParseMsg activation from SakPOP to SakMsg (where it belong), this means that after setting the RawMail property of SakMsg, this does a ParseMsg automatically. before: SakMsg1.RawMail := ... SakMsg1.ParseMsg; now: SakMsg1.RawMail := ... hope I‘m not breaking too much code out there ... :)- some changes in the way attachments are processed (now the html part is separated correctly and images within the html are recognized)- RetrieveMessage() and RetrieveMessageOnlyHeaders() now take an additional parameter, a TSakMsg var, so people can change some parameters before parsing, see the source in SakPOP3.pas (the old way is still supported, but they will be removed in the future)- bug fixes that I do not remember.3.0.0- moved code around.- removed deprecated functions (I told you about this)- new SakAttFile unit.- Base64Encode( AttFile), Base64Decode( AttFile), UUDecode( AttFile) has been moved to the TAtachedFile object, so you can do AttFile.Base64Encode, AttFile.Base64Decode, etc- SakSMTP have lost EncodeStart, EncodeProgess and EncodeEnd events as a consequence of the previous change.- SakPOP.Canceled and SakSMTP.Canceled properties have been made read-only and SakPOP.Cancel and SakSMTP.Cancel procedures (or methods) have been added.- add a SakMsg.FillRawMail method that will fill the RawMail property with a rfc822 message based on the properties of SakMsg.- changed SakSMTP.Quit & SakPOP.Quit to Disconnect- deleted TAttachedFile.FileStream (redundant), use BodyBin- removed the function sak_getTempFileName (as it should no be trusted) use function sak_GetTempPath- the new SakIMAP component !, this make a pleasure to work with incoming emails (as you can have folders, etc). Note: the IMAP component has only been tested with the Uni. of Washington server, but it should work with any *STANDARD COMPLIANT* server. Anyways, the code of this component is very simple, so if you have problems, a look in the source code can enligthen you.3.0.1- fixed a brown paper type of bug.3.0.2- support the case where attachs do not come from files (Lars Karlslund)- minor bugfix in UUDecode function (Lars Karlslund)- if the SakMsg.Username is empty, do a VRFY command at the smtp server to try to get the full user name (sergio)- function TSakIMAP.GetFolderList (Peter Nagel)- function TSakIMAP.GetHierarchyDelim (Peter Nagel)- frustrated intent (ie. commented out) to remove memory leaks in POP, SMTP & IMAP destroy functions (Ronald Moesbergen)3.0.3- actually create (and free) the FolderList in sakIMAP (Neculau Andrei)- try to send the FQDM to the HELO command in SMTP (sergio)- commented out the VRFY command in SakSMTP, and cut the from address in the From field (in SakMsg), so if the username is empty, the SMTP server rewrite the from address in a complete way, with username & full address (sergio)- fix a minor bug in TBase64DecodingStream.Write function (Lars Karlslund)3.4.0- many, many improvements to the IMAP component by Peter Honan (I applied the patch with minor modifications, mainly to respect delphi coding standard, taking out the overloading, the selectFolder function was overcomplicated, etc)- FAQ updated (me)3.4.1- minimize the chance for two temporal messages stored on disk to collide (can be hit in previous versions if you run multiple instances of retrieveMessage at the same time)- FAQ updated.3.4.2- a new sak_CleanUpAddresses() implementation, by Knut Baardsen- better handling for temporal messages, suggested by Andrew- many improvements (including ACL -Access Control List) to the IMAP component by James Chaplin3.4.3- reverted to the old sak_CleanUpAddresses() implementation Knut‘s one is almost rigth, but don‘t let us use addresses without domains- add Headers.Clear before filling headers, by "Antonio Carlos Ribeiro Faria" 3.5.0- add TSakMsg.LoadFromTextFile from Oak Chantosa- big jumbo mambo patch from James Chaplin first patch: 1) Operation timeout - OperationTimeout timeout for non-responding receive operations. 2) Forced abend - ForceAbend method that will disconnect and reset state. 3) Optional folder lists - AvFolderList and AvSUBFolderList provide alternatives to FolderList and SUBFolderList that ensure the lists do not contain inacessible folders ( flagged by the server ). 4) Folder name fix - Provided a function to "fix" folder names before submission. Currently it fixes names containing spaces. second patch: 1) Capability - Ask for server capabilities/extensions. 2) Noop - Basic noop command - updates message counts as well - preferred alternative to status. 3) Status - Explicit status command - generally useful for status of a non-selected mailbox. 4) Fetch - Retrieve message data. 5) FetchBody - Retrieve the body of the message. 6) ExamineFolder - A read-only select command. 7) CloseSelectedFolder - Close the currently selected folder. 8) Idle - RFC2177 extension - not implemented on very many servers. 9) Search - Search based on RFC2066 criteria. 10) UIDSearch - Search based on RFC2066 criteria - results are in UID form. 11) UIDStoreFlags - Store message flags based on UID. 12) UIDFetch - Fetch message data by UID. 13) UIDCopyMessageToFolder - Copy a message by UID. 14) Authenticate - Basic framework. Only plain authentication extension implemented. 15) CloseOnError - A new property that allows the user to turn off the default behaviour of disconnecting from the server when an IMAP error is received 16) Namespace - RFC2342 Namespace query command. 17) ListFullHierarchy - Property which allows a switch between "*" ( default ) or "%" as the wilcard for default folder/list methods. 18) List - Explicit list command in case it is needed. third patch: 1) fix problem with imapd 2001a, reported by Holger Mauermann. 2) remove all warnings.3.5.1- revert change to the base64 encoding routine.3.5.2- changes from James Chaplin: 1) TSakIMAP will now properly process non-numeric UIDs for messages ( there was a sak_StrWord2Int transform being used before - which always produced a 0 value for non-numeric UIDs ). 2) TSakIMAP.RetrieveMessageExt ( private method ) was modified to provide a retrieval by either MsgID or UID. 3) TSakIMAP.RetrieveMessageByUID was modified to use the slightly more efficient TSakIMAP.RetrieveMessageExt(UID) method specified in 2) above. I also made an update to the SakMIME.pas unit. The changes that were implemented are: 1) sak_Base64Encode - a basic Base64 encoder. String input and string output with the option for CRLF splitting. 2) sak_Base64Decode - a basic Base64 decoder. String input and string output with a control for CRLF interpretation. 3) sak_Base64Verify - a very basic Base64 string verifier.3.5.3- robustify and code cleanups by Paul Vernon.3.5.4- access violation fix by Paul Vernon.3.5.5- go back to good old trusty 3.5.23.5.6- this time, all the cleanup & fixes from Paul Vernon seems to work well.3.6.0- Paul Vernon latest minor fixes- added basic SMTP authentication, by Delfi and Antonio Carlos Ribeiro Faria3.6.1- fix a mayor bug when sending to many addresses (by sergio)3.7.0- add full support for html mails, by Paul Vernon. (The TAttachedFile now has an extra boolean property called embedded. This property lets you use the syntax in your HTML mails)- fix a weird typo for BCC fields- add Content-ID, by alejandro Castro- fix "_" characters in subject, regression fix.- cleanups all around, by Paul Vernon.- SMTP example updated to cope with html emails.**warning** from this version, the html part of mails will not be stored as attachments by default, if you want this behavior, you just do something like: aSakMsg := TSakMsg.Create( self); aSakMsg.HTMLAsAttachment := true; ...3.7.1- fix TSakMsg.PopulateList (Jalin)3.7.2 (codenamed "melissa")- fixed a bug when the Populatelist procedure got re-written in sakMsg. It wasn‘t populating the SendTo field if there was only one e-mail address... (Paul Vernon)3.7.3 - Congratulations to Sergio on the addition to his family. This release was made by Paul Vernon who has temporarily taken over the release functions for the SakMail components whilst Sergio spends time AFK!- The 3.7.2 bug fix added blank entries to the address lists. The PopulateList procedure has been re-written again to hopefully cope with any type of e-mail address formatting.- The SMTP example noted in 3.7.0 actually shipped with this release!3.7.4- Bugfix for detecting UUEncoded mails correctly. Previous versions processed MIME mails with the value ‘begin xyz‘ if it appeared at the beginning of a line as a UUEncoded mail when they should not have.- POP and SMTP connect procedures are now functions. Existing code is unaffected. However, you can now use the following code if (sakPOP.Connect) then begin end;- POP gracefully quits if it receives an error now by calling Disconnect correctly.3.7.5- Further code to improve identification of UUEncoded mails. Essentially looking for the end as well as the beginning to ensure that it is correct.- Code optimisation of certain UUEncoded mail id functions.- Fix to ensure that the body of a mail that is UUEncoded is not lost.- MIME-Version string introduced into TsakMsg component to help with UUEncoded mail identification.- SizeInBytes property altered to read private variable using a function. If the private variable is 0, the function reads the length of the FRawMail.Text property.- Fix to make sure that the filename is not overwritten by a blank value when parsing mail-headers.3.7.6- Fixed list index out of bounds error.- Added POP3 RSET call TSakPOP.Reset.3.7.7- Altered SizeInBytes and Octets values to return server-side size when d/l headers only and use actual size once the entire message is downloaded.- Fixed a bug in GetBasicHeaders where To and CC fields could be mishandled if the mail headers were formed in a particular way.4.0.0 beta- All methods are now wrapped in classes. sak_util is now included for backwards compatibility only.- Several changes to make sakMail thread safe including the introduction of Mutexes which are cross process safe. Critical sections were an option however, although mutexes are a little slower, they are much more effective when you aren‘t sure how the code is going to be deployed...- Made several changes to the way connections are tracked, now making better use of the underlying Delphi components own properties and functions.- Several bug fixes included from solutions posted on mailing lists. Including change to datetime function to respect local time separator. There are more including one that Adem re-raised.- Removed almost all pointers as per Adems suggestion. Makes for neater code.- Hopefully backwards compatibility is kept. This is one of the objectives of the excersice although, internally, the components no longer use any of the non-object based methods. Also some of the non-object based methods actually have been re-written to create an object use the instance of the original method and then destroy the object again. This introduces a minor overhead however, because the objects are discreet, the trade is for much better memory usage and greater thread safety.- Introduced an include file to define compiler directives. Currently there are two directives. One defines whether to use the VCL or not, the other defines whether or not to use the FastStrings components. - With the intoduction of the Include file, this allows the development of code that is optional for users. One of these such changed is the use of the FastStrings base64 decoder. If you install the FastStrings components and turn on the compiler directive, you should have no functional changes however, the base64 decoder routines should have a much higher performance rating. Tests clock in at over 2000% faster attachment decoding on a P4 1.8GHz machine. (1.2Mb file 1686mS native sak Base64 Decoder, 79mS using FastStrings!)- This version is being released as a beta as the changes are pretty drastic. If the code is deemed to be stable and backwards compatible then it will be re-released as v4.0.1 with no changes.4.0.1 beta- Fixed an issue where Range Checking highlighted that the Attachment b64 decode routine raise a Range Error if the line that was to be decoded was empty. i.e. ‘‘.- Introduced a compiler directive to turn off range checking in the sakMIME procedure TBase64DecodingStream.Write to make sure that it runs correctly as Range Checking causes issues in this function.4.0.2 beta- Changed MailDateToDateTime function to the one provided by DengZhaoHui with a few modifications as even though it has better date processing than the original it caused EConvertErrors with some non-rfc dates.- Added the compiler directive to allow the inclusion of MD5 components from the DCPCrypt suite of encryption components. This allows the components to do APOP and SMTP AUTH functions as specified in RFCs 2095, 2104, 2449 and 2554. {UseDCP} ***** NOTE: These functions are experimental as although they are RFC compliant, they have not been tested against a secure mail server yet... *****- Using EurekaLog during load testing of the POP mail component, found and fixed several AV‘s in sakMSG, sakMIME and sakPOP. Mainly simple mistakes that required re-ordering of code or more checks before trying to manipulate data.- Altered the sockets code to be more stable with some servers. The previous implementation was totally incompatible with SendMail NT v3.0.2.- Fix added to compensate for incorrect operation of Connected property in some versions of Delphi.- Altered GetMultiLineFieldBody as per Adems suggestion. Also took some of Adems code and added it to GetFieldValueFromLine as the escape characters can appear in single line headers as well as multi-line ones.- TClientSocket is deprecated in Delphi 7. This may be the next large change in the sakEmail components. - Updated distribution to include more RFC‘s regarding the message format, POP and IMAP and hashing functions for CRAM mechanisms.- Fixed the handling of redirected mails as created by Eudora.- Force PopulateList to clear the list before populating it again.- Created a Delphi 6 package file.4.0.3 - Fixed AUTHSMTP buffer initialisation error. (Dmitry G. Kozhinov and Gabi Slonto)- Improved identification of servers that do not support the UIDL command. A small overhead is intorduced on servers that do support the command and have several mails to download but the feature allows better interaction with those servers that do not support UIDL.- Priority is now reported correctly when an e-mail is being decoded rather than only being used when sending an e-mail.4.0.4- Fixed an issue with a malformed header in a mail sent from MS Word through an Exchange server- Added a couple of try...finally blocks to the sakIMAP component.- Altered the sakIMAP components connected function to mirror the more accurate sakPOP method.- Consolidated all compiler directives into sakDef.inc- Added versioning compiler directives to allow the compilation of sakemail under Delphi 4.- General tidying of code. 4.0.5- Created a Delphi 7 package- Added properties to the IMAP component to allow read access to the LocalAddr and LocalHost socket properties.- Bugfix to sakMsg PopulateList function where a comma separated list did not contain any spaces- Access violation in sakPOP component due to incorrect use of free,freeandnil and compiler directives4.0.6- Added several features to the IMAP components.- Tidied up SMTP authentication routines (Improved use of MD5 for authentication using DCP components)- Included capability to send messages without an SMTP server (using Indy DNS components for MX lookups)- Bugfix in message parsing to stop a recursion loop due to a malformed mail.4.0.7- Memory leaks found by Amos and Paul regarding the sakMsg and sakPOP units respectively.- Bug fixes to attachment save code including stripping out invalid .. sequences from filenames- Improved the GetConnectedState method to check against the RemoteHost value on the Socket.- Updated POP example to be more responsive when downloading mail. Fixed a memory leak.Don‘t forget to subscribe to the mailing list (see the web pages at http://groups.yahoo.com/group/sakemail/)

830

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧