procedure TForm1.Button3Click(Sender: TObject);
var
s1:string;
s2:string;
filename: string;
m1:TMemoryStream;
buffer:array of byte;begin
s1:='123';
s2:='456';
filename:=ExtractFilePath(paramstr(0))+'01.bmp';
m1:=m1.Create;
m1.LoadFromFile(filename);
//现在怎么把 字符串 '123' '456' 和 流读到 数组 buffer;
end;//现在怎么把 字符串 '123' '456' 和 流读到 数组 buffer;
希望通过 CopyMemory 来实现?各位大哥这样的程序要怎么写?谢谢!
var
s1:string;
s2:string;
filename: string;
m1:TMemoryStream;
buffer:array of byte;begin
s1:='123';
s2:='456';
filename:=ExtractFilePath(paramstr(0))+'01.bmp';
m1:=m1.Create;
m1.LoadFromFile(filename);
//现在怎么把 字符串 '123' '456' 和 流读到 数组 buffer;
end;//现在怎么把 字符串 '123' '456' 和 流读到 数组 buffer;
希望通过 CopyMemory 来实现?各位大哥这样的程序要怎么写?谢谢!
解决方案 »
- 在Image控件上按住鼠标左键,拖动鼠标离开Image控件,为什么不能触发Form的OnMouseMove事件?应该怎么做才能实现?
- 怎样打印一百份不同的数据
- 使用frame实现数据库编辑工作,使用TDataSource还是Tadoquery作为frame里面的数据源?
- 在keypress事件中如何读取键值
- 关于数据修改的问题(sql 2000+delphi 6.0)
- 中文短消息的编码格式,实现GSM模块中文短消息的传送
- 变体记录
- 为什么实现不了模糊查询?
- 请问,实现窗体透明之后,移动窗体如何实现刷新窗体。
- 我的机器的开机密码不能用,也就是Enable = False,请问是不是跳线被拔了?
- 诚邀青岛的同行去北京玩
- IE插件中置顶广告是怎么做的
setlength(buffer, 6+m1.size);
b := @buf[0];
CopyMemory(b, @s1[1], length(s1));
inc(b, 3);
CopyMemory(b, @s2[1], length(s1));
inc(b, 3);
Stream.Write(b, Stream.Size);不知道对不对
var
s1 : string;
s2 : string;
filename: string;
m1 : TMemoryStream;
buffer : array of byte;
b : PByte;
begin
......
setlength(buffer, 6+m1.size);
b := @buf[0];
CopyMemory(b, @s1[1], length(s1));
inc(b, 3);
CopyMemory(b, @s2[1], length(s1));
inc(b, 3);
Stream.Seek(0, soFromBeginning);
Stream.Write(b, Stream.Size);
end;
请大哥再帮我看看下面这个问题:procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
len:longint;
buffer:array of byte;
m1:TMemoryStream;
s1:string;
s2:string;
begin
len:=Socket.ReceiveLength;
Socket.ReceiveBuf(buffer,len);
//现在怎么得到 字符串 '123' '456' 和 流 m1
(意思,我需要把 1-3 个 赋给 s1 ,4-6 赋给 s2 ,后面的辅给流 m)
end;谢谢!
帮我看看这个问题,好吗?procedure TForm1.Button1Click(Sender: TObject);
var
s1 : string;
s2 : string;
buffer : array of byte;
begin
s1:='123';
s2:='456';
setlength(buffer,6);
CopyMemory(@buffer[0], @s1[1], length(s1));
CopyMemory(@buffer[3], @s2[1], length(s2));
end;编译时,提示 内存错误的那种
这是什么原因?谢谢!
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
len:longint;
buffer:array of byte;
m1:TMemoryStream;
s1:string;
s2:string;
begin
len:=Socket.ReceiveLength;
Socket.ReceiveBuf(buffer,len);
//现在怎么得到 字符串 '123' '456' 和 流 m1
(意思,我需要把 1-3 个 赋给 s1 ,4-6 赋给 s2 ,后面的辅给流 m)
end;谢谢!
var
s1 : string;
s2 : string;
buffer : array of byte;
begin
s1:='123';
s2:='456';
setlength(buffer,6);
CopyMemory(@buffer[0], @s1[1], length(s1));
CopyMemory(@buffer[3], @s2[1], length(s2));
end;编译时,提示 内存错误的那种
这是什么原因?这段代码没看出有问题, 应该能正常编译的。
有可能是Delphi本身有问题,造成编译时Delphi出错了。
var
len : longint;
rev : Longint;
buffer:array of byte;
m1 :TMemoryStream;
s1 :string;
s2 :string;
begin
len:=Socket.ReceiveLength;
SetLength(buffer, len);
rev := Socket.ReceiveBuf(buffer,len);
if rev >= 6 then
begin
SetLength(s1, 3);
CopyMemory (@s1[1], @buffer[0], 3);
SetLength(s2, 3);
CopyMemory (@s2[1], @buffer[3], 3);
m1 := TMemoryStream.Create;
try
m1.Seek(0, soFromBeginning);
m1.Write(buffer[6], rev - 6);
//可以开始处理s1, s2和m1的内容了
......
finally
FreeAndNil(m1);
end;
end;
buffer := nil;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
s1: string;
s2: string;
s3: string;
s4: string;
// m1 : TMemoryStream;
buffer : array of byte;
begin
s1:='123';
s2:='456';
s3:=' ';
s4:=' ';
setlength(buffer,6); // 申请空间
CopyMemory(@buffer[0], @s1[1], length(s1)); //把字符串 '123' 拷贝到 buffer
CopyMemory(@buffer[3], @s2[1], length(s2)); //把字符串 '456' 拷贝到 buffer
CopyMemory(@s3[1],@buffer[0],3); //得到前面 3个 字符
CopyMemory(@s4[1],@buffer[3],3); //得到 4-6 个字符
showmessage(s3);
showmessage(s4);end;错误是没有了
但是 show 出的字符串 为 '12' ,'45'
而不是 '123' ,'456'我哪里还错了?谢谢!