Autor Beitrag
GhosteeR
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 17.02.09 12:23 
Bei folgendem Programm bekomme ich beim Versenden einen ESocketError, kann mir allerdings nicht erklären wieso.
Hat jemand eine Idee?
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls;

type
  customrec = record
               text:string[20];
               zahl:byte;
              end;
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    Memo1: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 serversocket1.Port:= 10024;
 serversocket1.Open;
 clientsocket1.Port:=10024;
 clientsocket1.host:= '127.0.0.1';
 clientsocket1.open;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 serversocket1.Free;
 clientsocket1.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var rec:customrec;
begin
 with Rec do begin
  Text := Edit1.Text;
  Zahl := StrToInt(Edit2.Text);
 end;
 Clientsocket1.Socket.SendBuf(Rec,sizeof(Rec));
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var rec:customrec;
    msg:string[20];
    nummer:byte;
begin
 serversocket1.socket.ReceiveBuf(Rec,SizeOf(Rec));
 msg:= rec.text;
 nummer:=rec.zahl;
 Memo1.Lines.Add(msg);
 Memo1.Lines.Add(IntToStr(nummer));
end;

end.

Moderiert von user profile iconNarses: Topic aus Delphi Tutorials verschoben am Di 17.02.2009 um 11:37
Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 17.02.09 12:41 
Moin und :welcome: im Forum!

user profile iconGhosteeR hat folgendes geschrieben Zum zitierten Posting springen:
Bei folgendem Programm bekomme ich beim Versenden einen ESocketError, kann mir allerdings nicht erklären wieso.
Hat jemand eine Idee?
Ja, gleich mehrere: ;):les: :think: :)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
GhosteeR Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 17.02.09 13:01 
Habe ich mir teilweise schon angeguckt.
Allerdings habe ich im Internet gefunden, dass das Record verschicken trotzdem funktioniert.
Falls das mit dem SendBuf nicht richtig funktioniert, gibt es eine andere Möglichkeit Records zu verschicken?

Moderiert von user profile iconNarses: überflüssige Zeilenumbrüche entfernt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 17.02.09 13:15 
Moin!

user profile iconGhosteeR hat folgendes geschrieben Zum zitierten Posting springen:
Habe ich mir teilweise schon angeguckt.
Was spricht gegen ganz? ;)

user profile iconGhosteeR hat folgendes geschrieben Zum zitierten Posting springen:
Allerdings habe ich im Internet gefunden, dass das Record verschicken trotzdem funktioniert.
Das habe ich auch nicht bestritten, klar funktioniert das. Allerdings ist es keine gute Idee. :nixweiss:

user profile iconGhosteeR hat folgendes geschrieben Zum zitierten Posting springen:
Falls das mit dem SendBuf nicht richtig funktioniert, gibt es eine andere Möglichkeit Records zu verschicken?
Warum muss es denn unbedingt ein unflexibles record sein? :gruebel:

Wenn du schon auf records setzt, dann musst du auch unbedingt die Anzahl der empfangenen Bytes auswerten, sonst kriegst du richtig Probleme. Das wird irgendwann ziemlich unübersichtlich, glaub´ mir... :?

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.