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

Вниз

RECV и TMemoryStream   Найти похожие ветки 

 
VadimX   (2005-09-12 22:33) [0]

Как читать из TSocket;
не в буфер Array of char;

А сразу в TMemoryStream?

Сейчас реализовано вот так
aBuf          : array of char;
BufSize,
vSize         : integer;
s             : TSocket;

vSize := RECV(s,aBuf[0],BufSize,0);


 
MBo ©   (2005-09-13 06:11) [1]

читать в MemStream.Memory^, не забыв сперва установить размер


 
VadimX   (2005-09-13 17:35) [2]

т.е. вот так?
MS.SetSize(BufSize);
vSize := RECV(s,MS.Memory^,BufSize,0);

у меня получается MS.Memory пустой
хотя с aBUf[0] было все нормально.
И вообще как посмотреть содержимое потока при отладке?


 
Digitman ©   (2005-09-13 17:46) [3]


> у меня получается MS.Memory пустой


что значит "пустой" ? и на основании чего такое умозаключение ?


> как посмотреть содержимое потока при отладке?


например, так:

в Evaluate/Modify запросить значение выражения PByteArray(MS.Memory)


 
VadimX   (2005-09-13 18:18) [4]

>> у меня получается MS.Memory пустой
>что значит "пустой" ? и на основании чего такое умозаключение ?
Пустой= без данных!
MS.WRITE(aBuf,vSize);

aBuf виден в отладчике. (0#,0#,0#,0#,0#,0#,0#,0#,0#,...)
как был так и остался.
Следовательно RECV(s,MS.Memory^,BufSize,0); ничего не записал в MS, либо я неправильно копирую в aBuf.

>> как посмотреть содержимое потока при отладке?
>например, так:
>в Evaluate/Modify запросить значение выражения PByteArray(MS.Memory)
Пишет адрес, данных не видно =((


 
Digitman ©   (2005-09-13 18:24) [5]


> VadimX   (13.09.05 18:18) [4]



> MS.WRITE(aBuf,vSize);


а это здесь причем ?!

ты хоть почитал в справке, что делает метод TStream.Write(), перед тем как пользовать его ?


> Пишет адрес, данных не видно


PByteArray(MS.Memory)^


 
VadimX   (2005-09-13 18:38) [6]

>> MS.WRITE(aBuf,vSize);
>а это здесь причем ?!
>ты хоть почитал в справке, что делает метод TStream.Write(), >перед тем как пользовать его ?
Пишет в abuf vSize байт.

>> Пишет адрес, данных не видно
>PByteArray(MS.Memory)^
Так бы и говорил сразу. Теперь нормально видно.


 
Digitman ©   (2005-09-13 18:42) [7]


> Пишет в abuf vSize байт


ну а причем здесь abuf-то ? и причем здесь "писать в буфер" ?

ты же вопрос как поставил ? мол, хочу считывать данные из гнезда в MemStream, а не в abuf ..


> Так бы и говорил сразу


а дотумкать самому сложно, что я упустил разыменование ?)
или в первый раз про разыменование слышишь ?


 
VadimX   (2005-09-13 18:57) [8]

>> Пишет в abuf vSize байт
>ну а причем здесь abuf-то ? и причем здесь "писать в буфер" ?

ты же вопрос как поставил ? мол, хочу считывать данные из гнезда в MemStream, а не в abuf ..
Это в ответ на твой вопрос
""Что значит "пустой" ? и на основании чего такое >умозаключение ?""

Мне же надо проверить, что записалось в MS.
Решил проверить перезаписью в буфер. В чем криминал-то?

>> Так бы и говорил сразу
>а дотумкать самому сложно, что я упустил разыменование ?)
Ты сам про него забыл.
>или в первый раз про разыменование слышишь ?
=))


 
Digitman ©   (2005-09-14 12:41) [9]

var
MS: TMemoryStream;
aBuf: array [0..4095] of byte;
BytesActuallyRead: integer;
s: TSocket;

..

MS := TMemoryStream.Create;

...

BytesActuallyRead := RECV(s,aBuf, SizeOf(aBuf), 0);

if BytesActuallyRead > 0 then
 MS.Write(aBuf, BytesActuallyRead);


 
Digitman ©   (2005-09-14 13:35) [10]

мне вообще непонятно, что за блажь - ЗАВЕДОМО использовать VCL (см. TStream) и при этом обращаться к WinsokAPI напрямую ..

прокомментируй это ..

ЧЕМ не угодили хотя бы стандартные компоненты в штатной поставке Делфи ?

ЧЕМ оправдана блажь с обращением к WinsokAPI напрямую ?



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

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

Наверх




Память: 0.49 MB
Время: 0.048 c
1-1126094591
lmz
2005-09-07 16:03
2005.10.02
Блок вставки из буфера обмена


4-1123343803
lordalexander
2005-08-06 19:56
2005.10.02
COM порт


3-1123148835
alex_1_2_3_4
2005-08-04 13:47
2005.10.02
MySQL, ADO, error :-(


2-1124454491
Пантелеев Иван
2005-08-19 16:28
2005.10.02
Длина в Edit


14-1126604080
Наиль
2005-09-13 13:34
2005.10.02
Вопросом на вопрос.