AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Socket und ReciveBuf -> keine Daten
Thema durchsuchen
Ansicht
Themen-Optionen

Socket und ReciveBuf -> keine Daten

Ein Thema von Dragon27 · begonnen am 8. Sep 2007 · letzter Beitrag vom 8. Sep 2007
 
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Socket und ReciveBuf -> keine Daten

  Alt 8. Sep 2007, 10:33
Hallo Andy,

aus deiner Rückfrage schließe ich, dass ich mich nicht verständlich genug ausgedrückt habe. Für die Kommunikation definierst du dir einen universellen Puffer:

Delphi-Quellcode:
type
  PBuffer = ^TBuffer;
  TBuffer = record
    Size: Cardinal;
    Data: array [0..0] of Byte;
  end;
Intern kannst du mit beliebigen Puffern arbeiten, so auch mit deinem Record RNachricht. Ich würde diese Records als Klassen ausbilden. Was du dir dann aber unbedingt noch schreiben musst, dass sind Marshalling (und Unmarshalling) -Routinen, die deine Daten für den Versand umformen:

Delphi-Quellcode:
type
  IMarshal = interface(IInterface)
    procedure Marshal(var buffer: PBuffer);
    procedure Unmarshal(const buffer: PBuffer);
  end;

  TNachricht = class(TInterfacedObject, IMarshal)
    Befehl: string;
    Text: string;
    Nickname: string;
    // IMarshal
    procedure Marshal(var buffer: PBuffer);
    procedure Unmarshal(const buffer: PBuffer);
  end;
Die Marshalling-Prozedur könnte dann so aussehen:

Delphi-Quellcode:
procedure TNachricht.Marshal(var buffer: PBuffer);
var
  msg: string;
  size: Cardinal;
begin
  msg := Befehl + sLineBreak + Text + sLineBreak + Nickname;
  size := SizeOf(buffer.Size) + Length(msg);
  GetMem(buffer, size);
  buffer.Size := size;
  Move(msg[1], buffer.Data, size);
end;
An der Unmarshalling-Prozedur kannst du dich ja mal versuchen.

Alles nur getippt und nicht getestet.

Freundliche Grüße
  Mit Zitat antworten Zitat
 


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 17:47 Uhr.
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