Главная страница
    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
3-1124191166
diwww
2005-08-16 15:19
2005.10.02
сравнение даты с текущей


1-1126172596
AddValue
2005-09-08 13:43
2005.10.02
Delphi vs Assembler


1-1126613170
vishnia
2005-09-13 16:06
2005.10.02
Текст на исп.,французском, польском языках в элементах управления


1-1126443042
kolya.nn
2005-09-11 16:50
2005.10.02
Звук в Windows


1-1126171989
Lamka
2005-09-08 13:33
2005.10.02
Как получить dcu?





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