有哪位大侠对delphi和vb都懂的,麻烦将下面的一段delphi代码换成VB代码。
//以下是 encoded.pas 文件代码
unit Encoded;
interface
uses
Windows, Messages, SysUtils, Classes;
type
TEncodedStream = class(TFileStream)
private
Fkey:char;
public
constructor create(const Filename: string; Mode :word);
function Read (var buffer;count :longint ):longint; override;
function Write( const Buffer; count: longint): longint; override;
property Key : char read Fkey write Fkey default 'A';
end;
implementation
constructor TEncodedStream.create(const Filename:string; mode: word);
begin
inherited create(filename,Mode);
Fkey :='A';
end;
function TEncodedStream.Write(const Buffer; Count:longint):longint;
var
pBuf, pEnc :pchar;
I, EncVal :Integer;
begin
GetMem(pEnc,count);
try
pBuf:=Pchar(@buffer);
for I:=0 to Count -1 do
begin
Encval := (ord(pBuf[i])+ ord(Key)) mod 256;
pEnc[i]:= char (Encval);
end;
Result := inherited write (pEnc^,count);
finally
FreeMem(pEnc,count);
end;
end;
function TEncodedStream.Read(var Buffer; count:longint):longint;
var
pBuf, pEnc :pchar;
I, CountRead,EncVal :Integer;
begin
GetMem(pEnc,count);
try
CountRead:=inherited Read(pEnc^,count);
pBuf:=Pchar(@buffer);
for I:=0 to CountRead -1 do
begin
Encval := (ord(pEnc[i])- ord(Key)) mod 256;
pBuf[i]:= char (Encval);
end;
finally
FreeMem(pEnc,count);
end;
Result :=countRead;
end;
end. //encoded.pas over
//在主程序中用到了该pas文件:
procedure TForm1.creatEncfile(stroldfilename, strnewfilename:string);
var
stream1 : Tfilestream;
Encstr : TEncodedStream;
//strfilename : string;
begin
stream1 :=tfilestream.create(stroldfilename, fmopenread);
try
Encstr :=TEncodedStream.create(strnewfilename, fmopenwrite or fmcreate);
try
Encstr.copyfrom(stream1,stream1.size);
finally
Encstr.free;
end;
finally
stream1.free;
end;
end;
我想在vb中能有同样功能的一个接口函数creatEncfile(byval stroldfilename as string, byval strnewfilename as string)as boolean
有哪位大侠对delphi和vb都懂的,麻烦转换一下。
问题点数:0、回复次数:16Top
1 楼yaven365(天涯网客)回复于 2004-12-01 12:45:18 得分 0
本来想帮忙的,但是一看挺麻烦的,vb也好久没用了
帮up一下吧Top
2 楼enxi(恩熙 @_@)回复于 2004-12-01 13:18:35 得分 0
帮帮忙啦, yaven365(天涯网客)Top
3 楼enxi(恩熙 @_@)回复于 2004-12-01 13:21:28 得分 0
谁将这个功能做成delphi里的控件也好啊,这样我在vb里引用就可以了Top
4 楼dongge2000(目前叫西西了)回复于 2004-12-01 14:23:56 得分 0
UPTop
5 楼viena(维也纳N02)回复于 2004-12-01 14:29:06 得分 0
太麻烦了Top
6 楼ksaiy(阳光总在风雨后)回复于 2004-12-01 18:42:08 得分 0
代码太多了..............Top
7 楼zzlingaaa(小舟)回复于 2004-12-01 19:26:18 得分 0
汗!VB能用OO的代码么?Top
8 楼enxi(恩熙 @_@)回复于 2004-12-01 19:34:16 得分 0
求求各位了。分不够再加啊!Top
9 楼symk0014(莫克)回复于 2004-12-01 19:48:00 得分 0
begin和end在vb中用什么来着...好久没用VB了Top
10 楼wegotnothingtolosebu(t this is a dirty joke...)回复于 2004-12-01 20:13:13 得分 0
begin和end在vb中用什么来着...好久没用VB了
是{}吗?也好久没用VB了
Top
11 楼sosopro(随便写点)回复于 2004-12-01 21:25:55 得分 0
晕,死
VB哪有{}
比如一个函数
sub Add(a,b)
//code
end sub
还有,除非是vb.net否则VB没有继承Top
12 楼extcsdn(Studing VB now)回复于 2004-12-01 21:42:26 得分 0
upTop
13 楼symk0014(莫克)回复于 2004-12-01 21:52:02 得分 0
是忘了...Top
14 楼langziwujia007(※刑警队长※)回复于 2004-12-02 09:04:27 得分 0
我倒是懂点VB但是delphi是初学看不懂,对不起了楼主,帮你顶上去吧。Top
15 楼701701()回复于 2004-12-07 00:28:30 得分 0
上面的东西其实就是两个简单的加密和解密函数
可以直接写两个函数
我帮你写了其中一个
FUNCTION SUBA (Str as stirng) as string
dim s as stirng
dim n as long
for I:=0 to len(str) -1
s=right(left(str,i),1)''取字符串的第n位字符
n=(asc(s)+ asc(Key)) mod 256
SUBA=SUBA+chr (Encval)
next I
end function
还有一个同理,我就不写了
调用方法如果要对字符串s1加密则
s2=suba(s1)
Top
16 楼S.F.(chinasf.cnblogs.com)回复于 2004-12-07 01:23:48 得分 0
701707,你的函数考虑中文没有??:)_~~~Top




