AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Daten reinpacken in Tbytes...

Ein Thema von m0sch3r · begonnen am 9. Mär 2005 · letzter Beitrag vom 16. Mär 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#11

Re: Daten reinpacken in Tbytes...

  Alt 11. Mär 2005, 16:11
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.

mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Daten reinpacken in Tbytes...

  Alt 11. Mär 2005, 16:13
ups, hab ich gar nicht gesehen das die Strings eine feste länge haben
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
m0sch3r

Registriert seit: 29. Mär 2004
121 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Daten reinpacken in Tbytes...

  Alt 11. Mär 2005, 16:26
Zitat von maximov:
Warum willst du das überhaupt in ein Array kopieren. Ist doch unnötig...

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..!!!
  Mit Zitat antworten Zitat
m0sch3r

Registriert seit: 29. Mär 2004
121 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: Daten reinpacken in Tbytes...

  Alt 16. Mär 2005, 15:30
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..!?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#15

Re: Daten reinpacken in Tbytes...

  Alt 16. Mär 2005, 15:44
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...)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
m0sch3r

Registriert seit: 29. Mär 2004
121 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Daten reinpacken in Tbytes...

  Alt 16. Mär 2005, 15:55
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..
  Mit Zitat antworten Zitat
m0sch3r

Registriert seit: 29. Mär 2004
121 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Daten reinpacken in Tbytes...

  Alt 16. Mär 2005, 16:00
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...))
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:34 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