var
mdata:array[1..10000] of char;
k:integer;
p: Pointer;
FStream:TMemoryStream;
Jpeg:TJPEGImage;
begin
FStream:=TmemoryStream.create;
Jpeg:= TJpegImage.Create;
Jpeg.CompressionQuality:=50; //压缩比
try
Jpeg.Assign(Image10.Picture.Bitmap);
Jpeg.SaveToStream(FStream);
P:=FStream.Memory;
FStream.Position:=0;
for k:=1 to FStream.Size do mdata[k]:=pchar(dword(P)+k-1)^;
IdUDPClient1.SendBuffer(mdata,FStream.Size); //UDP 发送
finally
Jpeg.Free;
end;
FStream.Free;
注意数据类型,我是想用cpp吧这个程序翻译用在builder里面。
mdata:array[1..10000] of char;
k:integer;
p: Pointer;
FStream:TMemoryStream;
Jpeg:TJPEGImage;
begin
FStream:=TmemoryStream.create;
Jpeg:= TJpegImage.Create;
Jpeg.CompressionQuality:=50; //压缩比
try
Jpeg.Assign(Image10.Picture.Bitmap);
Jpeg.SaveToStream(FStream);
P:=FStream.Memory;
FStream.Position:=0;
for k:=1 to FStream.Size do mdata[k]:=pchar(dword(P)+k-1)^;
IdUDPClient1.SendBuffer(mdata,FStream.Size); //UDP 发送
finally
Jpeg.Free;
end;
FStream.Free;
注意数据类型,我是想用cpp吧这个程序翻译用在builder里面。
TMemoryStream*FStream = new TMemoryStream;
TJpegImage* Jpeg = new TJpegImage;
Jpeg->CompressionQuality = 50;
try{
Jpeg->Assign( Image10->Picture->Bitmap);
Jpeg->SaveToStream( FStream );
unsigned int* p = (unsigned int*)FStream->Memory;
FStream->Position = 0;
for(int k=0;k< FStream->Size ; k++ ){
mdata[k] = p;
}
IdUDPClient1->SendBuffer(mdata,FStream->Size );
}catch(...){
}
Jpeg->Free();
FStream->Free();
Poiter也是void*
我是看使用的方式才写上指定类型的 for(int k=0;k< FStream->Size ; k++ ){
mdata[k] = p[k];//这里应该这样写,之前写错了
}