![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
недопустимый дескриптор окна [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, а не имя функции.