![]() |
Problem beim Senden mit SendBuf (TFont, TColor)
Delphi-Quellcode:
TBefehl = record TagFont : TFont; TagString : String; TagColor : TColor; TagInteger : Integer end;
Delphi-Quellcode:
Dann kommt eine Fehlermeldung.
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; Wie kann ich dieses Problem lösen? |
Re: Problem beim Senden mit SendBuf (TFont, TColor)
Welche Fehlermeldung kommt und wo tritt sie auf (Beim Senden oder vorher)?
|
Re: Problem beim Senden mit SendBuf (TFont, TColor)
Delphi-Quellcode:
Das ist der richtige Quellcode.
type
TBefehl = record TagFont : TFont; TagString : String; TagColor : TColor; TagInteger : Integer end; |
Re: Problem beim Senden mit SendBuf (TFont, TColor)
Beim Senden.
|
Re: Problem beim Senden mit SendBuf (TFont, TColor)
Fehler beim Schreiben von Addresse 0000004 oder so ähnlich...
|
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];
|
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 |
Re: Problem beim Senden mit SendBuf (TFont, TColor)
Wie kann ich dieses Problem den umgehen? Und was sind Zeiger? (Cursor sind wohl kaum gemeint)
|
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? |
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 10:02 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