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 1 von 2  1 2      
m0sch3r

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

Daten reinpacken in Tbytes...

  Alt 9. Mär 2005, 21:17
wie kann ich meine struktur
Delphi-Quellcode:

TUDPPacket = record
                case ID : integer of
                $00 : (ClientReceive00 : TSearchFile);
                $11 : (ClientReceive11 : TSearchFile);
                ******************************************
 
TSearchFile = record
                SFilename : string[100];
                SMD5 : string[50];
                SArtist : string[50];
                STitle : string[50];
                STyp : string[4];
                SSize : String[10];
                S_IP : string[16];
                end;
in eine Struktur vom Typ Tbytes reinpacken...!?
TBytes = array of Byte;
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#2

Re: Daten reinpacken in Tbytes...

  Alt 10. Mär 2005, 10:05
Mit SizeOf ermittelst du die Größe deiner Records. Mit SetLength setzt du die Größe deines Array's. Und mit Move kopierst du die Daten.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
m0sch3r

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

Re: Daten reinpacken in Tbytes...

  Alt 10. Mär 2005, 14:12
Köntest du eventuell ein beispiel zeigen...!?
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#4

Re: Daten reinpacken in Tbytes...

  Alt 11. Mär 2005, 09:34
Delphi-Quellcode:
type
  TMyRecord = packed record
  ...
  end;
Delphi-Quellcode:
type
  TBytes = array of Byte;
Delphi-Quellcode:
var
  MyRec: TMyRecord;
  MyArry: TBytes;
begin

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

end;
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
m0sch3r

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

Re: Daten reinpacken in Tbytes...

  Alt 11. Mär 2005, 15:40
ich habe es auf die Weise gemacht...
Delphi-Quellcode:
procedure TForm1.UDPSendMyRecord(ip : string; SomeRecord: TUDPPacket);
var
    dummy : Tbytes;
begin
     setlength(dummy, sizeof(SomeRecord));
     move(SomeRecord, dummy[0], sizeof(someRecord));
     form1.IdUDPClient1.Host := ip;
     form1.IdUDPClient1.SendBuffer(dummy);
end;
Leider beim Empfang sind die Daten nicht mehr wieder erkennbar
sie werden folgendermaßen "Entpackt

Delphi-Quellcode:
var
    paketik : TUDPPacket;
begin
          move(Adata, paketik, sizeof(adata));
          //Wenn man hier den wert von paketik untersucht dann erhält er nicht die gewünschten daten
Liegt es vieleicht an der Methode wie ich die Daten "entpacke"......!?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Daten reinpacken in Tbytes...

  Alt 11. Mär 2005, 15:47
Kann es sein, dass du den Zeiger verschickst? Die Adresse ist im Adressraum des anderen Prozesses natürlich nicht mehr gültig.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

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

Re: Daten reinpacken in Tbytes...

  Alt 11. Mär 2005, 16:00
Auch für dieses problem würden sich serialisierbare objekte anbieten. Records sind version-anfällig und blöde in der handhabung. -> Hier im Forum suchendpCollection rules
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
m0sch3r

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

Re: Daten reinpacken in Tbytes...

  Alt 11. Mär 2005, 16:30
Besteht denn eine effiziente Möglichkeit, ein Record meines typs (sehe oben) per UDP zu verschicken (indy 10, Es ist im prinzip ein andreres Thema.. )
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

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

Re: Daten reinpacken in Tbytes...

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

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
 
#10

Re: Daten reinpacken in Tbytes...

  Alt 11. Mär 2005, 16:59
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:54 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