关于提取SysUtils单元中的Format函数问题,请高手帮忙。 ( 积分: 100 )

  • 主题发起人 主题发起人 devilsniffer
  • 开始时间 开始时间
D

devilsniffer

Unregistered / Unconfirmed
GUEST, unregistred user!
由于本人想把程序体积缩小,所以想把SysUtils单元的中的一个函数Format提取出来。<br><br>本人调用一个域名转换IP的函数,这个函数当中涉及到format函数,而我又不想使用SysUtils单元,因为添加整个单元,无用代码太多,程序体积增大。<br>所以想把format函数从sysutils单元中剥离出来,直接供程序调用。但是在实际操作过程中,发现这个函数涉及到很多其它函数,分离非常复杂,所以请高手帮帮忙。。。。
 
由于本人想把程序体积缩小,所以想把SysUtils单元的中的一个函数Format提取出来。<br><br>本人调用一个域名转换IP的函数,这个函数当中涉及到format函数,而我又不想使用SysUtils单元,因为添加整个单元,无用代码太多,程序体积增大。<br>所以想把format函数从sysutils单元中剥离出来,直接供程序调用。但是在实际操作过程中,发现这个函数涉及到很多其它函数,分离非常复杂,所以请高手帮帮忙。。。。
 
即使use SysUtils单元,delphi编译的时候也是只编译用到的函数的
 
加这个单元,程序体积变化不太大,可不像窗体单元;
 
同意 金卡绣球jk8.com 的说法
 
提炼出来,最起码可以减少10多K的体积。
 
[:D]没多大的必要,你把EXE压缩下比你的做法好的多,如用ASPack。
 
靠,你们怎么都这样啊,非要把人往斜路上拽。<br>我是想提炼一个函数出来,你们非要说没关系。我用API写的程序,需要的就是体积小。减小10K或者几K,对我来说很重要。你们不要说的没关系。
 
提取非常困难,不如参照原函数,然后重写。Delphi的大多数函数都是你调用我,我调用你绞在一起,很难分开。
 
您要确定您的程序的其他地方不再会用到sysutils,否则您不是又绕回去了。实际上我个人认为Delphi的程式代码是有点大,不过现在的PC不会在乎多用1-2M的空间来存储,您也没必要为多用1-2M的Memory而恼火.[:)]
 
我哪里把你往斜路上拽了嘛!呵呵<br>你要提取又不是不可以的:<br>//这里的代码已删(影响版面,^-^)<br>但是你又怕麻烦,那你就自己写个Format函数嘛。
 
我来灌水, ^^<br>function _wvsprintf(const Output, Format: PChar; const Arg_List: array of DWORD): Integer;<br>begin<br> &nbsp;Result := Windows.wvsprintf(Output, Format, @Arg_List[Low(Arg_List)]);<br>end;
 
哈哈哈,楼上的楼上,我已经帮他提都提出来了。
 
to:ak_2005 &nbsp; 你这个提取不完全,还差很多呢! 我想你自己都没测试过,怎么就可以发出来给人家?
 
难道楼主不会提取吗?!他是怕麻烦而已。<br>我那么做的意思是告诉他只要不怕麻烦就会得到他想要的,我当然没做完了。
 
给多少分呀??呵呵~玩笑~~不用其他函数支持~用API:wvsprintf~以前没有注意这个函数~^_^~55<br>{<br>function Format( const fmt: string; params: array of const ): String;<br>var <br> Buffer: array[ 0..2047 ] of Char;<br> ElsArray, El: PDWORD;<br> I : Integer;<br> P : PDWORD;<br>begin<br> ElsArray := nil;<br> if High( params ) &gt;= 0 then<br> &nbsp;GetMem( ElsArray, (High( params ) + 1) * sizeof( Pointer ) );<br> El := ElsArray;<br> for I := 0 to High( params ) do<br> begin<br> &nbsp;P := @params[ I ];<br> &nbsp;P := Pointer( P^ );<br> &nbsp;El^ := DWORD( P );<br> &nbsp;Inc( El );<br> end;<br> wvsprintf( @Buffer[0], PChar( fmt ), PChar( ElsArray ) );<br> Result := Buffer;<br> if ElsArray &lt;&gt; nil then FreeMem( ElsArray );<br>end;<br>}
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
915
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部