AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Prism Binär statt Rückgriff auf Zeichenkodierungen!?
Thema durchsuchen
Ansicht
Themen-Optionen

Binär statt Rückgriff auf Zeichenkodierungen!?

Ein Thema von DerSascha · begonnen am 3. Mai 2005 · letzter Beitrag vom 3. Mai 2005
Antwort Antwort
DerSascha

Registriert seit: 14. Jan 2004
Ort: Niedersachsen
18 Beiträge
 
Delphi 7 Enterprise
 
#1

Binär statt Rückgriff auf Zeichenkodierungen!?

  Alt 3. Mai 2005, 12:43
Hallo,

ich habe folgendes Szenario:
Delphi-Quellcode:
TDatenpaket = packed record
  a:Byte;
  b:Int16;
  c:Int32;
  d:Boolean;
end;
Ich möchte nun den Inhalt eines Records diesen Typs übers Netz binär unter .NET senden.
Ich finde eine Reihe von Beispielen die auf Zeichenkodierungen und den damit zugänglichen
GetBytes()-, GetString()-Funktionen, usw. per Socket.Send() verschicken. Das ist für mein
Record meiner Meinung nach ungeeignet, weil nicht gewährleistet ist, dass die Bytes
unverändert bleiben.

Frage: Auf die Gefahr hin das diese blöd klingt, aber wie komme ich an die einzelnen Bytes
der Struktur ohne das Hilfskonstrukt der Stringfunktionen?

Meine derzeitige Lösung sieht so aus, dass ich die Strukturen als Serializable deklariere
und per BinaryFormatter und der Methode GetBytes einen MemoryStream benutze. Das
funktioniert, aber ich möchte das nicht dauerhaft über Serialisierung lösen. Das muß
doch einfacher gehen ... .

Gruß,
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Binär statt Rückgriff auf Zeichenkodierungen!?

  Alt 3. Mai 2005, 12:51
Hmm ka wie es in .Net ist, aber in D7 würd ich es pie mal daumen so machen:

Du fragst erstmal ab wie groß das Record ist, geht mit Delphi-Referenz durchsuchenSizeOf()
Und dann gehst vom Anfang des Records in Byteschritten bis zum erreichen der Größe durch...

Ich hoffe es hilft ^^

Bye
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Binär statt Rückgriff auf Zeichenkodierungen!?

  Alt 3. Mai 2005, 13:36
Zitat von Kedariodakon:
Du fragst erstmal ab wie groß das Record ist, geht mit Delphi-Referenz durchsuchenSizeOf()
Wird schon aufgrund des Boolen-Typs nicht gehen, da nicht festgelegt ist wie groß er ist. Unter Win32 wird er (vermutlich) 4 Byte groß sein, unter Win64 8 Byte. Deshalb wird z.B. auch der "File of <Type>"-Zugriff unter VCL.NET nicht mehr unterstützt, da die größen von Basistypen nicht mehr zur Kompilierungszeit bestimmbar sind.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Binär statt Rückgriff auf Zeichenkodierungen!?

  Alt 3. Mai 2005, 13:52
Zitat von Bernhard Geyer:
Wird schon aufgrund des Boolen-Typs nicht gehen, da nicht festgelegt ist wie groß er ist. Unter Win32 wird er (vermutlich) 4 Byte groß sein, unter Win64 8 Byte. Deshalb wird z.B. auch der "File of <Type>"-Zugriff unter VCL.NET nicht mehr unterstützt, da die größen von Basistypen nicht mehr zur Kompilierungszeit bestimmbar sind.
Gut das wuste ich ja nicht
Somit ist es wohl unabwendbar eine Kodierungsfunktion zu schreiben

Bye
Christian
  Mit Zitat antworten Zitat
DerSascha

Registriert seit: 14. Jan 2004
Ort: Niedersachsen
18 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Binär statt Rückgriff auf Zeichenkodierungen!?

  Alt 3. Mai 2005, 14:03
Danke für Eure Beiträge!

SizeOf() ist zwar benutzbar, allerdings gibt es immer 0 zurück, was die Aussage von

Bernhard stützt. Weiterhin ist SizeOf im Namespace Borland.Delphi.System, wobei
ich mir hier dann auch nicht sicher wäre, ob das mit einer Verwendung unter
Mono verträglich wäre, selbst wenn SizeOf() funktionieren würde.

Bin für weitere Vorschläge offen .

Gruß,
Sascha

Zitat:
Somit ist es wohl unabwendbar eine Kodierungsfunktion zu schreiben
Klingt gut und wie wäre der Ansatz ?
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:06 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