[Delphi] NMStream i coś dziwnego z przesyłaniem JPEG

0

Hmmm... no więc mam takie dwie procedury i zastanawiam się czy
coś jest w nich nie tak, bo wygląda to tak że jak kliknę na
Button1 to w drugim programie na Imagu pojawia screen tyle że
przeważnie się pojawia a czasami program się wysypuje z jakimś
Acces Violation czy jakoś tak, no i nie wiem dlaczego, już od
pół godziny klikam w ten button i nie wiem dlaczego czasami
działa a czasami nie (robie odstępy czasowe między kliknięciami)

procedure TForm1.Button1Click(Sender: TObject);
var
Bitmap : TBitmap;
ScreenDC : HDC;
FJpeg : TJpegImage;
MStream : TStream;
begin
Bitmap := TBitmap.Create;
Bitmap.Width := GetSystemMetrics(SM_CXSCREEN);
Bitmap.Height := GetSystemMetrics(SM_CYSCREEN);
ScreenDC := GetDC(0);
BitBlt(Bitmap.Canvas.Handle, 0, 0, Bitmap.Width,
Bitmap.Height, ScreenDC, 0, 0, SRCCOPY);
ReleaseDC(0, ScreenDC);
FJpeg := TJpegImage.Create;
FJpeg.Assign(Bitmap);
FJpeg.CompressionQuality := 50;
FJpeg.Compress;
MStream := TMemoryStream.Create;
FJpeg.SaveToStream(MStream);
try
NMStrm1.PostIt(MStream);
finally
Bitmap.Free;
FJpeg.Free;
MStream.Free;
end;
end;

procedure TForm1.NMStrmServ1MSG(Sender: TComponent;
const sFrom: String; strm: TStream);
var
FJpeg : TJpegImage;
begin
FJpeg := TJpegImage.Create;
FJpeg.LoadFromStream(strm);
Image1.Picture.Assign(FJpeg);
FJpeg.Free;
end;

Może to jakiś wewnęczny błąd komponentów NMStream i NMStreamServ ?

0

Mi tez taki idzie jak Tobie ;(

0

Witka... zrobilem programek na podstawie tego kodu jaki podales i dziala bez zastrzezen....nie wiem czemu Tobie cos tam wyskakuje....mi za kazdym razem pokazuje sie screen i ogolnie mowiąc jest oki :)

0

umnie tyź ni dzioło :( ;-(

0

Nie nam się na tym komponenci ale w socketach jest ograniczenie do wielkości przesyłanych danych. Najprościej (a możnie nie tak prosto), jest jak to ja srobiłem walnąć obrazek do bufera i paketami przesyłać do serwera (powiedzmy po 1kB)....u mnie działa pięknie ;) i mogę sobie transfer obliczyć ;)

0

Nie nam się na tym komponenci ale w socketach jest ograniczenie do wielkości przesyłanych danych. Najprościej (a możnie nie tak prosto), jest jak to ja srobiłem walnąć obrazek do bufera i paketami przesyłać do serwera (powiedzmy po 1kB)....u mnie działa pięknie ;) i mogę sobie transfer obliczyć ;)

Coś tak czułem że chyba się będzie trzeba z Socketami grzebać.

A swoją drogą ktoś by mógł napisać komponent który
przesyłał by wszystko we wszystkie strony.

0

Piechnat, w Delphi jest takiego jak breakpoint, dzieki czemu mozesz zlokalizowac w jakiej linii wystepuje blad.

1 użytkowników online, w tym zalogowanych: 0, gości: 1