Autor Beitrag
Sithlord
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 172



BeitragVerfasst: Mi 21.10.09 01:51 
Hallo Mitglieder,

habe um diese frühe Uhrzeit schon die Suche bemüht um einen Weg zu finden, ein auf der Form plazierte Timage komponente per TCP-IP iwohin zu übertragen. Das Iwohin beläuft sich auf eine andere Form eines anderen Programmes, wieder in eine Timage komponente.

Wie ist sowas möglich? Es sollte auch nicht "lange" dauern, eh das bild da ist.

Welche Ansätze gibt es da um was zu verschicken?
Ich verlange keinen ganzen QUellcode, für kleinere Tipps und Kniffe vl. auch bisschen Quellcode wäre ich dankbar, aber ich will Delphi lernen und möchte es deswegen selbst versuchen, auch wenn es nicht klappen sollte.

Mfg Kalle
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 21.10.09 08:33 
Schau dir am besten einmal dieses Tutorial an, dann wird vielleicht manches klarer. ;-)
www.delphi-library.d...ewtopic.php?p=401124
Sithlord Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 172



BeitragVerfasst: Mi 21.10.09 12:04 
WoW danke, ich lasse die Frage aber trotzdem nochmal offen - nun heißt es sich belesen ^^
Sithlord Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 172



BeitragVerfasst: Mi 21.10.09 13:30 
Sooo,
hab mich mal selbst bemüht und fast Erfolg gehabt ;)

Dies sendet mir es an meinen Server:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Timer1Timer(Sender: TObject);
var
stream:tstream;
begin
  MakeScreenShot(Image1.Picture.Bitmap);
  Image1.Repaint;
  Stream := TMemoryStream.Create;
  Stream.Position := 0;
  image1.Picture.Graphic.SaveToStream(stream);
  client.Socket.SendStream(stream);
  stream.Free;
end;


Und dieses lässt es beim Server auslesen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.serverClientWrite(Sender: TObject;
  Socket: TCustomWinSocket);
var
stream:tstream;
Buffer: array of Byte;
Len: Int64;
begin
Stream := TMemoryStream.Create;
Len := Socket.ReceiveLength; //enthält die größe des zu empfangenden buffer
  SetLength(Buffer, Len);
  try
    Len := Socket.ReceiveBuf(Buffer[0], Len);
    if Len > 0 then
      Stream.Write(Buffer[0], Len);
  finally
    SetLength(Buffer, 0);
    image1.Picture.Graphic.LoadFromStream(stream);
    Image1.Repaint;
    stream.Free;
  end;
end;



Mfg Kalle

Edit: Hat sich herausgestellt eben dass sie auf einmal nicht mehr mit Fehlern um sich werfen sondern der Client mir sagt "invalid pointer operation" o.ä. ;)
Fällt euch dazu was ein?
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mi 21.10.09 13:52 
Wie in dem anderen Thread
www.delphi-forum.de/viewtopic.php?t=94722
schon erwähnt, musst du erst die Länge als Integer bzw. Int64 schicken, und dann auf Empfängerseite diese Anzahl an Zeichen warten und einlesen.
Hat also nichts mit ReceiveLength zu tun.

_________________
PROGRAMMER: A device for converting coffee into software.
Sithlord Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 172



BeitragVerfasst: Mi 21.10.09 14:00 
Mhhh stimmt auch wieder, nach reichlichem belesen.
Aber ich stehe auch iwie auf dem schlauch, wie ich die Länge mitgeben soll...

Naja ich sollte wohl nicht solche Projekte machen ^^. Aber wir müssen wegen der Schule screenshots verschicken, der lehrer meinte dies sei leicht -.-

Aber iwie komm ich da nicht weiter, auch wenn ich jetzt weiß dass es stück für stück auslesen muss.

Bloß wie stück für Stück und dann noch die richtige Länge?

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.