Entwickler-Ecke

Internet / Netzwerk - bild über TSimpleTCP senden


FrEaKY - Sa 22.05.04 12:32
Titel: bild über TSimpleTCP senden
Hi

ich schreibe ein Prog wo sich TSimpleTCpServer udn TSimpleTCPCLient mit bildern austauschen. Das connecten funktioniert auch wunderbar nur beim versenden des Bildes krieg ich ne Exception der Klasse EAccesViolation . Meldung: Zugriffsverletzung bei Addresse 004720AE im Modul Project1.exe.
Hier der code beim Server der das Bild schickt:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure Tform1.Sendpic(jpg:TJPEGImage);
 var MS:TStream;    tmpclient:tsimpletcpclient;
 begin
 try
   MS := TMemoryStream.Create;
   jpg.CompressionQuality := 80;
   jpg.Compress;
   jpg.SaveToStream(MS);
   Label5.Caption := 'Bytes:'+#10#13+IntToStr(MS.Size);
   Server.SendStream(tmpclient,MS);
 finally
   MS.Free;
 end;
 end;

und hier vom Clienteb wenn er es empfängt:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.clientRead(Sender: TObject; Stream: TStream);
  var jpg:TJPEGImage;  
   begin  
   try
    jpg := TJPEGImage.Create;
    jpg.LoadFromStream(Stream as TMemoryStream);
    Image2.Picture.Bitmap.Assign(jpg);
   finally  
   jpg.Free;  
   end;
   end;

hoffe mir kann jemand helfen thx


FrEaKY - So 23.05.04 19:53

Warum antwortet denn niemand :crying:


Philer - So 23.05.04 20:08

Also gut...
Du hast einfach den temp. client nicht zugewiesen..

Hier der Server: (Beispiel)[/code]


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Button1Click(Sender: TObject);
var Tmp: TSimpleTCPClient; MS:TMemoryStream;
begin
IF not OpenDialog1.Execute THen exit;
try
    // PIC INS STREAM LADEN
  MS := TmemoryStream.Create;
  MS.LoadFromFile(OpeNDialog1.FileName);
   // AN DEN ERSTEN CLIENT SENDEN
  IF Server1.Connections.Count <> 0 THEN
        BEGIN
          TMP := Server1.Connections[0];
          Server1.SendStream(TMP,MS);
        END;
finally
  MS.Free;
end;
end;


Und der Client: Den hast du richitg gemacht :D



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Client1Read(Sender: TObject; Stream: TStream);
  var jpg:TJPEGImage;
   begin
   try
    jpg := TJPEGImage.Create;
    jpg.LoadFromStream(Stream as TMemoryStream);
    Image1.Picture.Bitmap.Assign(jpg);
   finally
   jpg.Free;
   end;
end;