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

Вниз

Определить, уничтожен ли объект   Найти похожие ветки 

 
anbezr   (2003-06-23 18:43) [0]

привет
объект (TFileStream) создается внутри функции и ссылка на него передается в винду. винда может удалить объект, а может и не удальть в случае ошибок, обрывов связи и т.д. могу ли я как нибудь, сохраняя указатель на объект, опрделить уничтожен ли он?
спасибо


 
MBo   (2003-06-23 18:46) [1]

> ссылка на него передается в винду
>винда может удалить объект
????


 
Palladin   (2003-06-23 18:53) [2]

да, винда она такая, даешь ей объекты даешь, а она их без спросу и разбору...


 
Переяслов Григорий   (2003-06-23 18:54) [3]

В случае ошибок у тебя не будет возможности доступиться к памяти, выделенной для программы в сеансе, если в ней произошла ошибка. У тебя уже не будет указателя на объект.


 
anbezr   (2003-06-23 18:55) [4]

речь идет о TServerSocket
The Stream passed as a parameter to SendStream becomes “owned” by the windows socket object. The Windows socket object frees the stream when it is finished with it. Do not attempt to free the stream after it has been passed as a parameter.
но, замечено, что при разрыве связи или возникновении ошибки поток не всегда удаляется.


 
Palladin   (2003-06-23 18:57) [5]

как ты заметил интересно


 
reonid   (2003-06-23 18:57) [6]

Я что-то не помню ВинАпишных функций, требующих
в качестве аргумента дельфёвый TStream.

Если ты передаёшь его Винде, как указатель,
то Винда врядли сможет его удалить -
она просто не знает, как это делается.


 
anbezr   (2003-06-23 19:03) [7]

2 Palladin © (23.06.03 18:57)
я сейчас говорю о TMemoryStream, но если сделать TFileStream, то при возникновении ошибки, не получается открыть файл, который отправлял. если ошибку не создавать, то все нормально.


 
Юрий Федоров   (2003-06-23 19:08) [8]

>>anbezr (23.06.03 19:03)
Посмотри на код VCL этого метода.
Если не ошибаюсь, он разрушается всегда.


 
anbezr   (2003-06-23 19:15) [9]

2 Юрий Федоров © (23.06.03 19:08)
да, вроде всегда, но факт остается фактом.


 
Юрий Федоров   (2003-06-23 19:17) [10]

А с чего взял, что он не разрушается?


 
anbezr   (2003-06-23 19:22) [11]

т.к. файл не получается открыть


 
Юрий Федоров   (2003-06-23 19:26) [12]

Думаю, он разрушается позднее.
Проверь - если разрушить сам сокет, разрушится поток или нет


 
anbezr   (2003-06-23 19:29) [13]

if not Socket.SendStream(MemStr) then
begin
ErrorCode := WSAGetLastError;
while ErrorCode = WSAEWOULDBLOCK do
begin
Socket.SendStream(MemStr);
ErrorCode := WSAGetLastError;
end;
end;


 
anbezr   (2003-06-23 19:39) [14]

anbezr (23.06.03 19:29)
упрощается до
if not Socket.SendStream(MemStr) then
Socket.Close;
спасибо!



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

Форум: "Потрепаться";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
1-31295
Smirnoff
2003-06-26 15:22
2003.07.10
Найти и заменить


4-31576
-= Demon =-
2003-05-07 16:16
2003.07.10
CreateProcess


1-31253
Relaxxx
2003-06-29 22:18
2003.07.10
Поиск в Мемо


14-31407
yaJohn
2003-06-25 13:53
2003.07.10
Симулятор COM порта.


7-31520
Alex134
2003-04-23 22:50
2003.07.10
Проблемы с отладкой, вопрос серьезный





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