![]() |
Screenshot verschicken
Also ich habe das Problem, das wenn ich einen Screenshot gemacht habe und diesen zu meinem Client schicke kann ich diesen nicht einbinden.
Da ich mit dem verschicken ein paar probleme hatte ist der code teilweise aus nen Beispiel genommen was ich im netz gefunden habe.
Delphi-Quellcode:
procedure Tfm_main.cs_BinaryRead(Sender: TObject; Socket: TCustomWinSocket);
var s, sl: string; begin s:= Socket.ReceiveText; // If we're not in recieve mode: if not Reciving then begin // Now we need to get the length of the data stream. SetLength(sl, StrLen(PChar(s))+1); // +1 for the null terminator StrLCopy(@sl[1], PChar(s), Length(sl)-1); DataSize:= StrToInt(sl); Data:= TMemoryStream.Create; // Delete the size information from the data. Delete(s, 1, Length(sl)); Reciving:= true; end; // Store the data to the file, until we've received all the data. try Data.Write(s[1], length(s)); if Data.Size = DataSize then begin Data.Position:= 0; fm_image.Visible := True; fm_image.img_screen.Picture.Bitmap.LoadFromStream(Data); Data.Free; Reciving:= false; Socket.Close; end; except Data.Free; end; end; Die datei kommt komplett an aber wenn ich den Stream in die Bitmap laden will kommt der Fehler: Im Projekt Client.exe ist eine Exception der Klasse EInvalidGraphic mit derm Meldung 'Bitmap ist ungültig' aufgetreten. Ich hoffe mir kann einer helfen. MFG Penguin |
Re: Screenshot verschicken
So wie ich das sehe, verwendest du ReceiveText für denen Datenstrom, da wirst du Schwierigkeiten mit dem Zeichen 0 erhalten. Benutze vollständig einen Stream für binäre Daten.
|
Re: Screenshot verschicken
mhh es gibt aber kein Socket.recievestream kannst du vllt etwas genauer werden ??
mfg Penguin |
Re: Screenshot verschicken
Aber .ReceiveBuf()
|
Re: Screenshot verschicken
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein Beispiel...
|
Re: Screenshot verschicken
thx für das project nur leider bekommt bei mir der client keine Datei vom Server.Das klappt also auch nicht.
MFG Penguin |
Re: Screenshot verschicken
Also bei mir funktioniert der Code von Omata!
@Penguin, hast du Server und Client auf dem gleichen Rechner gestartet? |
Re: Screenshot verschicken
jo läuft mit localhost(also 127.0.0.1).Ich bekommte auch die Status meldung das beide connected sind.
|
Re: Screenshot verschicken
Unter welchem OS und mit welchen Rechten hast du denn getestet? Versuche mal eine andere Datei zu verschieben.
|
Re: Screenshot verschicken
Ich hab mir nur den Client von Omata angeschaut und soweit ich das überblickt habe macht dieser (wie so viele andere) einen entscheidenten Fehler. Es wird davon ausgegangen das im OnClientRead etc. die Buffer genau so ankommen wie sie abgeschickt werden. Tatsächlich ist es aber so das 2 kurz hintereinander geschickte Buffer in einem Ereignis auf der anderen Seite ankommen können. Ebenso kann es passieren das große Daten in mehreren Stücken nacheinander ankommen, das Ereignis also mehrfach aufgerufen wird.
[Edit]Gleichen Fehler scheint auch Penguin zu machen.[/Edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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