请把下面的代码翻成pascal的。
可以马上给分!!! void IE_Imp_PalmDoc::_uncompress( buffer *m_buf )
{
buffer *m_new_buf = new buffer;
UT_uint16 i, j;
Byte c;
// set all of these to 0 initially
_zero_fill (m_new_buf->buf, BUFFER_SIZE);
for (i = j = 0; i < m_buf->position && j < BUFFER_SIZE; )
{
c = m_buf->buf[ i++ ];
if ( c >= 1 && c <= 8 )
while ( c-- && j < BUFFER_SIZE-1)
m_new_buf->buf[ j++ ] = m_buf->buf[ i++ ];
else if ( c <= 0x7F )
m_new_buf->buf[ j++ ] = c;
else if ( c >= 0xC0 && j < BUFFER_SIZE-2)
{
m_new_buf->buf[ j++ ] = ' ';
m_new_buf->buf[ j++ ] = c ^ 0x80;
}
else
{
int di, n;
unsigned int temp_c = c;
// c--> temp_c //tomy 2001.11.13
temp_c = (temp_c << 8) ;
temp_c = temp_c + m_buf->buf[ i++ ];
di = (temp_c & 0x3FFF) >> COUNT_BITS;
for (n = (temp_c & ((1 << COUNT_BITS) - 1)) + 3; n-- && j < BUFFER_SIZE
; ++j )
m_new_buf->buf[ j ] = m_new_buf->buf[ j - di ];
temp_c = 0;
}
}
UT_ASSERT(j <= BUFFER_SIZE);
memcpy( (void *)m_buf->buf, (void *)m_new_buf->buf, (size_t) j );
m_buf->position = j;
delete( m_new_buf );
}
可以马上给分!!! void IE_Imp_PalmDoc::_uncompress( buffer *m_buf )
{
buffer *m_new_buf = new buffer;
UT_uint16 i, j;
Byte c;
// set all of these to 0 initially
_zero_fill (m_new_buf->buf, BUFFER_SIZE);
for (i = j = 0; i < m_buf->position && j < BUFFER_SIZE; )
{
c = m_buf->buf[ i++ ];
if ( c >= 1 && c <= 8 )
while ( c-- && j < BUFFER_SIZE-1)
m_new_buf->buf[ j++ ] = m_buf->buf[ i++ ];
else if ( c <= 0x7F )
m_new_buf->buf[ j++ ] = c;
else if ( c >= 0xC0 && j < BUFFER_SIZE-2)
{
m_new_buf->buf[ j++ ] = ' ';
m_new_buf->buf[ j++ ] = c ^ 0x80;
}
else
{
int di, n;
unsigned int temp_c = c;
// c--> temp_c //tomy 2001.11.13
temp_c = (temp_c << 8) ;
temp_c = temp_c + m_buf->buf[ i++ ];
di = (temp_c & 0x3FFF) >> COUNT_BITS;
for (n = (temp_c & ((1 << COUNT_BITS) - 1)) + 3; n-- && j < BUFFER_SIZE
; ++j )
m_new_buf->buf[ j ] = m_new_buf->buf[ j - di ];
temp_c = 0;
}
}
UT_ASSERT(j <= BUFFER_SIZE);
memcpy( (void *)m_buf->buf, (void *)m_new_buf->buf, (size_t) j );
m_buf->position = j;
delete( m_new_buf );
}
解决方案 »
- 紧跟.NET步伐,续写昨日辉煌——Delphi Prism 路线图(2009.2)
- 动态创建access字段,并设置字段“允许空字符”!
- 通过软件设计师,大家来接分,顺便找工作:)
- 如果同时查询两台服务器将查得的结果同时显示在一个DBGRID上?
- FrameSniper(§绕瀑游龙§) 和Eastunfail(恶鱼杀手),请进,就刚才那打开子窗口的问题继续讨论。
- 一个有关HTTP协议的底层技术性问题(高分相送)
- 一个关于字符流的问题。
- 请问精通com的高手,能否在com对象中返回一个sream类型变量
- 一个字符串的问题。帮我。。。
- 关于combobox自画问题。
- 关于treeview与imagelist之间的关系,高手请进.
- 关于控件的
type
pBuffer : ^byte;
实参数与参数一定要相同的类型,例如
procedure Test;
var
i : Integer;
pt : ^byte;
begin
i := 10000;
Test1(pt);
end;procedure Test1(pt : ^byte);
var
j : Integer;
begin
inc(pt,16);
j := pt^;
end;
这样的话,程序一定有错,系统认为两个pt不是同一类型,虽然你定义的是一样的,一定要这样
Type
ptt : ^byte;
procedure Test;
var
i : Integer;
pt : ptt;
begin
i := 10000;
Test1(pt);
end;procedure Test1(pt:ptt);
var
j ; Integer;
begin
Inc(pt,2);
j := pt^;
end;
指针的移位一定要用Inc,dec。
有这些,相信你更改成pascal应该没用很大的问题。
提供一个网址,供你参考
http://www.csdn.net/Dev/Delphi/
商榷
0x3fff的Delphi用$3FFF表示
就是0x换$Delphi是没有memcpy的
可以是Move或CopyMemory
类型匹配也可以:=代替,有时用StrCopy等了,看具体需要