Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

недопустимый дескриптор окна [D7, WinXP]


pest_tt ©   (2006-12-15 00:39:00) 


function what_we_gonna_do:boolean;
var f:TStrings;
   command,i:integer;
begin
 f:=TStringList.Create;
 f.LoadFromFile('file.txt');
 command:=strtoint(f.Strings[0]);
 case command of
   0 : begin
          ShowMessage('error');
        end;
   1: begin....
   ....
   ....
 end;
f.Free;
what_we_gonna_do:=true;
end;

procedure TForm1.f_servMSG(Sender: TComponent; const sFrom: String;strm: TStream);
var
 file_stream: TMemoryStream;
begin
 file_stream:=TMemoryStream.Create;
 file_stream.CopyFrom(strm, f_serv.BytesTotal);
 file_stream.SaveToFile('file.txt');
 file_stream.Free;
 what_we_gonna_do;
end;


помогите кто может!

с серсера приходит файл(file.txt). в нем всего одна строка с цифрой 0. этот файл сохраняется удачно. вызывается функция(what_we_gonna_do). результата нет!!! вроде все просто. программа не виснет, оперативки не наматывает, а мое сообщение не выдает. вот только после закрытия клиента выдает окно ("отправлять" "не отправлять" ) а потом ошибку дает:
Exception EOSError in module client.exe at 0000CB62.
System error. Code: 1400.
Недопустимый дескриптор окна.

причем здесь эта ошибка вообще понять не могу!


Сергей М.   (2006-12-19 10:06:00) [1]


> pest_tt ©   (18.12.06 22:32) [9]


Пробуй так:

function what_we_gonna_do:boolean;
begin
 if GetCurrentThreadId <> MainThreadId then
   MessageBox(0, 'Грабли !', '', mb_ok or mb_setforeground);
end;

Грабли видишь ?


Германн   (2006-12-19 00:50:00) [2]


> pest_tt ©   (18.12.06 22:32) [9]
>
> нашел причину...
> комбобокс лежал на панели, которая была инвизибл во время
> записи в комбобокс.

Опять промах :(


Loginov Dmitry   (2006-12-18 23:28:00) [3]

> незнаю, может у меня что-то с делфи не то происходит


даже не надейся на это.


pest_tt   (2006-12-18 22:32:00) [4]

нашел причину...
комбобокс лежал на панели, которая была инвизибл во время записи в комбобокс. даже строка
form1.panel9.visible:=true;
вначале функции не помогла решить проблему. это просто чушь какая-то. пришлось в инспекторе сделать панель видимой!!! незнаю, может у меня что-то с делфи не то происходит...


pest_tt   (2006-12-18 21:30:00) [5]

и снова я сталкиваюсь с этой же проблемой! похоже на то, что я не совем разобрался в причине ошибки.

form1.ComboBox1.Items.Add('something');

в этой же функции я все удалил и оставил только эту строку. выдает  ошибку:
Project Project1.exe raised exception class EOSError with message System error. Code: 1400. Недопустимый дескриптор окна. Process stoped. Use Step or Run to continue.
без этой строки все работает нормально. а с ней выдает ошибку и комбобокс вообще не виден.

в чем дело я понять не могу. функция просто вызывается из другой функции.
если кто знает в чем тут дело, помогите!


Loginov Dmitry   (2006-12-15 07:41:00) [6]

походу, what_we_gonna_do вызывается вовсе не в основном потоке.


pest_tt   (2006-12-15 01:48:00) [7]


> P.S. DLL или доппотоки?

не совсем понимаю вопрос... если по поводу того, что я пишу, то это обычная курсовая. бд. тестирование, с клиентской и серверной частью.


Германн   (2006-12-15 01:38:00) [8]


> Германн, спасибо, что решил помочь! ошибку выдавало сразу
> за строкой, где функцию вызывал..

Чур, чур меня! Я тут вообще не причем! Я только спросил про отладчик :)

P.S. DLL или доппотоки?


pest_tt   (2006-12-15 01:27:00) [9]

я нашел ошибку! все дело в
ShowMessage('error');
стоило написать application.MessageBox('error','error',0); как все заработало!)

в "самопальных" функциях нужно все от самого корня писать(form1....  или application...), а showmessage у меня так написано.

Германн, спасибо, что решил помочь! ошибку выдавало сразу за строкой, где функцию вызывал..


Германн   (2006-12-15 01:24:00) [10]


> pest_tt ©   (15.12.06 01:17) [2]
>
> Project Project1.exe raised exception class EInvalidOperation
> with message 'Canvas does not allow drawing'. Process stoped.
>  Use Step or Run to continue.
>
> поверьте, код весьма прост, я ничего не срезал важного.
>

Так на какой строке отладчик выдаёт ошибку?


pest_tt   (2006-12-15 01:17:00) [11]

Project Project1.exe raised exception class EInvalidOperation with message 'Canvas does not allow drawing'. Process stoped. Use Step or Run to continue.

поверьте, код весьма прост, я ничего не срезал важного.


Германн   (2006-12-15 01:00:00) [12]

Имхо, странный "срез" кода приведён.
А что показывает отладчик?
И кстати. Уже давно модно пользовать зарезервированное слово Result, а не имя функции.


Наверх

Титульная страница Поиск, карта сайта Написать письмо