AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Indy MemoryStream JPEG Fehler 42
Thema durchsuchen
Ansicht
Themen-Optionen

Indy MemoryStream JPEG Fehler 42

Ein Thema von 4lb3rtO · begonnen am 4. Nov 2012 · letzter Beitrag vom 4. Nov 2012
Antwort Antwort
4lb3rtO

Registriert seit: 11. Okt 2011
11 Beiträge
 
Delphi 2010 Professional
 
#1

Indy MemoryStream JPEG Fehler 42

  Alt 4. Nov 2012, 16:34
Hallo Delphianer

Ich beschäftige mich gerade ein wenig mit MemoryStreams und hätte da ein kleines Problem beim versenden eines JPEG Image mit der Indy Komponente IdTCP. Ich erhalte einen JPEG Fehler 42 und komme an dieser Stelle leider nicht weiter.


Hiermit versuche ich zu senden:
Delphi-Quellcode:
procedure TForm1.Senden_BClick(Sender: TObject);
var
  ms: TMemoryStream;
  jpg: TJpegImage;

begin
  ms := TMemoryStream.Create;
  jpg := TJpegImage.Create;

  jpg.Assign(Image1.Picture);
  jpg.SaveToStream(ms);

  ms.Free;
  jpg.Free;
end;

Empfangen:
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  ms: TMemoryStream;
  jpg: TJpegImage;

begin
  ms := TMemoryStream.Create;
  jpg := TJpegImage.Create;

  jpg.LoadFromStream(ms);
  ms.Position := 0;
  Image1.Picture.Assign(jpg);

  ms.Free;
  jpg.Free;
end;

Das jpeg soll "einfach" nur vom Client (aus einem TImage) an den Server gesendet werden und dort in ein TImage geladen werden. Kann mir vlt. jemand einen Tip geben, woran es hier scheitert?


Schöne Grüße
4lb3rtO
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Indy MemoryStream JPEG Fehler 42

  Alt 4. Nov 2012, 16:59
Du kannst Dir mal das Testprojekt anschauen: http://www.delphipraxis.net/170904-i...bertragen.html
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Indy MemoryStream JPEG Fehler 42

  Alt 4. Nov 2012, 17:02
Das liegt daran dass Du
* Den Stream ins Nichts schreibst - in einen lokalen Memorystream. Verwende die Methode IOHandler.Write des Clients.

* Den Stream aus dem Nichts liest - aus einem lokalen, leeren Memorystream. Verwende AContext.Connection.IOHandler.ReadStream
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
4lb3rtO

Registriert seit: 11. Okt 2011
11 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Indy MemoryStream JPEG Fehler 42

  Alt 4. Nov 2012, 17:58
Ich danke euch vielmals. Hab Stunden damit verbracht eine Lösung dafür zu finden.

@stahli: Bei der umfangreichen Google-Suche bin ich auch auf dein Demo-Projekt gestoßen. Nur konnte ich leider aufgrund meiner bescheidenen Delphi Kenntnisse nicht allzu viel damit anfangen


So funktioniert es zumindest:
Client:
Delphi-Quellcode:
procedure TForm1.Senden_BClick(Sender: TObject);
var
  ms: TMemoryStream;
  jpg: TJpegImage;
  siz: Integer;

begin
  ms := TMemoryStream.Create;
  jpg := TJpegImage.Create;

  jpg.Assign(Image1.Picture);
  jpg.SaveToStream(ms);
  ms.Position := 0;
  IdTCPClient1.IOHandler.Write(ms, 0, True);

  ms.Free;
  jpg.Free;
end;


Server:
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  ms: TMemoryStream;
  jpg: TJpegImage;
  siz: Integer;

begin
  ms := TMemoryStream.Create;
  jpg := TJpegImage.Create;

  siz := AContext.Connection.IOHandler.ReadLongInt;
  AContext.Connection.IOHandler.ReadStream(ms, siz);

  ms.Position := 0;
  jpg.LoadFromStream(ms);
  Image1.Picture.Assign(jpg);

  ms.Free;
  jpg.Free;
end;

Schönen Abend noch
4lb3rtO
  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 11:21 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