Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem beim Senden mit SendBuf (TFont, TColor) (https://www.delphipraxis.net/114794-problem-beim-senden-mit-sendbuf-tfont-tcolor.html)

faeX 31. Mai 2008 17:28


Problem beim Senden mit SendBuf (TFont, TColor)
 
Delphi-Quellcode:

TBefehl = record
  TagFont   : TFont;
  TagString : String;
  TagColor  : TColor;
  TagInteger : Integer
end;
Delphi-Quellcode:
procedure senden;
var
  Befehl : TBefehl;
begin
  Befehl.TagFont := Form1.font;
  Befehl.TagString := '';
  Befehl.TagColor := clBlack;
  Befehl.TagInteger := 0;
  Form1.Client.Socket.SendBuf(Befehl,sizeOf(Befehl));
end;
Dann kommt eine Fehlermeldung.
Wie kann ich dieses Problem lösen?

Fussball-Robby 31. Mai 2008 17:30

Re: Problem beim Senden mit SendBuf (TFont, TColor)
 
Welche Fehlermeldung kommt und wo tritt sie auf (Beim Senden oder vorher)?

faeX 31. Mai 2008 17:30

Re: Problem beim Senden mit SendBuf (TFont, TColor)
 
Delphi-Quellcode:
type
TBefehl = record
  TagFont   : TFont;
  TagString : String;
  TagColor  : TColor;
  TagInteger : Integer
end;
Das ist der richtige Quellcode.

faeX 31. Mai 2008 17:31

Re: Problem beim Senden mit SendBuf (TFont, TColor)
 
Beim Senden.

faeX 31. Mai 2008 17:31

Re: Problem beim Senden mit SendBuf (TFont, TColor)
 
Fehler beim Schreiben von Addresse 0000004 oder so ähnlich...

faeX 31. Mai 2008 17:35

Re: Problem beim Senden mit SendBuf (TFont, TColor)
 
Mist, schon wieder ein Fehler... Der String ist auf 255 Zeiten begrenzt.

Delphi-Quellcode:
TagString : String[255];

marabu 31. Mai 2008 17:41

Re: Problem beim Senden mit SendBuf (TFont, TColor)
 
Hi,

hinter TFont und string verbergen sich eigentlich Zeiger. Legst du sie in einem Record ab und verschiffst sie, dann geht die Bedeutung dieser Zeiger verloren. Im schlimmsten Fall kommt es zu den von dir beobachteten Fehlern.

Grüße vom marabu

faeX 31. Mai 2008 17:43

Re: Problem beim Senden mit SendBuf (TFont, TColor)
 
Wie kann ich dieses Problem den umgehen? Und was sind Zeiger? (Cursor sind wohl kaum gemeint)

MSSSSM 31. Mai 2008 17:49

Re: Problem beim Senden mit SendBuf (TFont, TColor)
 
zeiger sind sowas wie ein integer wert, der anzeigt wo im speicher z.b. der string liegt.


zum anderen...

Delphi-Quellcode:
  TColor = -$7FFFFFFF-1..$7FFFFFFF;

heisst, tColor=integerwert (?)

mfg


edit:
mit TColor(Wert) kannst du sie wieder zum TColor machen

und andersrum... TypeCast?

marabu 31. Mai 2008 17:52

Re: Problem beim Senden mit SendBuf (TFont, TColor)
 
Zeiger heißen auch Pointer. TFont ist eine Klasse und string ist ein spezieller Delphi Datentyp. Es sind diese beiden Eigenschaften, die eine direkte Übertragung zu einem Empfänger unmöglich machen.

Um einen unbegrenzt langen string zu übertragen, benötigst du ein Protokoll - z.B. kannst du zuerst die Anzahl der Zeichen avisieren und anschließend die Zeichen des Strings übermitteln. Das funktioniert mit kurzen und langen Strings gleichermaßen gut.

Beim Font solltest du besser den Namen und die Schriftgröße verschicken, das sind Zeichen und Zahlen, da gibt es kaum Probleme.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:11 Uhr.
Seite 1 von 3  1 23      

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