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

Вниз

Опять про TServerSocket и TClientSocket...   Найти похожие ветки 

 
KPV-10k ©   (2002-05-24 21:18) [0]

Уважаемые мастера! Пожалуйста помогите с пересылкой картинки через TServerSocket и TClientSocket, посмотрел пример в FAQ, но там нет подсказки как сделать пересылку по условию... Написал аналогию, но этот код почему-то не работает. Пожалуйста помогите исправить ошибку или подкиньте исходник аналогичных действий... (Надо наряду с текстовыми, передавать и бинарные данные).

type
TForm1 = class(TForm)
...
private
Reciving: boolean;
DataSize: integer;
Data: TMemoryStream;
end;

Const
SEND_VERSION =1;
SEND_BMP =2;
...

procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
Var
S, ST : AnsiString;
TSLA : TStringList;
BEGIN
S:=Socket.ReceiveText;

if not Reciving then BeGiN
SetLength(ST, StrLen(PChar(S))+1);
StrLCopy(@ST[1], PChar(S), Length(ST)-1);
TSLA:=Reception(ST); //Функция разбивает на команды строку ST
Delete(S, 1, Length(ST));

CASE StrToInt(TSLA.Strings[0]) of

SEND_VERSION : InfoMemo.Lines.Add(TSLA.Strings[1]);

SEND_BMP : begin
DataSize:=XStrToInt(TSLA.Strings[1]);
try
Data:=TMemoryStream.Create;
Data.Clear;
Reciving:=True;
Data.Write(s[1], length(S));
if Data.Size = DataSize then begin
Data.Position:= 0;
VisualControlForm.ImageVC.Picture.Bitmap.LoadFromStream(Data);
Socket.Close;
end;
finally
Reciving:=False;
Data.Free;
end;
end;
end;//CASE
TSLA.Free;
EnD; //if
END;


 
xyz ©   (2002-05-31 00:22) [1]

У меня такая же проблема.
Скачал исходник - в пределах локальной проги работает, а вот когда разные - выдает ошибку (что-то с ассинхрониз...)
Помогите человеку и мне тоже.


 
Song ©   (2002-05-31 09:27) [2]

А в чём ошибка конкретно? И где именно?


 
daos ©   (2002-05-31 16:22) [3]

А так попробуйте-у меня любое передает и принимает
procedure TFTestKlient.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
s:string;
com:string;
ch:array[0..9999] of char;
ms:TMemoryStream;
nr:longInt;
begin
ms:=TMemoryStream.Create;
//try
while true do begin
nr:=Socket.ReceiveBuf(ch,sizeof(ch));
if nr<=0 then break
else ms.Write(ch,nr);
sleep(200);
end;

ms.Position:=0;
//а здесь достаете ихз потока памяти
// и т.п.

Передавать тоже - сначала все сохранить в поток, а затем sendstream



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

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

Наверх




Память: 0.47 MB
Время: 0.016 c
14-48290
AL2002
2002-07-18 22:14
2002.08.15
А есть ли возможность качнуть более ранние архивы форумов?


1-48124
HIDDEN
2002-07-31 17:36
2002.08.15
EVAL etc


1-48206
KIR
2002-07-09 13:10
2002.08.15
Печать даграмм


1-48043
Poirot
2002-08-03 06:50
2002.08.15
Как сообщить компоненту из свойства-объекта - надо перерисов


1-48186
nester
2002-07-31 06:05
2002.08.15
Как получить картинку со странички в TWebBrowser.