AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Streamproblem

Ein Thema von Spurius · begonnen am 14. Mär 2004 · letzter Beitrag vom 22. Mär 2004
Antwort Antwort
Spurius

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

Streamproblem

  Alt 14. Mär 2004, 16:48
Hallo,
wie kann ich bei folgendem Code das Record mit den Daten aus dem Stream füllen?
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
 type
  TTest = record
   a, b, c: integer;
  end;
var
  Form1: TForm1;
  Stream: TMemoryStream;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Test: TTest;

begin
 Test.a := 1;
 Test.b := 2;
 Test.c := 3;
 Stream := TMemoryStream.Create;
 Stream.WriteBuffer(Test, Sizeof(Test));
end;

procedure TForm1.Button2Click(Sender: TObject);
var test2: TTest;
begin
 Stream.Position := 0;
 Stream.SaveToFile('c:/hm.txt');

end;
end.
Gruß
Spurius
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Streamproblem

  Alt 14. Mär 2004, 17:49
Hallo,
ganz eínfach:
Delphi-Quellcode:
unit Unit1;

interface

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

type

  TTest = record
   a, b, c: integer;
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen } 
   FStream: TMemoryStream;

  public
    { Public-Deklarationen } 
  end;

var
  Form1: TForm1;
// Stream: TMemoryStream; // globale Instanzen / Variablen sind immer schlecht
implementation

{$R *.dfm} 

procedure TForm1.FormCreate(Sender: TObject); // OnCreate Event-Handler
begin
  FStream:=TMemoryStream.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject); // OnDestroy Event-Handler
begin
  FStream.Free
end;

procedure TForm1.Button1Click(Sender: TObject);
var Test: TTest;

begin
Test.a := 1;
Test.b := 2;
Test.c := 3;
{Stream := TMemoryStream.Create;
Stream.WriteBuffer(Test, Sizeof(Test)); }

  FStream.Write(Test,SizeOf(TTest);
end;

procedure TForm1.Button2Click(Sender: TObject);
var test2: TTest;
begin
  FStream.Position := 0;
  FStream.SaveToFile('c:/hm.txt');
end;

procedure TForm1.Button3Click(Sender: TObject);
// Öffnet eine Datei und schiebt den Inhalt in FStream
var
  Test3 : TTest;
begin
  FStream.LoadfromFile('c:/hm.txt');
  FStream.Position := 0; // sicherheitshalber
  FStream.Read(Test3,SizeOf(TTest));
end;
end.
Ich habe Deinen Code noch ein bißchen geändert.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Streamproblem

  Alt 14. Mär 2004, 18:01
Gibt es einen Grund, warum du einen MemoryStream genommen hast und keinen FileStream?

BTW solltest du das Objekt auch irgendwo wieder freigeben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Spurius

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

Re: Streamproblem

  Alt 14. Mär 2004, 18:03
Hallo,
Danke.
Gruß
Spurius
  Mit Zitat antworten Zitat
Spurius

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

Re: Streamproblem

  Alt 14. Mär 2004, 18:18
So,
ich wollte das ganze jetzt mit Indy/ TCP versenden, aber es geht irgendwie nicht:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    Server: TIdTCPServer;
    Client: TIdTCPClient;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure ServerExecute(AThread: TIdPeerThread);
    procedure ServerConnect(AThread: TIdPeerThread);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
 type
  TTest = record
   a, b, c: integer;
  end;
var
  Form1: TForm1;
  Stream, stream2: TMemoryStream;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Test: TTest;
begin
 client.Connect;
 Test.a := 1;
 Test.b := 2;
 Test.c := 3;
 Stream := TMemoryStream.Create;
 Stream.Write(Test, Sizeof(Test));
 Client.WriteStream(stream, true, true, 0);
end;

procedure TForm1.ServerExecute(AThread: TIdPeerThread);
begin
 Label1.Caption := 'Connected';
end;

procedure TForm1.ServerConnect(AThread: TIdPeerThread);
var test2: TTest;
begin
 Stream2 := TMemoryStream.Create;
 athread.Connection.ReadStream(stream2);
 Stream2.Position := 0;
 Stream.Read(Test2, Sizeof(TTest));
 memo1.Lines.Add(inttostr(test2.a)); // wenn a oder b dann kommt eine große zahl, wenn c kommt 0
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 Stream.Free;
 stream2.Free;
end;

end.
Was mach ich da falsch?
Gruß
Spurius
  Mit Zitat antworten Zitat
Spurius

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

Re: Streamproblem

  Alt 18. Mär 2004, 13:59
Geht leider immer noch nicht...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Streamproblem

  Alt 19. Mär 2004, 13:39
Tja. Bei solchen detailierten Beschreibungen der Fehlermeldung, bzw. was nicht geht, ist man so von Informationen erschlagen, dass man gar nicht weiß, wo man als erstes ansetzten soll.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Spurius

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

Re: Streamproblem

  Alt 19. Mär 2004, 13:46
Also. der Stream den ich versenden will wird nicht richtig im Memo angezeigt.
Wenn ich aus dem Record, welches ich mit dem Stream fülle,
test.a auslese kommt 9261416,
bei test.b kommt 9258196,
bei test.c kommt 0.
Wenn die Infos nicht ausreichen, kann ich dir das Projekt auch mal schicken.
Gruß
Spurius
  Mit Zitat antworten Zitat
Spurius

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

Re: Streamproblem

  Alt 22. Mär 2004, 13:52
Gibts wirlich niemand hier, der mir helfen kann?
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:43 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