Ne trebam slati kao text. Trebam da šaljem niz byte-ova od kojih su prva četiri konstantna, 5-ti redni broj merenja koji veže za sobom još dodatna 4 byte-a. I tako do zadnjeg merenja.
Primer: Ovo je procedura preko koje ja preuzmem podatke sa DDE servera (aplikacija + topic), I ovo je rađeno u Delphi 4.0.
***Ja bih trebao da ovu poruku da preuzmem i konstatno da šaljem na drugi računar***.
I to sve odraditi u Delphi 7.0
Da li može preko TMemoryStream-a slično ovo i u sedmici. Probao sam i ne mogu da odradim.
Ako znaš rešenje pomozi. Hvala još jedanput!
procedure TForm1.PrepareSendMessage(Sender: TObject);
type PSingle= ^Single;
var TmpStream: array of byte;
MyStream: TMemoryStream;
P: Pointer;
PS : PSingle;
SingleArray: array[0..3] of byte;
DuzinaPoruke: Integer;
BrojByte,i: Integer;
Vrijednost: Single;
BrojMreza: Integer;
begin
// duzina poruke = 3 byte zaglavlja +
// + 1 byte koji oznacava broj analognih mjerenja +
// + (NumberAnMjerenja*4) byte koji znace n mjerenja sa po 4 byte +
// + 1 byte koji oznacava broj digitalnih mjerenja +
// + (NumberDiMjerenja) byte koji znace n mjerenja sa po 1 byte +
// + 1 byte koji oznacava broj digitalnih mjerenja sa 2 byte
// Struktura zaglavlja je
// 1 byte vrijednost 1 - oznacava da je u pitanju mjerenje
// 1 byte vrijednost 8 - oznacava da je u pitanju razmjena sa centrima
// 1 byte vrijednost DeviceID - oznacava broj uredjaja koji salje poruke
for i:=0 to (NumberAnItems-1) do
begin
Vrijednost_Labela
.caption:=(ItemAnalogni.Text);
end;
DuzinaPoruke:=3+1+(NumberAnItems*5)+1+(NumberDiItems*2)+1;
SetLength(TmpStream,DuzinaPoruke);
TmpStream[0]:=1;
TmpStream[1]:=8;
TmpStream[2]:=DeviceID;
TmpStream[3]:=NumberAnItems;
BrojByte:=4;
For i:=0 to (NumberAnItems-1) do
begin
TmpStream[BrojByte]:=i;
P:=@SingleArray;
PS:=PSingle(P);
if ItemAnalogni.Text<>'' then
begin
try
Vrijednost:=StrToFloat(ItemAnalogni.Text);
except
on EConvertError do Vrijednost:=0;
end;
end;
PS^:=Vrijednost;
TmpStream[BrojByte+1]:=SingleArray[0];
TmpStream[BrojByte+2]:=SingleArray[1];
TmpStream[BrojByte+3]:=SingleArray[2];
TmpStream[BrojByte+4]:=SingleArray[3];
BrojByte:=BrojByte+5;
end;
for BrojMreza:=0 to (NumberNetworkSend-1) do
begin
MyStream := TMemoryStream.Create;
try
MyStream.Write(TmpStream[0],DuzinaPoruke);
UDPSender[BrojMreza].SendStream(MyStream);
finally
MyStream.Free;
end;
end;
end;
NS