Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.15;
Скачать: CL | DM;

Вниз

проблема передачи файлов через сокеты Tserversocket Tclientscoket   Найти похожие ветки 

 
Cameron   (2005-09-28 13:20) [0]

Здраствуйте уважаемые программеры у меня небольшая проблема так как я не опытный программист. Она состоит в следующем.
Я пытаюсь переслать изображение с формы сервера на форму клиента и всегда возникает ошибка EAccesViolation или EConvertError
Вот обработчики события OnClient read Сервера и клиента.

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
   var
 Ms:Tmemorystream;
 I:integer;
begin
if socket.ReceiveText="send" then
begin
Ms:=TmemoryStream.Create;
image1.Picture.Grafic.SaveToStream(ms);
i:=ms.Size;
buffer:=ms.Memory; // Здесь возникае ошибка  
//EConvertError
//а если написать ms.read(buffer,i); Возникнет EAccesViolation.
socket.SendText(inttostr(i));
socket.SendBuf(buffer^,i);
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;

begin
data:=Tmemorystream.Create;
size:=strtoint(socket.ReceiveText);
socket.ReceiveBuf(bufer,size);
data.Write(bufer,size);
image2.Picture.bitmap.LoadFromStream(data);
end;

Помогите объесните как это заставить работать.
Зарание благодарен!!!!!!


 
Digitman ©   (2005-09-28 15:04) [1]

что такое buffer ?


 
Klim ©   (2005-09-29 00:02) [2]

Как я понял Buffer это Poiter?
Можно сделать так:
var
buffer:array of byte;
begin
Ms:=TmemoryStream.Create;
image1.Picture.Grafic.SaveToStream(ms);
i:=ms.Size;
setlength(buffer,ms.size);
ms.read(buffer[0],ms.size);
socket.SendBuf(buffer[0],ms.size);
end;

Но при передаче инфа может разбиваться, и не факт что за один раз удастся передать весь файл. Я имею в виду, что нужно на клиенте ожидать пока не придет весь файл, а потом только использовать его



Страницы: 1 вся ветка

Текущий архив: 2006.01.15;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.012 c
2-1134678624
aleks28
2005-12-15 23:30
2006.01.15
WebBrowser


1-1134136957
diwww
2005-12-09 17:02
2006.01.15
Как сделать недоступной кнопку Х (закрыть окно) в заголовке окна?


14-1135315894
begin...end
2005-12-23 08:31
2006.01.15
С Днём рождения! 23 декабря


2-1135374392
JEK2
2005-12-24 00:46
2006.01.15
картинку в RichEdit


6-1126517088
Victor!
2005-09-12 13:24
2006.01.15
TClientSocket через проксю





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский