AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Ist es sinnvoll einen Record zu versenden?
Thema durchsuchen
Ansicht
Themen-Optionen

Ist es sinnvoll einen Record zu versenden?

Ein Thema von Goldesel · begonnen am 4. Apr 2007 · letzter Beitrag vom 5. Apr 2007
Antwort Antwort
Seite 2 von 2     12   
Muetze1
(Gast)

n/a Beiträge
 
#11

Re: Ist es sinnvoll einen Record zu versenden?

  Alt 5. Apr 2007, 02:31
Zitat von Neutral General:
Delphi-Quellcode:
var Str:String
    MS:TMemoryStream;
    l:Integer;
begin
  MS := TMemoryStream.Create;
  try
    l:= length(Str);
    MS.Write(l,SizeOf(Integer)); // nicht SizeOf(l) !!
    MS.Write(Str[1],l);
    // Stream speichern/laden/was auch immer
  finally
    MS.Free; // jaaa k FreeAndNil(MS) is noch besser... is es eigentlich "schlimm" wenn man nur .Free benutzt ?
  end;
end;
Eine Frage: Warum nicht "SizeOf(l)"? Ich sehe keinen einzigen Grund, ausser sogar den Vorteil, dass SizeOf() den richtigen Wert liefert, wenn man den Datentyp von l später ändert. Warum also dieser Hinweis? Auf welcher Grundlage?
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#12

Re: Ist es sinnvoll einen Record zu versenden?

  Alt 5. Apr 2007, 03:00
Da du nicht geschrieben hast, wohin du senden willst (HTTP-Server, FTP-Server, eigene Server-App, ...) gehe ich mal davon aus, dass dein Ziel wohl eine eigene Anwendung sein wird.

Erstmal würde ich dem Server nicht per "String" eine Anweisung geben, sondern per "Opcode". Soll heissen du definierst eine List von möglichen Operationen, die der Client vom Server anfordern kann, ähnlich wie Windows-Messages. Beispiel:
Delphi-Quellcode:
const
  CMD_RECEIVE_PACKET = 1;
  CMD_SEND_PACKET = 2;
  CMD_SEND_FILE = 3;
  CMD_FOO_BAR = ...;
Es wäre auch gut, wenn du dich auf ein Protokoll einigst (also sprich eine "Kommunikationsstruktur"), mit dem Server und Client sich verständigen.

Wie du über Indy 9 sendest, kann ich dir nicht sagen. Wir haben bisher nur mit Indy 8 gearbeitet und 8 zu 9 ist nicht mehr 1:1 kompatibel. Aber bei der 8 ging es z.B. über TIdTCPClient, dort hast du alle möglichen Funktionen: WriteCardinal, WriteBuffer, etc. In den Server-Code kann ich grad keinen Blick werfen, der liegt auf einem anderen Rechner. ^^

Hoffe aber trotzdem, dir etwas geholfen zu haben.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#13

Re: Ist es sinnvoll einen Record zu versenden?

  Alt 5. Apr 2007, 13:28
Zitat von Muetze1:
Zitat von Neutral General:
Delphi-Quellcode:
var Str:String
    MS:TMemoryStream;
    l:Integer;
begin
  MS := TMemoryStream.Create;
  try
    l:= length(Str);
    MS.Write(l,SizeOf(Integer)); // nicht SizeOf(l) !!
    MS.Write(Str[1],l);
    // Stream speichern/laden/was auch immer
  finally
    MS.Free; // jaaa k FreeAndNil(MS) is noch besser... is es eigentlich "schlimm" wenn man nur .Free benutzt ?
  end;
end;
Eine Frage: Warum nicht "SizeOf(l)"? Ich sehe keinen einzigen Grund, ausser sogar den Vorteil, dass SizeOf() den richtigen Wert liefert, wenn man den Datentyp von l später ändert. Warum also dieser Hinweis? Auf welcher Grundlage?
Hi.. Ja ok bei Zahlendatentypen geht das noch aber es geht nunmal nicht bei allem...(z.B records)

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  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 21:37 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