??xml version="1.0" encoding="utf-8" standalone="yes"?>国产成人亚洲精品青草天美,亚洲三级视频在线观看,337P日本欧洲亚洲大胆精品http://www.tkk7.com/badboyryan/category/15077.html<hr color=red> <marquee direction=left bgcolor= aaaaee behavior=scroll scrollamount=2 onmouseover="this.stop();" onmouseout="this.start();" width=500> <font color=green> 在恰当的旉、地点以恰当的方式表辄恰当的h...</font>&nbsp;&nbsp;<font color=blue>阅读的时候请注意分类Q佛(jng)曰我日里面是谈笑文章Q其他是各个分类的文章,U极的热情投入到写博的队伍中来,支持blogjava做大做强Q向dudu站长致敬>> > Qqq侠客岛:26858781Q?lt;/font> </marquee> <hr color=blue>zh-cnSat, 07 May 2011 00:14:14 GMTSat, 07 May 2011 00:14:14 GMT60囄上传怎么变慢?/title><link>http://www.tkk7.com/badboyryan/archive/2011/05/06/349657.html</link><dc:creator>坏男?/dc:creator><author>坏男?/author><pubDate>Fri, 06 May 2011 01:45:00 GMT</pubDate><guid>http://www.tkk7.com/badboyryan/archive/2011/05/06/349657.html</guid><wfw:comment>http://www.tkk7.com/badboyryan/comments/349657.html</wfw:comment><comments>http://www.tkk7.com/badboyryan/archive/2011/05/06/349657.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/badboyryan/comments/commentRss/349657.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/badboyryan/services/trackbacks/349657.html</trackback:ping><description><![CDATA[<p>1、第一张图片传的慢Q第二张囄传的?br /> 2、上传仅仅有0.6k的速度<br /> 3、第二张54k的速度<br /> 4、解军_法:(x)清理一下(f)时表QBLOG字段的事</p> <img src ="http://www.tkk7.com/badboyryan/aggbug/349657.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/badboyryan/" target="_blank">坏男?/a> 2011-05-06 09:45 <a href="http://www.tkk7.com/badboyryan/archive/2011/05/06/349657.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DELPHI里面的技巧如何运行的时候给帔R赋?/title><link>http://www.tkk7.com/badboyryan/archive/2009/08/15/291229.html</link><dc:creator>坏男?/dc:creator><author>坏男?/author><pubDate>Sat, 15 Aug 2009 01:31:00 GMT</pubDate><guid>http://www.tkk7.com/badboyryan/archive/2009/08/15/291229.html</guid><wfw:comment>http://www.tkk7.com/badboyryan/comments/291229.html</wfw:comment><comments>http://www.tkk7.com/badboyryan/archive/2009/08/15/291229.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/badboyryan/comments/commentRss/291229.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/badboyryan/services/trackbacks/291229.html</trackback:ping><description><![CDATA[加上q个~译器选项帔R可以赋gQ?br /> {$J+}<br /> const<br />   n: Integer = 1;<br /> begin<br />   n := 112;<br /> end;<br /> <br /> q在Turbo pascal中是合法? 注意, q里虽然也是用const声明? 但相当于带初始值的变量. 在Delphi? 有的版本可以, 有的版本需用{$J+}~译指o(h)才行. <img src ="http://www.tkk7.com/badboyryan/aggbug/291229.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/badboyryan/" target="_blank">坏男?/a> 2009-08-15 09:31 <a href="http://www.tkk7.com/badboyryan/archive/2009/08/15/291229.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Delphi使用资源文g全攻?http://www.tkk7.com/badboyryan/archive/2009/02/06/253555.html坏男?/dc:creator>坏男?/author>Fri, 06 Feb 2009 06:32:00 GMThttp://www.tkk7.com/badboyryan/archive/2009/02/06/253555.htmlhttp://www.tkk7.com/badboyryan/comments/253555.htmlhttp://www.tkk7.com/badboyryan/archive/2009/02/06/253555.html#Feedback0http://www.tkk7.com/badboyryan/comments/commentRss/253555.htmlhttp://www.tkk7.com/badboyryan/services/trackbacks/253555.html
一、徏立资源文?br />
    资源文g的源文g是普通的文本文gQ扩展名?.rc。将资源文g的内容写入文件后Q调用brcc32.exe其~译后生?.res文g。brcc32.exe在delphi的bin目录中?br />
二、字W串资源

    字符串资源实际上是将一个字W串和一个数字烦引对应,在装载字W串资源Ӟ需要提供这个字W串资源所对应的数字烦引。字W串资源文g以stringtable开_(d)使用一对begin和and资源定义括h?字符串资源的格式是:(x)数字索引Q?资源字符??br /> string.rc文g内容
stringtable
begin
1001, "新徏"
1002, "保存"
1003, "关闭"
1004, "帮助"
1005, "退?
1006, "资源文g试"
End
    然后调用命o(h)Qbrcc32.exe string.rc Q生成string.resQ最后在E序中加入{$R string.res}。以下所q的*.rc文g都需使用cM的方法进行编译和引用?br />
    在delphi中有两种Ҏ(gu)可以装蝲字符串资源?br />     1. 使用Windows API函数LoadString。用这个函数需要定义一个char数组Q调用的形式如下?br />
    LoadString(hInstance, 1001, buffer, 100); //100Qbuffer数组的最大长度,1001Q数字烦?br />
    2. 使用delphi自n的函数LoadStr。这个函数只需要一个数字烦引就可得到相应的字符串资源。调用的形式如下?br />
    button2.Caption := LoadStr(1002);

三、Bitmap资源

    位图资源的定义就相对单得多。每个位图资源只需要定义三:(x)位图标识 位图cd 位图文g?Q这三项中间用空格或tab隔开Q其中位图标识和字符串资源的数字索引cMQ只是位图标识可以是字符丌Ӏ位囄型是BITMAP?br />
    调用bitmap资源有两U比较常用的Ҏ(gu)?br />     1. 使用bitmap的LoadFromResourceNameҎ(gu)?br />     2. 使用windows API函数LoadBitmap。这U方法的代码CZ如下Q?br />     bmp := TBitmap.Create ;
    bmp.Handle := LoadBitmap(Hinstance,'bmp');
    rect.Left := 0;
    rect.Top := 0;
    rect.Right := image2.Width;
    rect.Bottom := image2.Height;      
    rect1.Left := 0;                       
    rect1.Top := 0;
    rect1.Right := bmp.Width;
    rect1.Bottom := bmp.Height;
    image2.Canvas.CopyRect(rect, bmp.Canvas, rect1);
    W一U方法比较简单,但如果是拉装蝲ӞW二U方法效果比较好。也可用cM的方法装载icon和cursor文gQ其中装载icon使用LoadIconQ装载cursor使用LoadCursor?br />
四、Jpeg资源

    装蝲Jpeg资源没有Windows APIQ但可以使用delphi提供的TResourceStreamcR在定义资源文gӞ资源cd使用RCDATA。示例代码如下:(x)
   jpg := TJpegImage.Create ;
   rstream := TResourceStream.Create(Hinstance, 'jpg', RT_RCDATA) ;
   jpg.LoadFromStream (rstream) ;
   image3.Picture.Bitmap.Assign (jpg);

五、装载Q意文?br />
    资源文g中不仅可以存储已知类型的资源Q如字符丌Ӏbitmap、jpeg{,q可以存储Q意类型的文g。除了字W串Q其它类型的资源文g的格式类|只是在资源类型上有所变化。除了已知的资源cd外,可以自定义资源类型。如jpeg资源可以不用RCDATAQ而用JPEG,但在调用旉要做如下处理?br /> rstream := TResourceStream.Create(Hinstance, 'jpg1', 'JPEG') ;

六、从其它E序装蝲资源

    在上q的例子中的资源都是从当前的exe中装载,但有些时候需要从另外的exe或dllQ而不是自w装载资源。对于这U需求只要在上述例子中将Hinstance改ؓ(f)LoadLibrary(exe或dll?卛_?br />   rstream := TResourceStream.Create(LoadLibrary('project1.exe'), 'jpg1', 'JPEG') ;
  在装载后Q可以用TResourceStream的SaveToFile资源保存成文gQ或做其它处理?br />
此文转蝲Q原文出处:(x)
http://www.tkk7.com/nokiaguy/archive/2008/05/10/199740.html

]]>
dsgnintf.pas单元在D6及D7中找不到的解x?/title><link>http://www.tkk7.com/badboyryan/archive/2008/05/13/200239.html</link><dc:creator>坏男?/dc:creator><author>坏男?/author><pubDate>Tue, 13 May 2008 08:57:00 GMT</pubDate><guid>http://www.tkk7.com/badboyryan/archive/2008/05/13/200239.html</guid><wfw:comment>http://www.tkk7.com/badboyryan/comments/200239.html</wfw:comment><comments>http://www.tkk7.com/badboyryan/archive/2008/05/13/200239.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/badboyryan/comments/commentRss/200239.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/badboyryan/services/trackbacks/200239.html</trackback:ping><description><![CDATA[不改?直接改Delphi源文件的解决Ҏ(gu):(我是q样改的,没有Z么问?<br /> 1.加入搜烦路径<br /> C:\Program Files\Borland\Delphi7\Source\ToolsAPI<br /> 2.打开<br /> C:\Program Files\Borland\Delphi7\Source\ToolsAPI\DesignEditors.pas<br /> 3.扑ֈq把<br /> uses<br />    Types, SysUtils, Classes, TypInfo, Variants, DesignIntf, DesignMenus,Proxies;<br /> 改ؓ(f)<br /> uses<br />    Types, SysUtils, Classes, TypInfo, Variants, DesignIntf, DesignMenus{,Proxies};<br /> 4.扑ֈq把<br />        if (FAncestor = nil) and (Component <> Designer.Root)<br />          and IsProxyClass(Component.ClassType) then<br /> 改ؓ(f)<br />        if (FAncestor = nil) and (Component <> Designer.Root)<br />          {and IsProxyClass(Component.ClassType)} then<br /> 5.扑ֈq把<br />    while IsProxyClass(ComponentClass) do<br /> 改ؓ(f)<br />    //while IsProxyClass(ComponentClass) do<br /> 6.保存,~译q行,OK<br /> <br /> 上面3.4.5.是把Proxies单元从DesignEditors单元中剔?DesignEditors单元<br /> 中只有两个地方引用了Proxies单元的函?而且是同一个函?IsProxyClass,?br /> q两个地Ҏ(gu)释掉可以了. 低版本升U到高版Qd5->d7Ӟ在dpk文g里 requires designide;可以uses ComponentDesigner单元了? <img src ="http://www.tkk7.com/badboyryan/aggbug/200239.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/badboyryan/" target="_blank">坏男?/a> 2008-05-13 16:57 <a href="http://www.tkk7.com/badboyryan/archive/2008/05/13/200239.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Delphi采用COM来操作Accesshttp://www.tkk7.com/badboyryan/archive/2008/03/08/184755.html坏男?/dc:creator>坏男?/author>Sat, 08 Mar 2008 14:24:00 GMThttp://www.tkk7.com/badboyryan/archive/2008/03/08/184755.htmlhttp://www.tkk7.com/badboyryan/comments/184755.htmlhttp://www.tkk7.com/badboyryan/archive/2008/03/08/184755.html#Feedback0http://www.tkk7.com/badboyryan/comments/commentRss/184755.htmlhttp://www.tkk7.com/badboyryan/services/trackbacks/184755.html作ؓ(f)一个ASP爱好者,W者经常在ASP面中用ADO对象?作ODBC数据库,觉得用ASP创徏Web应用pȝ实是挺方便的。虽然在~程生中,W者更喜欢Borlandpd产品Q对微Y产品有点排斥Q但?ASP却是例外。某天,忽然惛_QADO对象是一个标准OLE对象Q如果在Delphi应用E序中能利用ADO操作数据库,应该Z错。尤其在?strong style="color: black; background-color: rgb(255,255,102)">DELPHI做网l数据库应用E序Ӟ如果所在的Web站点是WINNT站点q且支持ASP面Q那可以用ADO对象讉KODBC数据库,而不用把那么大的BDE再上载到站点上去。这样就可充分利?strong style="color: black; background-color: rgb(255,255,102)">DELPHI和ASP的编E优势,做出更好的ISAPI/NSAPI/CGI。经q编E和试Q在Delphi中可以成功地用ADO对象存取ODBC数据库,现将本h的用经验写出来Q与大家׃nQ让我们多一个访问ODBC数据库的Ҏ(gu)?br />
?2位的Delphi中,可以声明一个variant变量Q如AVariantQ,然后通过CreateOleObject创徏一个OLE对象Q如AVariant:=CreateOleObject (’ADODB.Connection’)可以获得一个数据库q接对象的实例,然后可以利用该对象的方法和属性来操作ODBC数据库了?br /> 下面单介l一下访问ODBC数据库所用到的ADO对象及其Ҏ(gu)和属性?br />

1、数据库q接对象(ADODB. Connection)
该对象用于与ODBC数据库徏立连接,所有对数据库的操作均通过该连接进行?br /> 数据库连接对象ADODB. Connection的作用象Delphi中的TDatabase对象?br /> 建立一个连接对象的Ҏ(gu)?AConnection为Variantcd变量)Q?br /> AConnection:=CreateOleObject(’A DODB.Connection’)
用于建立q接的方法ؓ(f)OpenQ用语法ؓ(f)(以对象AConnectionZ)Q?br /> AConnection.Open( ConnectionString, UserId, Password )
三个参数均ؓ(f)字符串类型,其中UserId和Password为用户名U和用户密码Q用于访问数据库使用时可以省略,因ؓ(f)?ConnectionString同样可以指定用户名称和用户密码。ConnectionString是用来说明ODBC数据源信息的字符Ԍ其格式ؓ(f)Q?br /> ’Provider=ProviderName; DSN=DSNName; DRIVER=driver; SERVER=server; DATABASE=database; UID=user; PWD=password’
其中Q?br /> ProviderQ数据提供者,默认状态下为MSDASQLQؓ(f)微YOLEDBQ通常省略Q?br /> DSNQ要打开的数据库对应的OBDCpȝ数据?DSN)Q是可选参敎ͼ
DRIVERQ要打开的数据库所用的驱动E序名称Q如Access对应Microsoft Access Driv (*.mdb)Q是可选参敎ͼ
SERVERQ要打开的数据库所在的服务器名Uͼ本机可用(local)Q是可选参敎ͼ
DATABASEQ要打开的数据库名称Q是可选参敎ͼ
UIDQ用户名Uͼ用来讉K数据库,是可选参敎ͼ
PWDQ用户密码,用来讉K数据库,是可选参数?br /> 以上参数均ؓ(f)可选参敎ͼ但必L供够的信息来描qC个系l数据源?br /> 假如已经定义了一个ODBC的系lDSNQ名UCؓ(f)MyDsnQ那么就可用以下语句建立一个数据库q接Q?br /> AConnection.Open(’DSN=MyDsn’);
Z防止DSN不存在或其设|被他h修改旉成应用E序q行错误Q可以用ADODB.Connection 创徏一个(f)时ODBC数据源,q样可以保证我们使用的系lDSN的参数设|是正确的。下面的语句可以创徏一个(f)时ODBCpȝDSNQ对应一?strong style="color: black; background-color: rgb(160,255,255)">ACCESS数据库,路径为C:\Inetpub\ wwwroot\ test.mdbQ?br /> AConnection.open(’Driver= {Microsoft Access Driver (*.mdb)};DBQ=C:\inetpub \wwwroot\test.mdb’)
建立一个ADODB.Connection后,如果不需要返回操作结?如删除,修改Q更新等操作)可以对数据库进行正常的SQL操作了,此时应用ADODB.Connection的另外一个方法ExecuteQ用语法ؓ(f)Q?br /> AConnection.Execute( strSQL );
其中strSQL为执行操作的SQL语句Q如删除操作可以为:(x)delete from wfjcommu。用AConnection.Close关闭一个数据库q接?br />

2、数据集对象(ADODB. RecordSet)
如果要执行查询操作ƈq回查询l果Q或者要更方便地操作数据表,那就需要用到数据集对象了?br /> 数据集对象ADODB.RecordSet的作用象Delphi中的TTable或TQuery对象?br /> 建立一个数据集对象的方法ؓ(f)(ARecordSet为Variantcd变量)Q?br /> ARecordSet:=CreateOleObject (’ADODB.RecordSet’)
从数据表取得数据的方法ؓ(f)OpenҎ(gu)Q具体用方法ؓ(f)Q?br /> ARecordSet.Open( strCommand,ActiveConnection,int CursorType,intLockType, intCommandType );
其中Q?br /> strCommandQ字W串Qؓ(f)命o(h)参数Q可以是一个Table名称Q可以是一个SQL语句Q也可以是一个服务器上的存储q程(StoredProc)名称Q具体需要后面的参数intCommandType来指定?br /> ActiveConnectionQ要使用的数据库q接Q是一个ADODB. Connection对象?br /> intCursorTypeQ长整数Q数据集的CursorcdQ可选参敎ͼ请参见程序中注释?br /> intLockTypeQ长整数Q对数据表的加锁cdQ可选参敎ͼ请参见程序中注释?br /> intCommandTypeQ长整数Q命令参数的cdQ用来指明strCommand的作用,可以指定strCommand为命令(如SQL语句Q或数据?TTable)或储存过E?StoredProc)Q可选参敎ͼ请参见程序中注释?br /> 如执行一个SQL查询Q可以采用如下语句:(x)
ARecordSet.Open(’Select * from wfjcommu’,adOpenStatic,ad LockOptimistic,adCmdText);
其它常见属性和Ҏ(gu)与TTable和TQuery相比较如下(具体误ASP帮助文gQ:(x)
eof,bof: eof,bofQMoveFirst, MoveLast: First, LastMovePrevious, MoveNext: Prior, NextMove: MoveByAddNew: appendUpdate: PostClose: close
Delete加UpdateQdeleteQ所有对数据表的修改均须用Update使操作有效,q与Delphi不同?br /> Fields[FieldNo]: Fields[FieldNo]
Fields[’FieldName’]: FieldByName(’FieldName’)

3、其他常见对??strong style="color: black; background-color: rgb(255,255,102)">Delphi对应的对?Q?br /> ADODB.Field: TField ADODB.Parameter: TPara ADODB.Error: EDBEngineError
ADODB.CommandQ无 ADODB.PropertyQ无
下面来看一个应用例子:(x)
procedure TForm1.Button1Click(Sender: TObject);
{*****************************************************
用ADO操作ODBC数据?br /> 本程序中Q将创徏一个(f)时的ODBCpȝ数据源,指向一个MsAccess数据库,然后对其中的数据表进行显C、增加、修攏V删除和查询操作
注意Q请在Uses语句中包含ComObj单元
*****************************************************}
const{一些常量声明,详细请参见adovbs.inc}
{---- CommandType的常量说?----}
adCmdUnknown = 0008;//未知,需要系l来判断,速度?为缺省?br /> adCmdText = 0001;//命o(h)语句如SQL语句
adCmdTable = 0002;//数据表名U?br /> adCmdStoredProc = 0004;//存储q程名称

{---- CursorType的常量说?----}
adOpenForwardOnly = 0;//只能由前向后单向讉K,为缺省?br /> adOpenKeyset = 1;//可见其他用户Ҏ(gu)据的修改,但对其它用户的增加和删除不可?br /> adOpenDynamic = 2;//其他用户Ҏ(gu)据的增加修改和删除均可见
adOpenStatic = 3;//其他用户Ҏ(gu)据的增加修改和删除均不可?br />
{---- LockType的常量说?---}
adLockReadOnly = 1;//只读,为缺省?br /> adLockPessimistic = 2;//在修Ҏ(gu),按单个记录锁?br /> adLockOptimistic = 3;//在修改后更新?按单个记录锁?br /> adLockBatchOptimistic = 4;//在成Ҏ(gu)新时记录锁定
var
AConnection, ARecordSet : variant;
longintTemp : integer;
strTemp : string;
intIndex : integer;
begin
{创徏一个(f)时的ODBC数据?指向一个MsAccess数据?q利用此DSN建立一个数据库q接}
AConnection := CreateOleObject(’ADODB.Connection’);
AConnection.Open(’Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\inetpub\wwwroot\test’);

{建立一个数据集对象,q从数据表中提取数据}
ARecordSet := CreateOleObject(’ADODB.RecordSet’);
ARecordSet.open( ’wfjcommu’,AConnection,adOpenStatic,adLockOptimistic,adCmdTable );

memo1.lines.clear;
memo1.lines.add(’********数据表原有的内容如下********’);
{昄各个域的域名}
strTemp := ’’;
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.Fields[intIndex].name+’;’;
memo1.lines.add( strTemp );

{昄各个域的内容}
while not ARecordSet.eof do
begin
strTemp := ’’;
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.Fields[intIndex].value+’;’;
memo1.lines.add( strTemp );
ARecordSet.MoveNext;//Ud下条QNext
end;

{增加一个记录}
ARecordSet.AddNew;//增加,Append
ARecordSet.Fields[’AName’] := ’1’;//以FieldByName的方式存?br /> ARecordSet.Fields[’Portable’] := ’2’;
ARecordSet.Fields(2) := ’3’;//以Fields[index]的方式存?br /> ARecordSet.Fields(3) := ’4’;
ARecordSet.Fields(4) := ’5’;
ARecordSet.Update;//更新QPost
ARecordSet.MoveFirst;//Ud首条QFirst
memo1.lines.add(’********增加了一条记录后的数据表的内容如?*******’);
{昄各个域的内容}
while not ARecordSet.eof do
begin
strTemp := ’’;
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.Fields[intIndex].value+’;’;
memo1.lines.add( strTemp );
ARecordSet.MoveNext;//Ud下条QNext
end;

{修改最后一条记录}
ARecordSet.MoveLast;
ARecordSet.Fields[’AName’] := ’11’;//以FieldByName的方式存?br /> ARecordSet.Fields[’Portable’] := ’22’;
ARecordSet.Fields(2) := ’33’;//以Fields[index]的方式存?br /> ARecordSet.Fields(3) := ’44’;
ARecordSet.Fields(4) := ’55’;
ARecordSet.Update;//更新QPost
ARecordSet.MoveFirst;//Ud首条QFirst
memo1.lines.add(’********修改了最后一条记录后的数据表的内容如?*******’);
{昄各个域的内容}
while not ARecordSet.eof do
begin
strTemp := ’’;
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.Fields[intIndex].value+’;’;
memo1.lines.add( strTemp );
ARecordSet.MoveNext;//Ud下条QNext
end;

{删除最后一条记录}
ARecordSet.MoveLast;//Ud末条QLast
ARecordSet.delete;//删除Qdelete
ARecordSet.Update;//更新Q在Delphi不需?br /> ARecordSet.MoveFirst;//Ud首条QFirst
memo1.lines.add(’********删除了最后一条记录后的数据表的内容如?*******’);
{昄各个域的内容}
while not ARecordSet.eof do
begin
strTemp := ’’;
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.Fields[intIndex].value+’;’;
memo1.lines.add( strTemp );
ARecordSet.MoveNext;//Ud下条QNext
end;

ARecordSet.Close;{关闭数据集}

{用SQL语句q行查询,查询姓名?#8220;张三”的记录}
{注意Q在SQL语句中,字符串应该用单引号包括v来}
ARecordSet.open( ’select * from wfjcommu where AName = ’’张三’’’,
AConnection,adOpenStatic,adLockOptimistic,adCmdText );
memo1.lines.add(’********张三的内容如?*******’);
memo1.lines.add( ’共有’ + IntToStr( ARecordSet.RecordCount ) + ’条匹配的记录’ );
{昄各个域的内容}
while not ARecordSet.eof do
begin
strTemp := ’’;
for intIndex := 0 to ARecordSet.Fields.count - 1 do
strTemp := strTemp + ARecordSet.Fields[intIndex].value+’;’;
memo1.lines.add( strTemp );
ARecordSet.MoveNext;//Ud下条QNext
end;

{关闭数据集和数据库连接}
ARecordSet.close;
AConnection.close;
end;
听别M如自q实际的例子来体会(x)。在q个例子中,演C如何利用ADO对象来对一个数据表q行查询、增加记录、修改记录和删除记录操作。具体的用法请参见程序中的注释,如果有点Delphi数据库编E经验,怿不难理解?br /> 在我们的例子使用的数据库为Test.MDBQ其中有一个数据表为wfjcommuQ有五个字段A(ch)Name、Portable、Tel、BP、PostAddressQ分别表C姓名、手机号、电(sh)话号码、呼机号码和通信地址?br /> 以上E序在PWIN98+ Delphi 3.0+PWS(Personal Web Server)4.0下调试通过.

http://hi.baidu.com/mrlong2000/blog/item/f3748d09fb927a206a60fb05.html



]]>
ODAC 应用技?Q二Q?BLOB ?CLOB 数据cd http://www.tkk7.com/badboyryan/archive/2007/08/18/137817.html坏男?/dc:creator>坏男?/author>Sat, 18 Aug 2007 07:07:00 GMThttp://www.tkk7.com/badboyryan/archive/2007/08/18/137817.htmlhttp://www.tkk7.com/badboyryan/comments/137817.htmlhttp://www.tkk7.com/badboyryan/archive/2007/08/18/137817.html#Feedback0http://www.tkk7.com/badboyryan/comments/commentRss/137817.htmlhttp://www.tkk7.com/badboyryan/services/trackbacks/137817.html 使用 BLOB ?CLOB 数据cd

转:(x)http://blog.csdn.net/nxyc_twz/archive/2004/06/16/16061.aspx
ODAC lg支持 Oracle 8 ?BLOB ?CLOB 数据cd。你可以使用 TOraQuery lg来获?LOB 字段的|使用同样的方法,你也可以获取  LONG ?LONG ROW 字段?当你需要?SQL DML ?PL/SQL 语句存取q些字段Ӟ你就?x)发?LOB 数据cd的用法有明显的不同?br />BLOB ?CLOB 数据cd通过 LOB 定位?指定数据地址) 存储在表列中Q实际的 BLOB ?CLOB 数据存储在独立的表空间中。与之不同的是,LONG ?LONG RAW cd存储在数据库中,表中存放着它们的实际倹{?br />
当存?LOB 列时Q返回的是定位器Q而不?LONG ?LONG RAW 数据cd那样q回它的实际倹{?
例如Q分析这个表的定义:(x)

CREATE TABLE ClobTable (
Id NUMBER,
Name VARCHAR2(30),
Value CLOB
)

如果我们不通过值参数初始化 LOB 定位器, Oracle 不允许使用下面的语句来更新数据表:(x)

UPDATE ClobTable
SET
Name = :Name,
Value = :Value

WHERE
Id = :Id

要初始化 LOB 定位器,你必M?EMPTY_BLOB ?EMPTY_CLOB Oracle 函数。要q回初始化后的定位器Q应在同L(fng)语句中?RETURNING 子句。例如:(x)

UPDATE ClobTable
SET
Name = :Name,
Value = EMPTY_CLOB()
WHERE
Id = :Id
RETURNING
Value
INTO
:Value

ODAC ?LOB 数据?Oracle 且返回初始值字D,需使用Q值参数?br />存储q程允许自动初始?LOB |Ҏ(gu)如下Q?br />
CREATE OR REPLACE
PROCEDURE ClobTableUpdate (p_Id NUMBER, p_Name VARCHAR2,
p_Value OUT CLOB)
is
begin
UPDATE ClobTable
SET 
Name = p_Name,
Value = EMPTY_CLOB()
WHERE
Id = p_Id
RETURNING
Value
INTO
p_Value;
end;

注意Q值参数被声明?OUT。同Ӟ讄 LOB 数据cd的参数的 ParamType 属性ؓ(f) ptInput Q且指定它到所需的数据前来实际调用存储过E。我们可以这栯用前面声明的存储q程Q?br />
OraStroredProc1.StoredProcName := 'ClobTableUpdate';
OraStroredProc1.Prepare;
OraStroredProc1.ParamByName('p_Id').AsInteger := Id;
OraStroredProc1.ParamByName('p_Name').AsString := Name;
OraStroredProc1.ParamByName('Value').ParamType := ptInput;
OraStroredProc1.ParamByName('Value').AsCLOBLocator.
LoadFromFile(FileName);
OraStroredProc1.Execute;

?ODAC 来说Q在 LOB 操作中?ParamType 属性是非常重要的。如?ParamType ?ptInput Q?ODAC 写数据到服务器,如果 ParamType ?ptOutputQ它则读取数据?br />
你可以?LOB 参数?dtBlob ?dtMemo 数据cd来编写普通的 DML 语句。在q种情况下, Oracle 自动?LONG ?LONG ROW cd的D{换ؓ(f) CLOB ?BLOB 数据?br />
http://support.microsoft.com/kb/322796/en-us



]]>
通过存储q程来上传文件大?kBLOBhttp://www.tkk7.com/badboyryan/archive/2007/08/17/137430.html坏男?/dc:creator>坏男?/author>Thu, 16 Aug 2007 17:36:00 GMThttp://www.tkk7.com/badboyryan/archive/2007/08/17/137430.htmlhttp://www.tkk7.com/badboyryan/comments/137430.htmlhttp://www.tkk7.com/badboyryan/archive/2007/08/17/137430.html#Feedback4http://www.tkk7.com/badboyryan/comments/commentRss/137430.htmlhttp://www.tkk7.com/badboyryan/services/trackbacks/137430.htmlW一日:(x)

1.建立数据?br />create table aaa(id varchar2(9) not null,img blob);

2.存储q程
create or replace procedure pro_upd(
  sid in string,
  bblob in blob  default empty_blob())
is
 lobloc blob;
 vLength integer;
begin  
  insert into aaa(id,img) values(sid,empty_blob());
     IF (bblob IS NOT NULL) THEN 
        SELECT img INTO lobloc FROM aaa WHERE ID = sid FOR UPDATE; 
        vLength := dbms_lob.getlength(bblob);
 DBMS_LOB.OPEN(lobloc,DBMS_LOB.lob_readwrite);
 DBMS_LOB.copy(lobloc,bblob,vLength);
      END IF;
      commit;
   exception  
         when    others    then  
         rollback;  
end;

3.E序代码
  用的ODAC的oraquery
  orqry1.SQL.Text := 'call pro_upd(:id,:bblob)';
  orqry1.Params.ParamByName('id').Value := '123';
  orqry1.Params.ParamByName('bblob').LoadFromFile('D:\work\照片上传\pic\005.jpg',ftBlob);
  orqry1.ExecSQL; 

目的Q就是把囄上传到数据库Q结?k一下的可以成功上传Q?k以上E小点的囄?a target="_blank">ORA-03113: 通信通道的文件结?/font>如果几百k׃(x)报ora-12571错误Q经q两天的努力发现的一个规律!

l箋扑֎因。。。。。?br />
W二?br />8?8日问题终于得到解冻I但是存储q程和调用都l过了改变!

  with orstrdprc1 do begin
    StoredProcName := 'pro_upd';
    PrepareSQL;  // receive parameters
    Randomize;
    ParamByName('SID').AsString := IntToStr(Random(1000));
    ParamByName('bblob').ParamType := ptInput;  // to transfer Lob data to Oracle
    ParamByName('bblob').AsOraBlob.LoadFromFile('D:\work\照片上传\pic\10000027_005.jpg');
    Execute;
  end;

q样可以了,但是要求
--q个存储q程得到了解?br />create or replace procedure pro_upd(
  sid in string,
  bblob out blob)
is
begin  
  insert into aaa(id,img) values(sid,empty_blob())
  RETURNING img INTO bblob;
end;

l箋前进Q看看原来的存储q程什么原因不可以Q?br />
ȝQlob 文g4k以内的内Ҏ(gu)到表D,其他的放到blob的表I间Q?br />插入Ӟ首先要插入empty_blob,然后select  for update!q样才能更新blob字段
另外如果是存储过E,则注意参敎ͼ想下面的一P(x)

  bblob out blob

q样才能得到blob字段的定位器Q;Q更新内容!

但是现在q不知道 bblob  in  blob q种方式下如何修改,上传囄

W三天:(x)
l过3天的努力LQ终于找C完美的解x案居然就是一句话的问题,完全可以解决 in blob的问题了
TemporaryLobUpdate := True;
加一句就好了
到此在存储过E里面解决上传blob的问题解军_毕?br />到此可以圆满l束Q明天的合同q了?br />注意文章转蝲注明出处Qhttp://blogjava.net/badboyryan



]]>
Delphi2007来了介绍Delphi2007的一些亮?/title><link>http://www.tkk7.com/badboyryan/archive/2007/06/14/124377.html</link><dc:creator>坏男?/dc:creator><author>坏男?/author><pubDate>Thu, 14 Jun 2007 13:02:00 GMT</pubDate><guid>http://www.tkk7.com/badboyryan/archive/2007/06/14/124377.html</guid><wfw:comment>http://www.tkk7.com/badboyryan/comments/124377.html</wfw:comment><comments>http://www.tkk7.com/badboyryan/archive/2007/06/14/124377.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/badboyryan/comments/commentRss/124377.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/badboyryan/services/trackbacks/124377.html</trackback:ping><description><![CDATA[Delphi2007 for Win32一些技术亮点:(x)<br />1?IDE工具采用.Net2.0来编写,安装时候需?Net FrameWork2.0Q但~译出来的Exe是纯正的Win32E序Q发布不需?Net FrameWork2.0。新IDE采用.Net FrameWork2.0是ؓ(f)了更好的l一IDEq_Q利?Net的反、泛型等高Ҏ(gu),节省~写IDE旉。新的IDE实比D7启动q要快,大概是五六秒旉左右启动,跟VS.Net2005差不多。演CZQ新的IDE~译新徏工程比D7q要快一炏V?br />2?Delphi2007支持Vista界面Q封装了Vsita的新API函数?br />3?Delphi2007有一个功能很有意思,支持D2006的所有BPLlg。意思是Q如果你用D2006~译q的BPLQ没有源码和DCUQ也可以直接安装在Delphi2007。哈哈,q个是delphi版本上的史无前例Q即使第三方控g包来不及支持Delphi2007Q也不妨开发h员从D2006 升到Delphi2007做项目开发?br />4?支持MS Build。比如支持Debug、Release。也支持~译前和~译后事Ӟ可调用BAT文g。比如,你编译前邮g告诉老板Q你要给我加?0%Q否则十分钟后销毁源代码。另外,也可以修改其XML格式Q只~译特定的程序代码?br />5?Delphi2007 for Win32数据集控件全面支持Unicode。比如,你的数据库表字段可采用中文名UC字段。Filter也支持Unicode。唉Qؓ(f)了这?filter支持UnicodeQ有些h在delphiBBS上苦苦守候了六七q。但delphi2007的UIQ可视化界面Q还不是全面支持 Unicode。比如,你的DBGrid׃能支持中文、韩文(不说狗屁日文Q、阿拉伯文等同时昄。原有的Vcl框架大量采用string声明而不?WideStringQ据李维ԌCodeGear?x)将Vcl全面支持UnicodeQ但要考虑一U最佳的qҎ(gu)?br />6、非常棒的DBX4。dbExpress要l一混ؕ的数据库q接lgQ底层全部改写。无论在Win32q是Win64上,可兼Ҏ(gu)Z码和托管代码。呵呵,举个例子QDBX4可支持ADOQ也可以支持ADO.Net。这一点,M$也做不到。DBX4新增加了Connection Pool高lg。更令h心动的是Q开放Driver SourceQ可自行扩展属性和Ҏ(gu)Q哈哈,ColreLab公司q回可高价卖不出去dbExpress驱动了。DBX4也全面支持Uicode?br />7?Delphi2007 for Win32支持Ajax技术—Intraweb9.0。Intraweb9.0lg装了AjaxQ以事g方式来驱动程序。Intraweb9.0?Ajax技术支持断点跟t调试,单到跟你调试其他delphiE序一栗Intraweb9.0不愧是封装javascript的上乘之作。其实,话又说回来了Q这一两年行的Ajax技术,其实无非是javascript装而已。而Intraweb已经在六七年javascript技术做得炉火纯青。更令h汗颜的是Q许多所谓的web2.0新技术调试Ajax时候,仿佛(jng)又回?0多年前的C~程时代Q不停地用Printf打印调试。Ajax技术也q是什么高U技术,只是web~程一U无奈的选择。不久未来,应该是属于智能客L(fng)q_?br /><br />Delphi for PHPQ这是一U对web技术前所未有的震撹{?br />1?完全支持现有PHP目。李l先生将一开源的UPHP5目用delphi for PHP打开Q即可编译运行?br />2?支持模板、CSS{技术?br />3、非常Cool的调试技术。将光标Ud光接,在出现链接的所属PHP文g里,讄断点Q当面调试q行到该断点时候,自动跌{到其PHP所在的断点。在 DebugH口里,呵呵Q比Delphi的Debug做得更好Q自动会(x)出现断点所在的cd例、变量树(wi)形调试信息,甚至是Request的内容,cM VS.NET2005的DebugH口。由于PHP是动态语aQ如果有变量未声明或实例化Q则?x)出现“尚未确定”之cȝ提示?br />4?用Vcl装PHP而成的组Ӟ其源码脚本还是纯正的PHP脚本语言。Vcllg的Object Inspector除了有属性、事件外Q还有javascriptQ运行在E序中动态调用javascript?br />5?非常震撼的可视化界面设计。delphi for PHP?0多个lgQ其中有一个ؓ(f)windowlgQ将其放在页面上Q拖拉其大小Q会(x)出现一个window formQ有最大化Q最化Q关闭之cL钮)Q然后,你可以随意拖攄?Standardlg或数据感知组件。跟你做CS界面q没有什么不同。一个web面可以攑֤个windowlgQ然后用ShowҎ(gu)昄调用。运行后Q?window form?x)出现在览器的面里。说hQ那些所谓的Web UI技术,比如是Sturcts、JSF{流行框Ӟ如同垃圾一P生力ƈ没有什么显著提高。CodeGear很牛啊?br />6?最后一个演CZ子,李维先生一个封装而成的Google Map VCLlgQPHP装而成Q运行演C,呵呵Q不写一句代码,竟然实现?Google 官方|站上Google Map所有功能,一怸栗李l先生用Google Map例子昄Borlandd和他的台北家。呵呵,台北不是我的Ӟ我的家乡没有霓虹灯;深圳也不是我的家Q我的家乡没有歧视也没有三大山?br />7?Delphi for PHP大概今天在美国正式ReleaseQ其试用版大概一周后可下载。h(hun)格是299元Q优惠期甌h?49元左右Q呵呵,|上报h(hun)Q我可不是托Q。Release后,其Vcllg包源码将?x)提交到开源组l开源。CodeGear只卖IDE。Delphi for PHP与Delphi2007是两个不同的IDEQ将来应该会(x)l一h?img src ="http://www.tkk7.com/badboyryan/aggbug/124377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/badboyryan/" target="_blank">坏男?/a> 2007-06-14 21:02 <a href="http://www.tkk7.com/badboyryan/archive/2007/06/14/124377.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DELPHI里面的webservices~程Client端实?/title><link>http://www.tkk7.com/badboyryan/archive/2007/06/11/123307.html</link><dc:creator>坏男?/dc:creator><author>坏男?/author><pubDate>Mon, 11 Jun 2007 02:19:00 GMT</pubDate><guid>http://www.tkk7.com/badboyryan/archive/2007/06/11/123307.html</guid><wfw:comment>http://www.tkk7.com/badboyryan/comments/123307.html</wfw:comment><comments>http://www.tkk7.com/badboyryan/archive/2007/06/11/123307.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/badboyryan/comments/commentRss/123307.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/badboyryan/services/trackbacks/123307.html</trackback:ping><description><![CDATA[1、file-new-application<br /><br />2、在webservice |{把控gTHTTPRIO攑ֈH体里面?br /><br />3、把服务器CGIE序用IIS发布出去需要徏虚拟目录<br /><br />4、在览器里面输?a href="http://ip/">http://ip/</a>虚拟目录/cgi.exe/wsdl<br /><br />5、点击里面的L的wsdlQ浏览器打开地址Q把地址拯下来<br /><br />6、THTTPRIO控g的wsdllocation属性赋?里的地址<br /><br />7、把服务器端的intf引用q来<br /><br />       uses IdemoIntf;<br /><br />8、写代码调用webservices里面的方法;<br /><br />var<br />IdemoIntf : IIdemo ;<br />begin<br /> IdemoIntf := htpr1 as  IIdemo;<br /> ShowMessage(IdemoIntf.hellworld('123'));<br />end;<br /><br />q样的好处是客户端不需安装数据库的客户端,不用兛_业户代码Q只需要调用服务器端的接口函数可以了?br /><br />到这delphi里面如何单创建和使用webservice的例子写完了?br /><br />转蝲注明出处Q?a href="/badboyryan/archive/2007/06/11/123304.html">http://www.tkk7.com/badboyryan/archive/2007/06/11/123304.html</a><br /><br />版权所有:(x)坏男?br /><br /><br /><br /><br /><br /><img src ="http://www.tkk7.com/badboyryan/aggbug/123307.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/badboyryan/" target="_blank">坏男?/a> 2007-06-11 10:19 <a href="http://www.tkk7.com/badboyryan/archive/2007/06/11/123307.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DELPHI里面的webservices~程SERVER端实?/title><link>http://www.tkk7.com/badboyryan/archive/2007/06/11/123304.html</link><dc:creator>坏男?/dc:creator><author>坏男?/author><pubDate>Mon, 11 Jun 2007 02:10:00 GMT</pubDate><guid>http://www.tkk7.com/badboyryan/archive/2007/06/11/123304.html</guid><wfw:comment>http://www.tkk7.com/badboyryan/comments/123304.html</wfw:comment><comments>http://www.tkk7.com/badboyryan/archive/2007/06/11/123304.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/badboyryan/comments/commentRss/123304.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/badboyryan/services/trackbacks/123304.html</trackback:ping><description><![CDATA[1、File-new-other-webservices-soapserver application-选择CGI Stand-alone executable<br /><br />2、Create Interface for SOAP Module 选择?br /><br />3、输入Service Name 点击ok<br /><br />4、在INTF下面写上接口实现的函?br />  IIdemo = interface(IInvokable)<br />  ['{E05B7E78-4B57-412F-BB34-805F99E6CDCA}']<br />   function hellworld(str1 : String):String; stdcall;<br /><br />5、在impl里面写上<br />  public<br />      function hellworld(str1 : String):String; stdcall;<br />  end;<br /><br />q且实现q个函数<br /><br />6、编译程序,q时q个cgi的exe文gq成了<br /><br />7、用IIS发布?yu)可以了Q等着被客L(fng)调用了?br /><br /><br />转蝲注明出处Q?a href="/badboyryan/archive/2007/06/11/123304.html">http://www.tkk7.com/badboyryan/archive/2007/06/11/123304.html</a><br /><br />版权所有:(x)坏男?br /><img src ="http://www.tkk7.com/badboyryan/aggbug/123304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/badboyryan/" target="_blank">坏男?/a> 2007-06-11 10:10 <a href="http://www.tkk7.com/badboyryan/archive/2007/06/11/123304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何通过xml来更新数据库l构Q?/title><link>http://www.tkk7.com/badboyryan/archive/2007/05/28/120510.html</link><dc:creator>坏男?/dc:creator><author>坏男?/author><pubDate>Mon, 28 May 2007 09:02:00 GMT</pubDate><guid>http://www.tkk7.com/badboyryan/archive/2007/05/28/120510.html</guid><wfw:comment>http://www.tkk7.com/badboyryan/comments/120510.html</wfw:comment><comments>http://www.tkk7.com/badboyryan/archive/2007/05/28/120510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/badboyryan/comments/commentRss/120510.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/badboyryan/services/trackbacks/120510.html</trackback:ping><description><![CDATA[ <p><?xml version="1.0" encoding="GBK"?></p> <p><SqlMain><br /><property name="1" table="索引ID_Tpu_Menu3_Cyzgxz"><br />    create unique index ID_Tpu_Menu3_Cyzgxz on Tpu_Menu3_Cyzgxz(CyzgxzID)<br />  </property><br /><br />  <property name="3" table="T_CYRY_MZ"><br />    drop table T_CYRY_MZ<br />  </property><br /><br /><br />  <property name="2" table="TPu_Menu8_Clxx"><br />    alter table tpu_menu8_clxx alter column dzw decimal(6,2)<br />  </property><br /></SqlMain<br /><br />procedure TFrmMain.UpDataStruct(aFileName:String);<br />var<br />  vNode,vChildNode:IXMLNode;<br />  iLen,i:integer;<br />  fSqlText,fName,fTable:string;<br />begin<br />  try  <br />    XMLDoc.LoadFromFile(aFileName);<br />    XMLDoc.Active:=True;<br />    vNode:=XMLDoc.ChildNodes.FindNode('SqlMain');<br />    iLen:=vNode.ChildNodes.Count;<br />    pb1.Max:=iLen*10;<br />    for i:=0 to iLen-1 do<br />    begin<br />      vChildNode:=vNode.ChildNodes.Get(i);<br />      fSqlText:=vChildNode.NodeValue;<br />      fName:=vChildNode.Attributes['name'];<br />      fTable:=vChildNode.Attributes['table'];<br />      DoSqlText(fSqlText,fName,fTable);<br />    end;<br />  except<br />    on e:Exception do<br />      Showmessage('XML文gd错误Q请与开发商联系Q?+chr(13)+e.Message);<br />  end;<br />end;</p> <p>procedure TFrmMain.DoSqlText(aSqlText,aName,aTable:string);<br />var<br />  it:Integer;<br />begin<br />  ADOExec.SQL.Clear;<br />  ADOExec.SQL.Add(aSqlText);<br />  try<br />    it:=StrToInt(aName);<br />    case it of<br />    1:lb1.Caption:='建立?+aTable;<br />    2:lb1.Caption:='更新?+aTable;<br />    3:lb1.Caption:='删除?+aTable;<br />    10:<br />    begin<br />      lb1.Caption:='d数据?+aTable;<br />      ClearData(aTable);<br />    end;<br />    11:lb1.Caption:='更新数据?+aTable;<br />    else<br />      lb1.Caption:='更新?+aTable;<br />    end;<br />    ADOExec.ExecSQL;<br />    memo1.Lines.Add('信息?+lb1.Caption+'操作成功Q?);<br />  except<br />    on e:Exception do<br />      memo1.Lines.Add('警告?+e.Message);<br />  end;<br />  pb1.StepIt;<br />  pb1.Refresh;<br />  lb1.Refresh;<br />  memo1.Refresh;<br />end;<br /><br /><br />注明出处Q?a href="/badboyryan/archive/2007/05/28/120510.html">http://www.tkk7.com/badboyryan/archive/2007/05/28/120510.html</a><br /></p> <img src ="http://www.tkk7.com/badboyryan/aggbug/120510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/badboyryan/" target="_blank">坏男?/a> 2007-05-28 17:02 <a href="http://www.tkk7.com/badboyryan/archive/2007/05/28/120510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Delphi部分函数、命令、属性中文说?/title><link>http://www.tkk7.com/badboyryan/archive/2007/01/23/95523.html</link><dc:creator>坏男?/dc:creator><author>坏男?/author><pubDate>Tue, 23 Jan 2007 05:28:00 GMT</pubDate><guid>http://www.tkk7.com/badboyryan/archive/2007/01/23/95523.html</guid><wfw:comment>http://www.tkk7.com/badboyryan/comments/95523.html</wfw:comment><comments>http://www.tkk7.com/badboyryan/archive/2007/01/23/95523.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/badboyryan/comments/commentRss/95523.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/badboyryan/services/trackbacks/95523.html</trackback:ping><description><![CDATA[Abort 函数 引v攑ּ的意外处理?br />Abs 函数 l对值函敊W?br />AddExitProc 函数 一q程d到运行时库的l束q程表中 <br />Addr 函数 q回指定对象的地址 <br />AdjustLineBreaks 函数 给定字W串的行分隔W调整ؓ(f)CR/LF序列 <br />Align 属性 控g位于H口某部分?br />Alignment 属性 控件标{文字位置 <br />AllocMem 函数 在堆栈上分配l定大小的块 <br />AllowGrayed 属性 允怸个灰度选择 <br />AnsiCompareStr 函数 比较字符Ԍ区分大小写) <br />AnsiCompareText 函数 比较字符Ԍ不区分大写Q?br />AnsiLowerCase 函数 字W{换ؓ(f)写 <br />AnsiUpperCase 函数 字W{换ؓ(f)大写 <br />Append 函数 以附加的方式打开已有的文件?br />ArcTan 函数 余切函数 <br />AssignFile 函数 l文件变量赋一外部文g名?br />Assigned 函数 试函数或过E变量是否ؓ(f)I?br />AutoSize 属性 自动控制标{大小 <br /><br />BackgroundColor 属性 背景色 <br />BeginThread 函数 以适当的方式徏立用于内存管理的U程 <br />BevelInner 属性 控件方框的内框方式 <br />BevelOuter 属性 控件方框的外框方式 <br />BevelWidth 属性 控件方框的外框宽度 <br />BlockRead 函数 M个或多个记录到变量中 <br />BlockWrite 函数 从变量中写一个或多个记录 <br />BorderStyle 属性 边界类型?br />BorderWidth 属性 边界宽度?br />Break 命o(h) l止for、while、repeat循环语句 <br />Brush 属性 画刷?br /><br />Caption 属性 标{文字的内容 <br />ChangeFileExt 函数 改变文g的后~ <br />ChDir 函数 改变当前目录 <br />Checked 属性 确定复选框选中状态?br />Chr 函数 q回指定序数的字W?br />CloseFile 命o(h) 关闭打开的文件?br />Color 属性 标{颜色 <br />Columns 属性 显C的列数 <br />CompareStr 函数 比较字符Ԍ区分大小写) <br />Concat 函数 合ƈ字符串?br />Continue 命o(h) l箋for、while、repeat的下一个@环?br />Copy 函数 q回一字符串的子串 <br />Cos 函数 余u函数 <br />Ctl3D 属性 是否具?D效果 <br />Cursor 属性 鼠标指针移入后的Ş状?br /><br />Date 函数 q回当前的日期?br />DateTimeToFileDate 函数 DELPHI的日期格式{换ؓ(f)DOS的日期格式?br />DateTimeToStr 函数 日期时间格式{换ؓ(f)字符串?br />DateTimeToString 函数 日期时间格式{换ؓ(f)字符串?br />DateToStr 函数 日期格式{换ؓ(f)字符串?br />DayOfWeek 函数 q回星期的数值?br />Dec 函数 递减变量值?br />DecodeDate 函数 日期格式分解ؓ(f)q月日?br />DecodeTime 函数 时间格式分解ؓ(f)时、分、秒、毫U?br />Delete 函数 从字W串中删除子串?br />DeleteFile 命o(h) 删除文g <br />DiskFree 函数 q回剩余盘I间的大?br />DiskSize 函数 q回指定盘的容量?br />Dispose 函数 释放动态变量所占的I间 <br />DisposeStr 函数 释放字符串在堆栈中的内存I间 <br />DitherBackground 属性 背景色的色彩加重或减?0% <br />DragCursor 属性 当鼠标按下时光标的形状 <br />DragMode 属性 按动的作用方式 <br />DropDownCount 属性 容许的昄数据的数目 <br />EditMask 属性 编辑模式?br />Enabled 属性 是否标签呈现打开状态?br />EncodeDate 函数 年月日合成为日期格式?br />EncodeTime 函数 时、分、秒、毫U合成ؓ(f)旉格式 <br />EndMargin 属性 末边~?br />Eof 函数 Ҏ(gu)cd或无cd文g试是否到文件尾 <br />Eoln 函数 q回文本文g的行l束状态?br />Erase 命o(h) 删除外部文g <br />ExceptAddr 函数 q回引v当前意外的地址 <br />Exclude 函数 从集合中删除一些元素?br />ExceptObject 函数 q回当前意外的烦引?br />Exit 命o(h) 立即从当前的语句块中退出?br />Exp 函数 指数函数 <br />ExpandFileName 函数 q回包含l对路径的字W串 <br />ExtendedSelect 属性 是否允许存在选择模式QTrueӞMultiSelect才有意义 <br />ExtractFileDir 函数 q回驱动器和路径 <br />ExtractFileExt 函数 q回文g的后~ <br />ExtractFileName 函数 q回文g名?br />ExtractFilePath 函数 q回指定文g的\径?br /><br />FileAge 函数 q回文g已存在的旉 <br />FileClose 命o(h) 关闭指定的文件?br />FileCreate 命o(h) 用指定的文g名徏立新文g <br />FileDateToDateTime 函数 DOS的日期格式{换ؓ(f)DELPHI的日期格式?br />FileExists 函数 查文件是否存在?br />FileGatAttr 函数 q回文g的属性?br />FileGetDate 函数 q回文g的DOS日期旉标记 <br />FileOpen 命o(h) 用指定的存取模式打开指定的文件?br />FilePos 函数 q回文g的当前指针位|?br />FileRead 命o(h) 从指定的文gd <br />FileSearch 命o(h) 在目录中搜烦指定的文件?br />FileSeek 函数 改变文g的指针?br />FileSetAttr 函数 讄文g属性?br />FileSetDate 函数 讄文g的DOS日期旉标记 <br />FileSize 函数 q回当前文g的大?br />FileWrite 函数 Ҏ(gu)定的文g做写操作 <br />FillChar 函数 用指定的值填充连l字节的敊W?br />FindClose 命o(h) l止FindFirst/FindNext序列 <br />FindFirst 命o(h) Ҏ(gu)定的文g名及属性搜索目录?br />FindNext 命o(h) q回与文件名及属性匹配的下一入口 <br />FloatToDecimal 函数 QҎ(gu)转换为十q制敊W?br />FloatToStrF 函数 QҎ(gu)转换为字W串 <br />FloatToStr 函数 QҎ(gu)转换为字W串 <br />FloatToText 函数 给定的点数{换ؓ(f)十进制数 <br />FloatToTextFmt 函数 给定的点数{换ؓ(f)十进制数 <br />Flush 函数 缓冲区的内容刷新到输出的文本文件中 <br />FmtLoadStr 函数 从程序的资源字符串表中装载字W串 <br />FmtStr 函数 格式化一pd的参敎ͼ其结果以参数Resultq回 <br />Font 属性 设|字体?br />Format 函数 格式化一pd的参数ƈq回Pascal字符串?br />FormatBuf 函数 格式化一pd的参敊W?br />FormatDateTime 函数 用指定的格式来格式化日期和时闾b?br />FormatFloat 函数 指定点数格式?br />Frac 函数 q回参数的小数部分?br />FreeMem 函数 按给定大释攑֊态变量所占的I间 <br /><br />GetDir q回指定驱动器的当前目录 <br />GetHeapStatus q回内存理器的当前状态?br />GetMem 建立一指定大小的动态变量,q将指针指向该处 <br />GetMemoryManager q回内存理器的入口点?br />Glyph 函数 按钮上的图象 <br /><br />Halt 停止E序的执行ƈq回到操作系l?br />Hi q回参数的高地址位?br />High q回参数的上限值?br />Hint 属性 提CZ息?br /><br />Int q回参数的整数部分?br />Include d元素到集合中 <br />Insert 在字W串中插入子串?br />IntToHex 整型数转换为十六进制数 <br />IntToStr 整型数转换为字W串 <br />IOResult q回最新的I/O操作完成状态?br />IsValidIdent 试字符串是否ؓ(f)有效的标识符 <br />Items 属性 默认显C的节点 <br /><br />Kind 属性 摆放样式?br /><br />LargeChange 属性 最大改变值?br />Layout 属性 图象布局 <br />Length 函数 q回字符串的动态长度?br />Lines 属性 缺省显C内容?br />Ln 函数 自然Ҏ(gu)函数 <br />Lo 函数 q回参数的低地址位?br />LoadStr 函数 从应用程序的可执行文件中装蝲字符资源 <br />LowerCase 函数 给定的字符串变为小写?br />Low 函数 q回参数的下限值?br /><br />Max 属性 最大值?br />MaxLength 属性 最大长度?br />Min 属性 最值?br />MkDir 命o(h) 建立一子目录?br />Move 函数 从源到目标复制字节?br />MultiSelect 属性 允许同旉择几个数据?br /><br />Name 属性 控件的名字 <br />New 函数 建立新的动态变量ƈ讄一指针变量指向他?br />NewStr 函数 在堆栈上分配新的字符串?br />Now 函数 q回当前的日期和旉 <br /><br />Odd 试参数是否为奇敊W?br />OnActivate 事g 焦点UdH体上时触发 <br />OnClick 事g 单击H体I白区域触发 <br />OnDblClick 事g 双击H体I白区域触发 <br />OnCloseQuery 事g 使用者试囑օ闭窗体触发?br />OnClose 事g H体关闭后才触发 <br />OnCreate 事g H体W一ơ创建时触发 <br />OnDeactivate 事g 用户切换到另一应用E序触发 <br />OnDragDrop 事g 鼠标拖放操作l束时触发?br />OnDragOver 事g 有其他控件从他上面移q触发?br />OnMouseDown 事g 按下鼠标键时触发 <br />OnMouseUp 事g 释放鼠标键时触发 <br />OnMouseMove 事g Ud鼠标时触发?br />OnHide 事g 隐藏H体时触发?br />OnKeyDown 事g 按下键盘某键时触发?br />OnKeyPress 事g 按下键盘上的单个字符键时触发 <br />OnKeyUp 事g 释放键盘上的某键时触发?br />OnPaint 事g H体上有新部分暴露出来触发?br />OnResize 事g 重新调整H体大小触发 <br />OnShow 事g 在窗体实际显CZ前瞬间触发?br />Ord q回序数cȝ序数 <br />OutlineStyle 属性 类型?br />OutOfMemoryError 引vOutOfMemory意外 <br />PageIndex 属性 页索引 <br />Pages 属性 页 <br />ParamCount 函数 q回在命令行上传递给E序的参数数量?br />ParamStr 函数 q回指定的命令行参数 <br />Pen 属性 画刯|?br />Pi 函数 q回圆周率Pi <br />Picture 属性 显C图象?br />PictureClosed 属性 设|Closed位图 <br />PictureLeaf 属性 设|Leaf位图 <br />PictureMinus 属性 设|Minus位图 <br />PictureOpen 属性 设|Open位图 <br />PicturePlus 属性 设|Plus位图 <br />Pos 函数 在字W串中搜索子串?br />Pred 函数 q回先前的参敊W?br /><br />Random 函数 q回一随机函数 <br />Randomize 函数 用一随机数初始化内置的随机数生成器?br />Read 函数 Ҏ(gu)格式的文ӞM文glg到变量中Q?br />Ҏ(gu)本文ӞM个或多个值到一个或多个变量中?br />Readln 函数 执行Readq程Q然后蟩到文件下一行?br />ReadOnly 属性 只d性?br />ReAllocMem 函数 分配一动态变量?br />Rename 函数 重命名外部文件?br />RenameFile 函数 Ҏ(gu)仉命名 <br />Reset 函数 打开已有的文件?br />Rewrite 函数 建立q打开一新的文g <br />RmDir 函数 删除I的子目录?br />Round 函数 实数D入ؓ(f)整型值?br />RunError 函数 停止E序的执行?br /><br />ScrollBars 属性 滚动条状态?br />Seek 函数 文件的当前指针Ud到指定的lg上?br />SeekEof 函数 q回文g的文件结束状态?br />SeekEoln 函数 q回文g的行l束状态?br />SelectedColor 属性 选中颜色 <br />SetMemoryManager 函数 讄内存理器的入口点?br />SetTextBuf 函数 l文本文件指定I/O~冲区?br />Shape 属性 显C的形状 <br />ShowException 函数 昄意外消息与地址 <br />Sin 函数 正u函数 <br />SizeOf 函数 q回参数所占的字节敊W?br />SmallChange 属性 最改变值?br />Sorted 属性 是否允许排序?br />Sqr 函数 qx函数 <br />Sqrt 函数 qx根函敊W?br />StartMargin 属性 开始边~?br />State 属性 控件当前状态?br />Str 函数 数D{换ؓ(f)字符串?br />StrAlloc 函数 l以NULLl束的字W串分配最大长?1的缓冲区 <br />StrBufSize 函数 q回存储在由StrAlloc分配的字W缓冲区的最大字W数 <br />StrCat 函数 一字符串附加到另一字符串尾q返回合q的字符串?br />StrComp 函数 比较两个字符串?br />StrCopy 函数 一个字W串复制到另一个字W串中?br />StrDispose 函数 释放堆栈上的字符串?br />StrECopy 函数 一字符串复制到另一个字W串q返回结果字W串N的指针?br />StrEnd 函数 q回指向字符串尾部的指针 <br />Stretch 属性 自动适应控g的大?br />StrFmt 函数 格式化一pd的参敊W?br />StrIComp 函数 比较两个字符Ԍ不区分大写Q?br />StringToWideChar 函数 ANSI字符串{换ؓ(f)UNICODE字符串?br />StrLCat 函数 一字符串中的字W附加到另一字符串尾q返回合q的字符串?br />StrLComp 函数 以最大长度比较两个字W串 <br />StrLCopy 函数 一个字W串中的字符复制到另一个字W串中?br />StrLen 函数 q回字符串中的字W数 <br />StrLFmt 函数 格式化一pd的参敎ͼ其结果中包含有指向目标缓冲区的指针?br />StrLIComp 函数 以最大长度比较两个字W串Q不区分大小写) <br />StrLower 函数 字W串中的字符转换为小写?br />StrMove 函数 一个字W串中的字符复制到另一个字W串中?br />StrNew 函数 在堆栈上分配一个字W串 <br />StrPas 函数 以NULLl束的字W串转换为PASCALcȝ字符串?br />StrPCopy 函数 PASCALcȝ字符串复制ؓ(f)以NULLl束的字W串 <br />StrPLCopy 函数 从PASCALcȝ最大长度字W串复制ZNULLl束的字W串 <br />StrPos 函数 q回一个字W串在另一个字W串中首ơ出现指针?br />StrRScan 函数 q回字符串中最后出现字W的指针 <br />StrScan 函数 q回字符串中出现首字W的指针 <br />StrToDate 函数 字W串转换为日期格式?br />StrToDateTime 函数 字W串转换为日?旉格式 <br />StrToFloat 函数 给定的字符串{换ؓ(f)点敊W?br />StrToInt 函数 字W串转换为整型?br />StrToIntDef 函数 字W串转换为整型或默认值?br />StrToTime 函数 字W串转换为时间格式?br />StrUpper 函数 字W串中的字符转换为大写?br />Style 属性 类型选择 <br />Suce 函数 q回后的参敊W?br />Swap 函数 交换参数的高低地址位?br /><br />Tabs 属性 标记每一的内容 <br />TabIndex 属性 标记烦引?br />Text 属性 显C的文本 <br />TextToFloat 函数 字W串Q以NULLl束的格式)转换为QҎ(gu) <br />Time 函数 q回当前的时闾b?br />TimeToStr 函数 时间格式{换ؓ(f)字符串?br />Trim 函数 从给定的字符串中删除前导和尾部的I格及控制字W?br />TrimLeft 函数 从给定的字符串中删除首部的空格及控制字符 <br />TrimRight 函数 从给定的字符串中删除N的空格及控制字符 <br />Trunc 函数 实型值截取ؓ(f)整型值?br />Truncate 函数 截去当前文g位置后的内容 <br /><br />UnSelectedColor 属性 未选中颜色 <br />UpCase 字W{换ؓ(f)大写 <br />UpperCase 给定的字符串变为大写?br /><br />Val 函数 字W串转换为整型值?br />VarArrayCreate 函数 以给定的界限和维数徏立变体数l?br />VarArrayDimCount 函数 q回l定变体的维敊W?br />VarArrayHighBound 函数 q回l定变体数组l数的上界?br />VarArrayLock 函数 锁定l定的变体数l?br />VarArrayLowBound 函数 q回l定变体数组l数的下界?br />VarArrayOf 函数 q回指定变体的数l元素?br />VarArrayRedim 函数 通过改变上限来调整变体的大小 <br />VarArrayUnlock 函数 解锁指定的变体数l?br />VarAsType 函数 变体{换ؓ(f)指定的类型?br />VarCase 函数 变体{换ؓ(f)指定的类型ƈ保存他?br />VarClear 函数 清除指定的变体?br />VarCopy 函数 指定的变体复制为指定的变体 <br />VarFormDateTime 函数 q回包含日期旉的变体?br />VarIsArray 函数 试变体是否为数l?br />VarIsEmpty 函数 试变体是否为UNASSIGNED <br />VarIsNull 函数 试变体是否为NULL <br />VarToDateTime 函数 给定的变体转换为日期时闾b?br />VarType 函数 变体{换ؓ(f)指定的类型ƈ保存他?br />Visible 属性 控件的可见性?br /><br />WantReturns 属性 ؓ(f)TrueӞ按回车键产生一个回车符Qؓ(f)FalseӞ按下Ctrl+Enter才生回车符 <br />Write 命o(h) Ҏ(gu)格式的文Ӟ写一变量到文件组件中Q对文本文gQ写一个或多个值到文g中?br />Writeln 命o(h) 执行W(xu)RITEq程Q然后输Z行结束标志?br />WideCharLenToString 函数 ANSI字符串{换ؓ(f)UNICODE字符串?br />WideCharLenToStrWar 函数 UNICODE字符串{换ؓ(f)ANSI字符串变量?br />WideCharToString 函数 UNICODE字符串{换ؓ(f)ANSI字符串?br />WideCharToStrVar 函数 UNICODE字符串{换ؓ(f)ANSI字符串变量?br /><img src ="http://www.tkk7.com/badboyryan/aggbug/95523.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/badboyryan/" target="_blank">坏男?/a> 2007-01-23 13:28 <a href="http://www.tkk7.com/badboyryan/archive/2007/01/23/95523.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DELPHI常用的流水̎Q不断更?/title><link>http://www.tkk7.com/badboyryan/archive/2006/12/20/89044.html</link><dc:creator>坏男?/dc:creator><author>坏男?/author><pubDate>Wed, 20 Dec 2006 07:07:00 GMT</pubDate><guid>http://www.tkk7.com/badboyryan/archive/2006/12/20/89044.html</guid><wfw:comment>http://www.tkk7.com/badboyryan/comments/89044.html</wfw:comment><comments>http://www.tkk7.com/badboyryan/archive/2006/12/20/89044.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.tkk7.com/badboyryan/comments/commentRss/89044.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/badboyryan/services/trackbacks/89044.html</trackback:ping><description><![CDATA[1、sql := 'SELECT To_char(SYSDATE,'+ QuotedStr('yyyy-MM-dd hh:mm:ss')+') as d FROM Dual';<br />      QuotedStr Q?此函数的作用保证数据库里面执行的SQL不会(x)因ؓ(f)‘,{特D字W而出错;<br />      Dual          Q?oracle数据库里面的函数?br />2、        ?Application.ProcessMessages;<br />q个语句的作用很大啊Q工控里面有专门负责数据采集的程序,时时的需要采集数据,里面要是不加上这么一句话你的前台展示Q就?x)很隄Q鼠标点M去,老半天没有反应?br />3、Delphi--Stream和Variant的{化网上广为流传的两个函数Q确实好用?br /><strong>procedure</strong> VariantToStream (<strong>const</strong> v : OleVariant; Stream : TMemoryStream); <br /><strong>var</strong><br />  p : pointer; <br /><strong>begin <br /></strong>  Stream.Position := <font color="#ff00ff">0</font>; <br />  Stream.Size := VarArrayHighBound (v, <font color="#ff00ff">1</font>) - VarArrayLowBound (v, <font color="#ff00ff">1</font>) + <font color="#ff00ff">1</font>; <br />  p := VarArrayLock (v); <br />  Stream.Write (p^, Stream.Size); <br />  VarArrayUnlock (v); <br />  Stream.Position := <font color="#ff00ff">0</font>; <br /><strong>end</strong>; <p><strong>procedure</strong> StreamToVariant (Stream : TMemoryStream;<strong> var</strong> v : OleVariant); <br /><strong>var</strong><br />  p : pointer; <br /><strong>begin</strong><br />  v := VarArrayCreate ([<font color="#ff00ff">0</font>, Stream.Size - <font color="#ff00ff">1</font>], varByte); <br />  p := VarArrayLock (v); <br />  Stream.Position := <font color="#ff00ff">0</font>; <br />  Stream.Read (p^, Stream.Size); <br />  VarArrayUnlock (v); <br /><strong>end</strong>; <br /><br /><br />4、这个函C是非帔R的,<br /><br />function ByteType(const S: string; Index: Integer): TMbcsByteType;<br />IsDBCSLeadByte<br />告诉你一个非常有用的函数?/p><p>bytetype  它可以判断一个字W串中,某个 Char 是单个字母,q是双字节的前一位或<br />后一位?br />mbSingleByte 单字?br />mbLeadByte 双字节第一?br />mbTrailByte 双字节第二位<br /><br />在copyQStrQ?Q?2Q中l果有个全角?Q,Q过不去了居然quotedstrQ)的结果也出现了?我怎么?br /><br />function TFrmMain.procQJWT(olds: String): String;<br />var<br />  tmp : string;<br />begin<br />  tmp := Trim(olds);</p><p>  Result := tmp;  <br />  if Length(tmp)>12 then<br />  begin<br />    //是单个字W?br />    if  ByteType(tmp,12)=mbLeadByte then<br />      result := Copy(tmp,1,11)<br />    else<br />      result := Copy(tmp,1,12);<br />  end;<br />end;<br /><br />写了一个函数就解决战斗了!<br /></p><img src ="http://www.tkk7.com/badboyryan/aggbug/89044.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/badboyryan/" target="_blank">坏男?/a> 2006-12-20 15:07 <a href="http://www.tkk7.com/badboyryan/archive/2006/12/20/89044.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QuickReport打印字体怪怪的如何解决Q?/title><link>http://www.tkk7.com/badboyryan/archive/2006/12/14/87699.html</link><dc:creator>坏男?/dc:creator><author>坏男?/author><pubDate>Thu, 14 Dec 2006 06:31:00 GMT</pubDate><guid>http://www.tkk7.com/badboyryan/archive/2006/12/14/87699.html</guid><wfw:comment>http://www.tkk7.com/badboyryan/comments/87699.html</wfw:comment><comments>http://www.tkk7.com/badboyryan/archive/2006/12/14/87699.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.tkk7.com/badboyryan/comments/commentRss/87699.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/badboyryan/services/trackbacks/87699.html</trackback:ping><description><![CDATA[        三年前做得一个药店的销售单打印的项目,最q又扑ֈ了,拿出来测试一下结果用DELPHI重新~译Q运行YӞ打印。结果发现销售单的宽度没有变化,l果字体拉长Q纸张的高度本来一?4毫米高,l果成了A4U张q么大;<br /><br />       ȝl上GOOGLE了一下,没有扑ֈcM的案例,没有办法只有自己解决了,旧程序是好的Q新E序不可以,E序又没有修改过QW(xu)HYQ后来发现QuickReport的版本当是我用的?.X,现在用的?.X?br /><br />      有可能是控g的问题,呵呵原来QuickReport4.0.6不支持自定义U张的打华ͼ郁闷啊,无奈ȝ上费了九(ji)牛二虎之力终于下载了一个QuickReport3.6.2。。?br /><br />     Installing.............<br /><br />     Finished.<br /><br />    Compileing.......<br /><br />    Run.<br /><br />    Print.....<br /><br />l果E序不用做Q何修改,搞定Q?br /><br /><br /><br /><img src ="http://www.tkk7.com/badboyryan/aggbug/87699.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/badboyryan/" target="_blank">坏男?/a> 2006-12-14 14:31 <a href="http://www.tkk7.com/badboyryan/archive/2006/12/14/87699.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>delphi中多U程同步的一些方?/title><link>http://www.tkk7.com/badboyryan/archive/2006/12/11/86803.html</link><dc:creator>坏男?/dc:creator><author>坏男?/author><pubDate>Mon, 11 Dec 2006 01:26:00 GMT</pubDate><guid>http://www.tkk7.com/badboyryan/archive/2006/12/11/86803.html</guid><wfw:comment>http://www.tkk7.com/badboyryan/comments/86803.html</wfw:comment><comments>http://www.tkk7.com/badboyryan/archive/2006/12/11/86803.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/badboyryan/comments/commentRss/86803.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/badboyryan/services/trackbacks/86803.html</trackback:ping><description><![CDATA[       多核时代的到来,对于我们E序员来说要快的,可能多的用多U程~程只有q样Q作的程序才?x)有高效率,q个思想一定要宣传啊,不然多核时代了,q写单线E的E序太不够档次了?br /><br /><h4 class="TextColor1" id="subjcns!1F35743133BE93C7!115" style="MARGIN-BOTTOM: 0px">delphi中多U程同步的一些方?/h4><div class="pz17rln" id="msgcns!1F35743133BE93C7!115">当有多个U程的时候,l常需要去同步q些U程以访问同一个数据或资源。例如,假设有一个程序,其中一个线E用于把文gd内存Q而另一个线E用于统计文件中的字W数。当Ӟ在把整个文g调入内存之前Q统计它的计数是没有意义的。但是,׃每个操作都有自己的线E,操作pȝ?x)把两个U程当作是互不相q的d分别执行Q这样就可能在没有把整个文g装入内存时统计字数。ؓ(f)解决此问题,你必M两个U程同步工作?<br />存在一些线E同步地址的问题,W(xu)in32提供了许多线E同步的方式。在本节你将看到使用临界区?互斥、信号量和事件来解决U程同步的问题?<br /><br /><b>1. 临界?/b><br />临界区是一U最直接的线E同步方式。所谓(f)界区Q就是一ơ只能由一个线E来执行的一D代码。如果把初始化数l的代码攑֜临界区内Q另一个线E在W一个线E处理完之前是不?x)被执行的?<br />在用(f)界区之前Q必M用InitializeCriticalSection()q程来初始化它?<br />其声明如下:(x) <div><span>    procedure</span> InitializeCriticalSection(<span>var</span></div><div><span>lpCriticalSection参数是一个TRTLCriticalSectioncd的记录,q且是变参。至于TRTLCriticalSection 是如何定义的Q这q不重要Q因为很需要查看这个记录中的具体内宏V只需要在lpCriticalSection中传递未初始化的记录QInitializeCriticalSection()q程׃(x)填充q个记录?<br />注意Microsoft故意隐瞒了TRTLCriticalSection的细节。因为,其内容在不同的硬件^C是不同的。在ZIntel的^CQTRTLCriticalSection包含一个计数器、一个指C当前线E句柄的域和一个系l事件的句柄。在Alphaq_上,计数器被替换ZUAlpha-CPU 数据l构Q称为spinlock。在记录被填充后Q我们就可以开始创Z(f)界区了。这时我们需要用EnterCriticalSection()和LeaveCriticalSection()来封装代码块。这两个q程的声明如下:(x) </span></div><div><span>    <div><span>procedure</span> EnterCriticalSection(<span>var</span> lpCriticalSection:TRRLCriticalSection);stdcall; <br /><span>procedure</span> LeaveCriticalSection(<span>var</span></div></span></div><div><span>正如你所想的Q参数l(f)pCriticalSection是由InitializeCriticalSection()填充的记录?<br />当你不需要TRTLCriticalSection记录Ӟ应当调用DeleteCriticalSection()q程Q下面是它的声明Q? <div><span>procedure</span> DeleteCriticalSection(<span>var</span></div><br /><br /><b>2. 互斥</b><br />互斥非常cM于(f)界区Q除了两个关键的区别Q首先,互斥可用于跨q程的线E同步。其ơ,互斥能被赋予一个字W串名字Qƈ且通过引用此名字创建现有互斥对象的附加句柄?<br />提示临界Z事g对象(比如互斥对象)的最大的区别是在性能上。(f)界区在没有线E冲H时Q要? 0 ~ 1 5个时间片Q而事件对象由于涉及到pȝ内核要用400~600个时间片?<br />可以调用函数CreateMutex ( )来创Z个互斥量。下面是函数的声明:(x) <div><span>function</span></div><br />lpMutexAttributes参数Z个指向TSecurityAttributtes记录的指针。此参数通常设ؓ(f)0Q表C默认的安全属性。bInitalOwner参数表示创徏互斥对象的线E是否要成ؓ(f)此互斥对象的拥有者。当此参Cؓ(f)FalseӞ 表示互斥对象没有拥有者?<br />lpName参数指定互斥对象的名U。设为nil表示无命名,如果参数不是设ؓ(f)nilQ函C(x)搜烦是否有同名的互斥对象存在。如果有Q函数就?x)返回同名互斥对象的句柄。否则,新创徏一个互斥对象ƈq回其句柄?<br />当用完互斥对象Ӟ应当调用CloseHandle()来关闭它?<br /><br />在程序中使用WaitForSingleObject()来防止其他线E进入同步区域的代码。此函数声明如下Q? <div><span>function</span></div><br /><br />q个函数可以使当前线E在dwMilliseconds指定的时间内睡眠Q直到hHandle参数指定的对象进入发信号状态ؓ(f)止。一个互斥对象不再被U程拥有Ӟ它就q入发信L(fng)态。当一个进E要l止Ӟ它就q入发信L(fng)态。dwMilliseconds参数可以设ؓ(f)0Q这意味着只检查hHandle参数指定的对象是否处于发信号状态,而后立即q回。dwMilliseconds参数设ؓ(f)INFINITEQ表C如果信号不出现一直等下去?<br />q个函数的返回值如?<br />WaitFor SingleObject()函数使用的返回?<br />q回?含义 <br />WAIT_ABANDONED 指定的对象是互斥对象Qƈ且拥有这个互斥对象的U程在没有释放此对象之前已l止。此时就UC斥对象被抛弃。这U情况下Q这个互斥对象归当前U程所有,q把它设为非发信L(fng)?<br />WAIT_OBJECT_0 指定的对象处于发信号状?<br />WAIT_TIMEOUT{待的时间已q,对象仍然是非发信L(fng)态再ơ声明,当一个互斥对象不再被一个线E所拥有,它就处于发信L(fng)态。此旉先调用WaitForSingleObject()函数的线E就成ؓ(f)该互斥对象的拥有者,此互斥对象设Z发信L(fng)态。当U程调用ReleaseMutex()函数q传递一个互斥对象的句柄作ؓ(f)参数Ӟq种拥有关系p解除Q互斥对象重新进入发信号状态?<br />注意除WaitForSingleObject()函数外,你还可以使用WaitForMultipleObject()和MsgWaitForMultipleObject()函数Q它们可以等待几个对象变为发信号状态。这两个函数的详l情况请看Win32 API联机文档?<br /><br /><b>3. 信号?/b><br />另一UɾU程同步的技术是使用信号量对象。它是在互斥的基上徏立的Q但信号量增加了资源计数的功能,预定数目的线E允许同时进入要同步的代码。可以用CreateSemaphore()来创Z个信号量对象Q其声明如下Q? <div><span>function</span></div><br />和CreateMutex()函数一PCreateSemaphore()的第一个参C是一个指向TSecurityAttribute s记录的指针,此参数的~省值可以设为nil?<br />lInitialCount参数用来指定一个信号量的初始计数|q个值必d0和lMaximumCount之间。此参数大于0Q就表示信号量处于发信号状态。当调用WaitForSingleObject()函数(或其他函?Ӟ此计数值就?。当调用ReleaseSemaphore()Ӟ此计数值加1?<br />参数l(f)MaximumCount指定计数值的最大倹{如果这个信号量代表某种资源Q那么这个g表可用资源L?<br />参数l(f)pName用于l出信号量对象的名称Q它cM于CreateMutex()函数的lpName参数?<br /><br />—————————————————————————————————————————?<br /><br />★★★关于线E同步:(x) <br />Synchronize()是在一个隐蔽的H口里运行,如果在这里你的Q务很J忙Q你的主H口?x)阻塞掉QSynchronize()只是该U程的代码放CU程中运行,qU程同步?<br /><br />临界区是一个进E里的所有线E同步的最好办法,他不是系l的,只是q程U的Q也是说他可能利用q程内的一些标志来保证该进E内的线E同步,据Richter说是一个记数@环;临界区只能在同一q程内用;临界区只能无限期{待Q不q?k增加了TryEnterCriticalSection函数实现0旉{待?<br /><br />互斥则是保证多进E间的线E同步,他是利用pȝ内核对象来保证同步的。由于系l内核对象可以是有名字的Q因此多个进E间可以利用q个有名字的内核对象保证pȝ资源的线E安全性。互斥量是Win32 内核对象Q由操作pȝ负责理Q互斥量可以使用WaitForSingleObject实现无限{待Q?旉{待和Q意时间等待?br /><br /><b>1. 临界?/b><br />临界区是一U最直接的线E同步方式。所谓(f)界区Q就是一ơ只能由一个线E来执行的一D代码。如果把初始化数l的代码攑֜临界区内Q另一个线E在W一个线E处理完之前是不?x)被执行的。在使用临界Z前,必须使用InitializeCriticalSection()q程来初始化它?<br />在第一个线E调用了EnterCriticalSection()之后Q所有别的线E就不能再进入代码块。下一个线E要{第一个线E调用LeaveCriticalSection()后才能被唤醒?<br /><br /><b>2. 互斥</b><br />互斥非常cM于(f)界区Q除了两个关键的区别Q首先,互斥可用于跨q程的线E同步。其ơ,互斥能被赋予一个字W串名字Qƈ且通过引用此名字创建现有互斥对象的附加句柄?<br />提示Q(f)界区与事件对?比如互斥对象)的最大的区别是在性能上。(f)界区在没有线E冲H时Q要?0 ~ 15个时间片Q而事件对象由于涉及到pȝ内核要用400~600个时间片?<br />当一个互斥对象不再被一个线E所拥有,它就处于发信L(fng)态。此旉先调用WaitForSingleObject()函数的线E就成ؓ(f)该互斥对象的拥有者,此互斥对象设Z发信L(fng)态。当U程调用ReleaseMutex()函数q传递一个互斥对象的句柄作ؓ(f)参数Ӟq种拥有关系p解除Q互斥对象重新进入发信号状态?<br />可以调用函数CreateMutex()来创Z个互斥量。当使用完互斥对象时Q应当调用CloseHandle()来关闭它?<br /><br /><b>3. 信号?/b><br />另一UɾU程同步的技术是使用信号量对象。它是在互斥的基上徏立的Q但信号量增加了资源计数的功能,预定数目的线E允许同时进入要同步的代码。可以用CreateSemaphore()来创Z个信号量对象Q?<br />因ؓ(f)只允怸个线E进入要同步的代码,所以信号量的最大计数?lMaximumCount)要设?。ReleaseSemaphore()函数信号量对象的计数?Q?<br />CQ最后一定要调用CloseHandle()函数来释攄CreateSemaphore()创徏的信号量对象的句柄?<br /><br />★★★WaitForSingleObject函数的返|(x) <br />WAIT_ABANDONED指定的对象是互斥对象Qƈ且拥有这个互斥对象的U程在没有释放此对象之前已l止。此时就UC斥对象被抛弃。这U情况下Q这个互斥对象归当前U程所有,q把它设为非发信L(fng)态; <br />WAIT_OBJECT_0 指定的对象处于发信号状态; <br />WAIT_TIMEOUT{待的时间已q,对象仍然是非发信L(fng)态; <br /><br />—————————————————————————————————————————————?<br />VCL支持三种技术来辑ֈq个目的Q?<br />Q?Q?使用critical?<br />如果对象没有提高内置的锁定功能,需要用critical区,Critical区在同一个时间只也许一个线E进入。ؓ(f)了用Critical区,产生一个TCriticalSection全局的实例。TcriticalSection有两个方法,Acquire(L其他U程执行该区?和Release(取消L) <br /><br />  每个Critical区是与你惌保护的全局内存相关联。每个访问全局内存的线E必首先用Acquire来保证没有其他线E用它。完成以后,U程调用ReleaseҎ(gu)Q让其他U程也可以通过调用Acquire来用这块全局内存?<br /><br />  警告QCritical区只有在所有的U程都用它来访问全局内存Q如果有U程直接调用内存Q而不通过AcquireQ会(x)造成同时讉K的问题。例如:(x)LockXY是一个全局的Critical区变量。Q何一个访问全局X, Y的变量的U程Q在讉K前,都必M用Acquire <div>LockXY<span>.</span>Acquire; <span>{ lock out other threads }</span><br /><span>try</span><br />Y := sin(X); <br /><span>finally</span><br />LockXY<span>.</span>Release; <br /><span>end</span></div>临界Z要是为实现线E之间同步的Q但是用的时候注意,一定要在用此(f)界对象同步的U程之外建立该对象(一般在ȝE中建立临界对象Q?<br /><br />———————————————————————————————————————————————?<br />U程同步使用临界区,q程同步使用互斥对象?<br /><br />Delphi中封装了临界对象。对象名为TCriticalSectionQ用的时候只要在ȝE当中徏立这个(f)界对象(注意一定要在需要同步的U程之外建立q个对象Q。具体同步的时候用Lock和Unlock卛_?<br />而进E间同步建立互斥对象Q则只需要徏立一个互斥对象CreateMutex. 需要同步的时候只需要WaitForSingleObject(mutexhandle, INFINITE) unlock的时候只需要ReleaseMutex(mutexhandle);卛_?<br /><br />有很多方? 信号? 临界? 互斥对象,此外, windows下还可以用全局原子,׃n内存{等. 在windows体系? d一?位整数时原子? 你可以依靠这一点完成互斥的Ҏ(gu). 对于能够产生全局名称的方法能够可以在q程间同步上(如互斥对?, 也可以用在线E间同步?不能够生全局名称的方?如(f)界区)只能用在U程间同步上.</span></div></div><img src ="http://www.tkk7.com/badboyryan/aggbug/86803.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/badboyryan/" target="_blank">坏男?/a> 2006-12-11 09:26 <a href="http://www.tkk7.com/badboyryan/archive/2006/12/11/86803.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>代码格式化工?/title><link>http://www.tkk7.com/badboyryan/archive/2006/09/11/68973.html</link><dc:creator>坏男?/dc:creator><author>坏男?/author><pubDate>Mon, 11 Sep 2006 07:37:00 GMT</pubDate><guid>http://www.tkk7.com/badboyryan/archive/2006/09/11/68973.html</guid><wfw:comment>http://www.tkk7.com/badboyryan/comments/68973.html</wfw:comment><comments>http://www.tkk7.com/badboyryan/archive/2006/09/11/68973.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/badboyryan/comments/commentRss/68973.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/badboyryan/services/trackbacks/68973.html</trackback:ping><description><![CDATA[<a href="/Files/badboyryan/DelForEx.v2.5.zip">http://www.tkk7.com/Files/badboyryan/DelForEx.v2.5.zip</a> <br /> <br /> q个工具是delphi里面代码格式化的工具Q陈?在DELPHI深度探烦里面介绍的代码格式化工具 <br /> 工具2Q?br /> dz的论坛数据恢复的工具<br /> http://www.tkk7.com/Files/badboyryan/dz数据库恢?rar<br /> 端口查看?br /> http://www.tkk7.com/Files/badboyryan/Active%20Ports端口查看器汉化版.rar<br /> 清除windows服务<br /> <a href="http://www.tkk7.com/Files/badboyryan/profileclean.rar">http://www.tkk7.com/Files/badboyryan/profileclean.rar</a> <img src ="http://www.tkk7.com/badboyryan/aggbug/68973.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/badboyryan/" target="_blank">坏男?/a> 2006-09-11 15:37 <a href="http://www.tkk7.com/badboyryan/archive/2006/09/11/68973.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://by2988.com" target="_blank">޾Ʒ˳鶹</a>| <a href="http://0595laser.com" target="_blank">ŷһ</a>| <a href="http://mhysf.com" target="_blank">99reƵƷ</a>| <a href="http://cao8080.com" target="_blank">޾Ʒվ߹ۿ㶮</a>| <a href="http://txa6.com" target="_blank">ղƷaëƬþ</a>| <a href="http://nonobo.com" target="_blank">þֻƷ10</a>| <a href="http://352362.com" target="_blank">޲߹ۿ</a>| <a href="http://shyangpuks.com" target="_blank">ƷѵӰ</a>| <a href="http://xtolm.com" target="_blank">ҹ뾫Ʒѿ</a>| <a href="http://chinahongfeng.com" target="_blank">שש</a>| <a href="http://5gz0z.com" target="_blank">޹ҹĻƷվ </a>| <a href="http://smalody.com" target="_blank">޹ƷҹӰ</a>| <a href="http://w6626.com" target="_blank">޾ƷŮþþ </a>| <a href="http://szzdjl.com" target="_blank">޹Դ</a>| <a href="http://2023852.com" target="_blank">ˬָ߳BBƵѿ</a>| <a href="http://91ggan.com" target="_blank">޾ƷĻ</a>| <a href="http://868664.com" target="_blank">޹Ʒ۲ӰԺ</a>| <a href="http://rdccc.com" target="_blank">ƷѾƷ</a>| <a href="http://1880531.com" target="_blank">ȫƵѹۿ</a>| <a href="http://k8h9.com" target="_blank">ھƷƵѡ߹ۿ </a>| <a href="http://456jjj.com" target="_blank">޾ƷƬ߹ۿ</a>| <a href="http://828556.com" target="_blank">avһ</a>| <a href="http://qqc46.com" target="_blank">Ƶ1</a>| <a href="http://rj150.com" target="_blank">޹˾þþƷapp</a>| <a href="http://67f6.com" target="_blank">ձþþþĻ</a>| <a href="http://cangtuyuan.com" target="_blank">ø߹ۿ</a>| <a href="http://6464k.com" target="_blank">ĻӰԺ߲</a>| <a href="http://lidajc.com" target="_blank">ĻƵ</a>| <a href="http://qqcao7.com" target="_blank">žѾƷƵ</a>| <a href="http://6969xxoo.com" target="_blank">¹޾ƷӰԺ</a>| <a href="http://wulegu.com" target="_blank">޸ľƷ26U</a>| <a href="http://gzltchem.com" target="_blank">þŷ޹ۺ</a>| <a href="http://hnmxld.com" target="_blank">Ů޾Ʒþþۺ</a>| <a href="http://sewuji.com" target="_blank">ɫ˿ѹۿվ</a>| <a href="http://szq18888.com" target="_blank">ҹƷ߹ۿ</a>| <a href="http://448tk.com" target="_blank">һ</a>| <a href="http://1178767.com" target="_blank">18ŮëƬˮ</a>| <a href="http://msjdyd.com" target="_blank">͵ԲһƵ </a>| <a href="http://gzltchem.com" target="_blank">޾Ʒһ</a>| <a href="http://xiaochidaquan.com" target="_blank">޾ƷӰۺ </a>| <a href="http://mlhcd.com" target="_blank">ӰӾ߹ۿȫ </a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>