![]() |
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:
Es kommt immer die Selbe Fehlermeldung in verschiedenen Abständen.
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; Ich habe einen Screenshot der Fehlermeldung unten gepostet, auch eine aus dem Debugger von Delphi. hoffe ihr könnt mir helfen Gruß Masteric |
Re: Fehlermeldung beim mehrfachen versenden von Bildern
Moin,
vielleicht funktioniert es besser, wenn du es so versuchst:
Delphi-Quellcode:
Getippt und nicht getestet.
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; Grüße vom marabu |
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.... |
Re: Fehlermeldung beim mehrfachen versenden von Bildern
Wie sieht denn dein Code auf der Empfangsseite aus?
|
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; |
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