Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Fehlermeldung beim mehrfachen versenden von Bildern (https://www.delphipraxis.net/107766-fehlermeldung-beim-mehrfachen-versenden-von-bildern.html)

Masteric 1. Feb 2008 20:43


Fehlermeldung beim mehrfachen versenden von Bildern
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi, ich habe das mit dem Bilder versenden mit den TSockets aufgegeben und mir die Variante mit Indys angeschaut, was sehr viel einfacher ausschaut und auch funktioniert.

Aber jetzt habe ich ein anderes Problem, das ClientProgramm gibt wenn ich nochein bild versende, immer eine Fehlermeldung....
obwohl das neue bild ankommt.... :gruebel:

Hier der Source zum senden:
Delphi-Quellcode:
Procedure TForm1.Screen;
Var BILD:TFilestream; Bmp: TBitmap; Jpg: TJpegImage;
begin
Bmp:=TBitmap.Create;
Jpg:=TJpegImage.Create;
bmp:=Image1.Picture.Bitmap;
  Jpg.CompressionQuality:=80;
  Jpg.Assign(Bmp);
  jpg.SaveToFile(ExtractFilePath(Application.ExeName)+'temp.jpg');
With Client do
Begin
  BILD:=TFileStream.Create(ExtractFilePath(Application.ExeName)+'temp.jpg', fmOpenRead or fmShareDenyWrite);
  with Client do
  begin
  try
  OpenWriteBuffer;
  try
   WriteStream(BILD, true, true, 0);
   CloseWriteBuffer;
      except
        CancelWriteBuffer;
        raise;
      end;
    finally
      BILD.Free;
    end;
end;
end;
jpg.Free;
bmp.Free;
end;
Es kommt immer die Selbe Fehlermeldung in verschiedenen Abständen.
Ich habe einen Screenshot der Fehlermeldung unten gepostet,
auch eine aus dem Debugger von Delphi.

hoffe ihr könnt mir helfen


Gruß Masteric

marabu 2. Feb 2008 08:06

Re: Fehlermeldung beim mehrfachen versenden von Bildern
 
Moin,

vielleicht funktioniert es besser, wenn du es so versuchst:

Delphi-Quellcode:
procedure TDemoForm.Test;
var
  s: TStream;
  bmp: TBitmap;
  jpg: TJpegImage;
begin
  s := TMemoryStream.Create;
  jpg := TJpegImage.Create;
  bmp := TBitmap.Create;
  try
    bmp.Assign(Image.Picture.Bitmap);
    jpg.CompressionQuality := 80;
    jpg.Assign(bmp);
    jpg.SaveToStream(s);
    with TCPClient do
    begin
      OpenWriteBuffer;
      try
        WriteStream(s, True, True);
        CloseWriteBuffer;
      except
        CancelWriteBuffer;
        raise;
      end;
    end;
  finally
    jpg.Free;
    bmp.Free;
    s.Free;
  end;
end;
Getippt und nicht getestet.

Grüße vom marabu

Masteric 2. Feb 2008 09:38

Re: Fehlermeldung beim mehrfachen versenden von Bildern
 
danke, das scheint zu funktionieren, aber irgendwie empfängt der die Bilder nicht mehr gescheit...
Kann ich das Empfangene Bild gleich in ein Timage laden?? es ist in einem Stream und im JPG Format, da macht der manchmal Probleme....

marabu 2. Feb 2008 09:51

Re: Fehlermeldung beim mehrfachen versenden von Bildern
 
Wie sieht denn dein Code auf der Empfangsseite aus?

Masteric 2. Feb 2008 10:01

Re: Fehlermeldung beim mehrfachen versenden von Bildern
 
Also das ist die Procedure die das Image empfängt:

Delphi-Quellcode:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
Var BILD:Tstream;
    SizeOfIncomingStream: integer;
begin

 bild:Tmemorystream.Create;

  with AThread.Connection do
  begin
  try
      SizeOfIncomingStream := ReadInteger;
      ReadStream(BILD,SizeOfIncomingStream);
  finally
      BILD.Free;
      disconnect;
  end;
  end;
  Image1.Picture.Loadfrom //hier liegt das Problem, wenn ich das Bild aus dem Stream lade und dann in ein bmp umwandle kommt //nichts im Image an. Aber Loadfromstream geht ja auch nicht bei einem JPG, deswegen weiss ich nicht wie ich das gescheit in das //image laden soll.
 Image1.Update;

end;

marabu 2. Feb 2008 11:38

Re: Fehlermeldung beim mehrfachen versenden von Bildern
 
Du musst die ImageSize nicht mit ReadInteger auslesen, ReadStream kann das selbst (siehe Doku). Beim Empfangen würde ich die Vorgehensweise beim Senden einfach umkehren. Zuerst jpg.LoadFromStream(), dann Zuweisung an eine Bitmap. Probiere mal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz