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

Вниз

Вопрос про потоки   Найти похожие ветки 

 
Сергей М. ©   (2009-06-15 18:44) [80]


> dnepr   (15.06.09 18:35) [78]


Так ведь в [75], так же как и в Demos\Threads, нет комментариев)


 
dnepr   (2009-06-15 19:01) [81]

nil!


 
dnepr   (2009-06-15 19:02) [82]

ну я в потоках более менее теперь разбираюсь, комментарии кое где не нужны


 
Сергей М. ©   (2009-06-15 19:07) [83]


> nil!


Чего "nil" ?)


 
dnepr   (2009-06-15 19:27) [84]

Юрий, я сделал как вы сказали, но форма зависает когда нажимаешь на кнопку закрытия формы. И потом даже когда письмо доходит - форма недоступна. я сделал так:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if NewThread <> nil then
  NewThread.WaitFor;
  Form1.Visible:=False;
end;

но все равно также...


> Будет. Переменная не может не иметь никакого значения.
> Но значение это совсем не то которое ты ожидаешь.

Сергей, наверное nil?


 
Сергей М. ©   (2009-06-15 19:32) [85]


> dnepr   (15.06.09 19:27) [84]


> наверное nil?


"Не определено" означает любое, т.е. заранее неизвестное значение, в т.ч. и nil.

Локальные переменные подпрограмм в Делфи рождаются, живут и умирают в стеке, если страшное слово "стек" тебе о чем-то говорит.


 
Сергей М. ©   (2009-06-15 19:36) [86]


> даже когда письмо доходит - форма недоступна


Сейчас мы еще двести-триста постов будем клянчить у тебя код метода Execute.

Впрочем зачем ?

Ты же заявил


> в потоках более менее теперь разбираюсь


 
dnepr   (2009-06-15 19:36) [87]

говорит. я читал об этом


 
Сергей М. ©   (2009-06-15 19:41) [88]


> говорит. я читал об этом


И ?

Откуда же тогда взялся NIL ? Если "говорит" и "читал" ?


 
dnepr   (2009-06-15 19:44) [89]


> Откуда же тогда взялся NIL ? Если "говорит" и "читал" ?


я не могу ответить на этот вопрос...


 
Сергей М. ©   (2009-06-15 19:45) [90]


> не могу ответить на этот вопрос


Почему ?


 
dnepr   (2009-06-15 19:51) [91]

потому что не знаю ответа


 
Сергей М. ©   (2009-06-15 19:54) [92]

Т.е. от балды ляпнул ?


 
dnepr   (2009-06-15 19:54) [93]

я оперся на это:
if NewThread <> nil then


 
Сергей М. ©   (2009-06-15 19:58) [94]


> я оперся на это


Почему ?

В [75] нет переменных - ни локальных, ни статических.

А я веду с тобой беседу опираясь на твой код, фигурировавший у тебя до [75]

Прежде чем ортогонально разворачивать оглобли предупреждать вообще-то надо)


 
dnepr   (2009-06-15 20:10) [95]

хорошо, извини. Если опираться на код до [75], то я спрошу


> Будет. Переменная не может не иметь никакого значения.
> Но значение это совсем не то которое ты ожидаешь.

чему будет равна переменная NewThread тут ?
If NewThread.Suspended Then NewThread.Resume;


 
Сергей М. ©   (2009-06-15 20:18) [96]


> dnepr   (15.06.09 20:10) [95]


Чему угодно. Значение локальной переменной НЕ определено.


 
dnepr   (2009-06-15 20:21) [97]

Сергей помоги разобраться с этим:
type
TForm1 = class(TForm)
  procedure Button1Click(Sender: TObject);
  procedure FormClose(Sender: TObject; var CanClose: boolean);
private
  NewThread: TNewThread;
  procedure ThreadTerminated(Sender: TObject);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if NewThread = nil then
begin
  NewThread := TNewThread.Create(True);
  NewThread.OnTerminate := ThreadTerminated;
  NewThread.Resume;
end
end;

procedure TForm1.FormClose(Sender: TObject; var CanClose: boolean);
begin
if NewThread <> nil then
Form1.Hide;
  NewThread.WaitFor;
end;


procedure TForm1.ThreadTerminated(Sender: TObject);
begin
FreeAndNil(NewThread);
end;


Я прячу форму когда ее закрывают но программа выполняется и поток тоже. Как сделать так, чтобы форма пряталась, а программа не висела в памяти после выполнения потока (NewThread.WaitFor;)?


 
Сергей М. ©   (2009-06-15 20:24) [98]


> dnepr   (15.06.09 20:10) [95]


Уточню - не определено если это переменная generic типа.
Упомянутый тобой тип относится к generic-типам данных.


 
Сергей М. ©   (2009-06-15 20:27) [99]


> Form1.Hide;


Это что за отсебячина ?

Зачем эта строчка ?


 
dnepr   (2009-06-15 20:28) [100]

я же хочу спрятать форму во время выполнения потока, вот я и спрятал...


 
Сергей М. ©   (2009-06-15 20:35) [101]


> хочу спрятать форму


А причем здесь тогда "программа не висела в памяти после выполнения потока" ? Какое отношение видимость формы имеет к "висению" чего-то там в памяти ?


 
dnepr   (2009-06-15 20:37) [102]

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


 
oldman ©   (2009-06-15 20:43) [103]


> ну я думал, что когда поток завершится, то программа сама
> себя в памяти убьет


Круто.
;)


 
sniknik ©   (2009-06-15 20:44) [104]

программа не делает того, что ты хочешь, она делает то что ты пишешь...


 
dnepr   (2009-06-15 20:45) [105]

sniknik, и что мне дописать?


 
Сергей М. ©   (2009-06-15 20:48) [106]


> а я на время выполнения этого спрячу форму


А нашиша ее прятать явно, если событие OnClose как раз и говорит о том, что форма сейчас "спрячется" ?


 
sniknik ©   (2009-06-15 20:50) [107]

> sniknik, и что мне дописать?
допиши к программе заявление об уходе, распечатай, убедись, что  оно с новой страницы, и неси последний лист в отдел кадров.
пусть вместо тебя возьмут программиста.


 
dnepr   (2009-06-15 20:51) [108]


> А нашиша ее прятать явно, если событие OnClose как раз и
> говорит о том, что форма сейчас "спрячется" ?

а как иначе?


 
Сергей М. ©   (2009-06-15 20:52) [109]

program MyDummyProgram;
..
uses ... MyNewThreadUnit ...;

begin
...
 Application.Run;
 if NewThread <> nil then
   NewThread.WaitFor;
end.


 
sniknik ©   (2009-06-15 20:55) [110]

Сергей М. ©   (15.06.09 20:52) [109]
ой зря... он так и не показал код execute-а, не опроверг предположение, что используются компоненты с формы...


 
dnepr   (2009-06-15 20:55) [111]

теперь она не закрывается....


 
dnepr   (2009-06-15 20:56) [112]

в execute не используются компоненты формы


 
dnepr   (2009-06-15 20:58) [113]

а еще по завершению потока NewThread форма опять зависает


 
Игорь Шевченко ©   (2009-06-15 20:59) [114]


> теперь она не закрывается....


захватывающе!


 
Сергей М. ©   (2009-06-15 20:59) [115]


> теперь она не закрывается


Что значит "теперь" ?)


 
Сергей М. ©   (2009-06-15 21:01) [116]


> в execute не используются компоненты формы


Там, наверно, секретный код секретной же израильской разведки используется. коль мы до сих пор не имели несчастья его узреть ?)


 
sniknik ©   (2009-06-15 21:02) [117]

и кто она? если соседка в душе то прикольно, сестра пошло.


 
MsGuns ©   (2009-06-15 21:02) [118]

Цирк на дроте


 
dnepr   (2009-06-15 21:02) [119]

да вы правы


 
dnepr   (2009-06-15 21:06) [120]

все... тема перемещена..... мне никто не поможет ..



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

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

Наверх





Память: 0.66 MB
Время: 0.014 c
2-1244993614
Gumz
2009-06-14 19:33
2009.08.16
Преобразование координат пикселей в градусы


15-1245438799
Johnnnnn
2009-06-19 23:13
2009.08.16
Доступ к книге excel на сервере?


6-1205915538
grisme
2008-03-19 11:32
2009.08.16
Content-Length field


15-1245308606
тимохов
2009-06-18 11:03
2009.08.16
Ограничения VS 2088 Express и MSSQL Server 2008 Express


2-1245311984
belmol
2009-06-18 11:59
2009.08.16
array[0..383] of Byte &amp; blob





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