Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Record per Memorystream versenden - wie? (https://www.delphipraxis.net/64056-record-per-memorystream-versenden-wie.html)

alleinherrscher 26. Feb 2006 19:50


Record per Memorystream versenden - wie?
 
Hi, ich bastele gerade an nem Programm welches ein Livebild vom anderen Rechner anzeigen soll...dazu wird ein Referenzscreenshot gemacht und eine Routine prüft die änderungen nach x sekunden (hierbei werden Kästchen der größe 10x10 pixel erstellt, welche über den TCPIP Client von Indy versendet werden sollen - das ist soweit kein Problem. Nur wollte ich gerne noch die informationen mitschicken, wo das 10x10 Kästchen beim Remotecomputer hingezeichnet werden soll, damit das Bild anständig wieder zusammengesetzt wird. Also hab ich mir mal nen record gebastelt:

Delphi-Quellcode:
type
  bildelement=record
  x:integer;
  y:integer;
  bild:timage32;
  end;
(arbeite mit gr32)

So...problem ist nur: wie bastele ich aus dem Record n stream, den man versenden kann?

Mfg, Alleinherrscher

JocalAreaNetwork 26. Feb 2006 20:28

Re: Record per Memorystream versenden - wie?
 
Delphi-Quellcode:
var
  stream:tmemorystream
  rec:tmyrecord;

stream := nil;
try
  stream := tmemorystream.create;
  stream.write(rec, sizeof(rec));
  // verschicke stream
finally
  freeandnil(stream);
end;

marabu 26. Feb 2006 21:00

Re: Record per Memorystream versenden - wie?
 
Hallo.

Ich kenne die Komponente TImage32 nicht, aber ich vermute, dass die empfangende Seite mit dem Zeiger auf das Bild nicht viel anfangen kann. Ich würde die beiden Werte für x und y in den memory stream schreiben und anschließend das Bild selbst:

Delphi-Quellcode:
type
  TBildElement = packed record
    x: Integer;
    y: Integer;
    bild: TImage32;
  end;

var
  ms: TMemoryStream;
  rec: TBildElement;
begin
  ms := TMemoryStream.Create;
  try
    ms.write(rec, sizeof(Integer) shl 1);
    bild.SaveToStream(ms);
    ms.Position := 0;
    // verschicke stream
  finally
    ms.Free;
  end;
end;
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz