AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi TmxJsCollection.SaveToStream
Thema durchsuchen
Ansicht
Themen-Optionen

TmxJsCollection.SaveToStream

Ein Thema von mandyGuK · begonnen am 23. Sep 2011
Antwort Antwort
mandyGuK

Registriert seit: 10. Mär 2011
2 Beiträge
 
#1

TmxJsCollection.SaveToStream

  Alt 23. Sep 2011, 14:32
Hallo,
ich habe folgendes Problem:
Ich möchte eine TmxJsCollection mit Items vom Typen TCollectionItem von einem Client zum Host (mit Hilfe von TIdTCPServer/Client) als Stream übertragen.
Jedes Item besitzt als published property einen Filename (String) und einmal ImageData (aktuell als TBytes implementiert, habe aber auch schon verschiedene Streams versucht). Der Filename wird einfach zugewiessen und für die Imagedatas benutze ich LoadFromFile.
Delphi-Quellcode:
  TMyImage = class(TCollectionItem)
  private
    FFilename: String;
    FImageData: TBytes;
  public
    constructor Create(ACollection: TCollection); override;
    destructor Destroy; override;
    procedure Assign(ASource: TPersistent); override;
    procedure LoadFromFile(const AFileName: String);
    procedure SaveToFile(const AFileName: String);
  published
    property Filename: String read FFilename write FFilename;
    property ImageData: TBytes read FImageData;
  end;

procedure TMyImage.LoadFromFile(const AFileName: String);
var
  LFileStream: TFileStream;
begin
  LFileStream := TFileStream.Create(AFileName, fmOpenRead OR fmShareDenyWrite);
  try
    SetLength(FImageData, LFileStream.Size);
    LFileStream.Read(FImageData[0], Length(FImageData));
  finally
    LFileStream.Free;
  end;
end;
Bis zu dem Punkt wo ich die Collection als Stream speichern will funktioniert alles. Die Collectionitems haben die richtige Größe/Size und die Daten sehen auch gut aus. Nach dem SaveToStream Aufruf allerdings ist die Size des Streams viel zu klein (rund 110-115(als Binary)).
Delphi-Quellcode:
procedure TMyClient.Execute;
var
  LStream: TStream;
begin
  LStream := TStringStream.Create;
  try
    FCollection.Binary := True;
    FCollection.SaveToStream(LStream);
    FClient.Connect;
    FClient.IOHandler.Write(LStream, 0, False);
    FClient.Disconnect;
  finally
    LStream.Free;
  end;
end;
Wenn ich nur Strings o.Ä. in den Stream speichere funktioniert alles reibungslos, nur die Bilddaten verursachen die Probleme.
Was mache ich falsch? Wie kann ich die Imagedatas in einer Collection zum Host übertragen?

Danke für alle Antworten im Voraus.
  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 00:16 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