p:PInteger;
tmpP:Pinteger;
PCTemp:Pinteger;
p := PInteger(@IrisTemplate); //1024字节
我想在P的内存空间里在未位增加类似'123456789012345678'的数字字符序列tmpP:=p; //临时保存首地址
PCTemp := PChar(StringOfChar(#0, 18));StrPCopy(PCTemp, '123456789012345678');
p:=pointer(integer(p) + 1024);
CopyMemory(P^, PCTemp^, 18)//连接
增加完了之后,我如何在分解开,意思就是把刚才合并的二进制数据在分解成前1024后面是18个字符串。请指教,谢谢各位
tmpP:Pinteger;
PCTemp:Pinteger;
p := PInteger(@IrisTemplate); //1024字节
我想在P的内存空间里在未位增加类似'123456789012345678'的数字字符序列tmpP:=p; //临时保存首地址
PCTemp := PChar(StringOfChar(#0, 18));StrPCopy(PCTemp, '123456789012345678');
p:=pointer(integer(p) + 1024);
CopyMemory(P^, PCTemp^, 18)//连接
增加完了之后,我如何在分解开,意思就是把刚才合并的二进制数据在分解成前1024后面是18个字符串。请指教,谢谢各位
p : pchar;
m : array[0..17] of char;
begin
p := PInteger(@IrisTemplate); //1024字节
inc(p, 4); //跳过整数占用的4字节
CopyMemory(@m[0], p, 18); //m里就是你要的数据了
end;
procedure MergeStream2(var bSt1: TMemoryStream; bSt2: TMemoryStream);
var
Size: Integer;
begin
Size := 0;
bSt1.Seek(0, soFromEnd);
Size := bSt1.Size + SizeOf(Size);
bSt1.WriteBuffer(Size, SizeOf(Size)); Size := bSt1.Size;
bSt1.Position := 0;
bSt1.Seek(0, soFromEnd);
bSt1.CopyFrom(bSt2, 0);
Size:=bSt2.Size + Sizeof(Size);
bSt1.WriteBuffer(Size, Sizeof(Size));
bSt1.Position := 0;
end;procedure SplitStream2(var bSt1, bSt2: TMemoryStream);
var
Size, SizeX: Integer;
begin
bSt2.Size :=0;
Size:=0;
bSt1.Seek(-Sizeof(Size), soFromEnd);
bSt1.ReadBuffer(Size, SizeOf(Size));
SizeX := Size;
bSt1.Seek(-Size, soFromEnd);
bSt2.CopyFrom(bSt1, Size - SizeOf(Size));
bSt2.Position := 0; bSt1.Seek(-Sizeof(Size)-SizeX, soFromEnd);
bSt1.ReadBuffer(Size, SizeOf(Size));
bSt1.Seek(-Size -SizeX, soFromEnd);
bSt1.Size := Size - SizeOf(Size);
bSt1.Position := 0;
end;