Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.16;
Скачать: CL | DM;

Вниз

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

 
Сергей М. ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.69 MB
Время: 0.031 c
2-1244796506
b/@.
2009-06-12 12:48
2009.08.16
Как правильно определять версию файла ?


2-1245418903
Student85236
2009-06-19 17:41
2009.08.16
ClientSocket в Таймере


15-1245045762
Knight
2009-06-15 10:02
2009.08.16
Помогите теорией. Полигон по направляющей полилинии.


2-1245577497
Bred
2009-06-21 13:44
2009.08.16
Цвет шрифта при использовании TextOut


2-1245325239
Дима
2009-06-18 15:40
2009.08.16
Таймер