Einzelnen Beitrag anzeigen

Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#1

Warum seh ich den Record Inhalt nicht?

  Alt 25. Jun 2004, 19:18
Hallo,
ich versuch hier grad ein Record mit den Indy-kompos zu verschicken, aber in dem Label wo test.b angezeigt werden soll, steht das nicht drin
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdTCPConnection, IdTCPClient, IdBaseComponent, IdComponent,
  IdTCPServer, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    server: TIdTCPServer;
    client: TIdTCPClient;
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    Image1: TImage;
    Image2: TImage;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure serverExecute(AThread: TIdPeerThread);
  private
    { Private-Deklarationen }

  public
    { Public-Deklarationen }
  end;
  TTest=record
  a,b,c: String;
  end;
var
  Form1: TForm1;
  Test: TTest;
implementation

{$R *.dfm} 


procedure TForm1.FormCreate(Sender: TObject);
begin
server.Active := true;
memo1.Lines[0] := '';

end;

procedure TForm1.Button1Click(Sender: TObject);
Var Stream: TMemoryStream;
begin
 client.Connect();
 Test.a := 'a';
 Test.b := 'b';
 Test.c := 'c';
 Stream := TMemoryStream.Create;
 Stream.Position := 0;
 Stream.Write(Test,sizeof(Test));

 Client.OpenWriteBuffer;
 Client.WriteStream(Stream);
 Client.CloseWriteBuffer;
 Stream.Free;
end;

procedure TForm1.serverExecute(AThread: TIdPeerThread);
Var stream2: TMemorystream;
    Test2: TTest;
begin
 label1.Caption := '--';
 Stream2 := TMemoryStream.Create;
 Stream2.Clear;
 Athread.Connection.ReadStream(Stream2, -1, true);
 Stream2.Position := 0;
 Stream2.Read(test2, sizeOf(TTest));
 label1.Caption := test2.b;
 showmessage(test.a);
end;

end.
Wenn ich den Stream in eine TXT speichere, kommt folgendes dabei heraus:

`ä pä €ä

Hoffe mir kann jemand helfen.
Gruß
Spurius
  Mit Zitat antworten Zitat