Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.10.02;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.004 c
1-1126592148
Тормаз
2005-09-13 10:15
2005.10.02
компоненты для p2p


1-1125996767
oradb
2005-09-06 12:52
2005.10.02
HotKey для TToolButton


1-1126069684
wertolet
2005-09-07 09:08
2005.10.02
компонент не удаляется в дизайнтайм


1-1126425351
Alpine
2005-09-11 11:55
2005.10.02
Как программно управлять Scroll в TWEBBROWSER-е ?


1-1126159000
ArtemB
2005-09-08 09:56
2005.10.02
Chart





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский