Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Daten reinpacken in Tbytes... (https://www.delphipraxis.net/41862-daten-reinpacken-tbytes.html)

maximov 11. Mär 2005 16:11

Re: Daten reinpacken in Tbytes...
 
Zitat:

Zitat von SirThornberry
den müsstest den String mit angabe der Länge + Inhalt des Strings verschicken. Das heißt du müsstest bevor du was verschicken kannst die teile des records erstmal in einen buffer kopieren und dann kannst du den buffer verschicken.

Ne ne, die strings haben doch alle eine feste länge. Das problem ist, das er den Array-pointer verschickt und, daß das array überflüssig ist.

:)

SirThornberry 11. Mär 2005 16:13

Re: Daten reinpacken in Tbytes...
 
ups, hab ich gar nicht gesehen das die Strings eine feste länge haben :oops:

m0sch3r 11. Mär 2005 16:26

Re: Daten reinpacken in Tbytes...
 
Zitat:

Zitat von maximov
Warum willst du das überhaupt in ein Array kopieren. Ist doch unnötig...

Delphi-Quellcode:
form1.IdUDPClient1.SendBuffer(SomeRecord, sizeOf(SomeRecord));
..oder so. und auf der anderen seite genauso wieder rein. Allerdings kenne ich das interface auch nicht.

:)


ich arbeite mit indy 10 unter indy 9 hat alles bestens funktioniert..nur bei indy 10 sind paar funktionen anderes ...:((( ich schlise das Thema, und verlege es unter Netzwerk..!!!

m0sch3r 16. Mär 2005 15:30

Re: Daten reinpacken in Tbytes...
 
Zitat:

Delphi-Quellcode:
var
  MyRec: TMyRecord;
  MyArry: TBytes;
begin

  SetLength(MyArry, SizeOf(TMyRecord));
  Move(MyRec, MyArry[0], SizeOf(TMyRecord));

end;

Seltsamerweise, habe ich problemme beim "entpacken" - Daten aus einem Tbytes in MyRec wieder reinschreiben...



Delphi-Quellcode:
var
   dummy : TMyRec;
begin
 
move(EinTBytes, dummy, sizeof(EinTBytes));
die daten sind unlese bar...! was mache ich falsh..!?

himitsu 16. Mär 2005 15:44

Re: Daten reinpacken in Tbytes...
 
Arbeitet MOVE nicht mit Pointern?

Code:
procedure TForm1.UDPSendMyRecord(ip : string; SomeRecord: TUDPPacket);
var dummy : Tbytes;
begin
     setlength(dummy, sizeof(SomeRecord));
     move([color=#ff0000]@[/color]SomeRecord, [color=#ff0000]@[/color]dummy[0], sizeof(someRecord));
     form1.IdUDPClient1.Host := ip;
     form1.IdUDPClient1.SendBuffer(dummy);
end;
und zurück dann
Code:
     // setlength wird nicht benötigt
     move([color=#ff0000]@[/color]dummy[0], [color=#ff0000]@[/color]SomeRecord, sizeof(someRecord));
(Pointer ist nur so 'ne Vermutung...)

m0sch3r 16. Mär 2005 15:55

Re: Daten reinpacken in Tbytes...
 
die "@" Zeichen akzeptiert er nur vor TBytes, wenn ich ein "@" vor Myrecord hinpacke, sagt er es mus eine Variable da sein bzw Araay typ.

ich denke daran vieleicht mus man die Daten aus dem Tbytes nochmal in den String umwandeln..

m0sch3r 16. Mär 2005 16:00

Re: Daten reinpacken in Tbytes...
 
Funktioniert

Epfang:

Delphi-Quellcode:
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
  ABinding: TIdSocketHandle);
var
    paketik   : TUDPPacket;
begin
      move(Adata[0], paketik, sizeof(TUDPPacket));

Senden:

Delphi-Quellcode:
procedure TForm1.UDPSendMyRecord(ip : string; SomeRecord: TUDPPacket);
var
    dummy     : Tbytes;
begin
     setlength(dummy, sizeof(TUDPPacket));
     move(SomeRecord, dummy[0], sizeof(SomeRecord));
     form1.IdUDPClient1.Host := ip;
     form1.IdUDPClient1.SendBuffer(dummy);

end;

Danke allen für die Hilfe...:)))


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 Uhr.
Seite 2 von 2     12   

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