ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 20.12.2009, 02:53
Аватар для Algol
Algol
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме:
2050916

Репутация: 0


По умолчанию

Что бы кто-то что-то сказал по существу, нужно по существу задавать вопрос.
 
Ответить с цитированием

  #12  
Старый 20.12.2009, 03:02
Аватар для _PARAZIT_
_PARAZIT_
Новичок
Регистрация: 02.10.2007
Сообщений: 29
Провел на форуме:
40682

Репутация: 5
По умолчанию

Цитата:
Сообщение от Algol  
Что бы кто-то что-то сказал по существу, нужно по существу задавать вопрос.
Код:
unit TruncThread;

interface

uses Classes;

type
TTruncThread = class(TThread)
private
{ Private declarations }
Count_:integer;
Update_Line:integer;
protected
procedure Execute; override;
procedure UpdateCaption;
end;

implementation

uses MainServ;

procedure TTruncThread.UpdateCaption;
begin
Form1.Memo1.Lines.Add(Spisok[Update_Line]);
end;

procedure TTruncThread.Execute;
var CurrentCount, i:integer;
    Temp_str:string;
begin
Count_:=1;
while not(Terminated) do begin
  CurrentCount:=spisok.Count;
  if CurrentCount>Count_ then begin
    for i:=Count_ to CurrentCount do begin
      if length(Spisok.Strings[i-1])>80 then begin
        Temp_str:=Spisok.Strings[i-1];
        SetLength(Temp_str, 80);
        Spisok.Strings[i-1]:=Temp_str;
      end;
    Update_Line:=i-1;
    Synchronize(UpdateCaption);
    end;
    Count_:=CurrentCount;
  end;
end;
end;

end.
вот есть пОток, необходима написать еще один поток, что бы этот являлся ему предком, в нем нужно рализовать что бы Spisok.Strings был в верхнем регистре, и что бы была возможность переключать потоки в основной форме программы... ктонибудь поможет?

Последний раз редактировалось _PARAZIT_; 20.12.2009 в 03:04..
 
Ответить с цитированием

  #13  
Старый 20.12.2009, 03:53
Аватар для Markus_13
Markus_13
Познающий
Регистрация: 19.02.2009
Сообщений: 83
Провел на форуме:
181715

Репутация: 50
Отправить сообщение для Markus_13 с помощью ICQ
Post

Цитата:
вот есть пОток, необходима написать еще один поток, что бы этот являлся ему предком, в нем нужно рализовать что бы Spisok.Strings был в верхнем регистре, и что бы была возможность переключать потоки в основной форме программы... ктонибудь поможет?
нах это "чтобы этот являлся ему предком"???
вот код переводит строки в Spisok.Strings в верхний регистр:
Код:
function strcUP(s:string):string;var r:string;k:byte;begin r:=s;for k:=1 to length(r)do begin
if r[k]='a'then r[k]:='A';if r[k]='b'then r[k]:='B';if r[k]='c'then r[k]:='C';if r[k]='d'then r[k]:='D';
if r[k]='e'then r[k]:='E';if r[k]='f'then r[k]:='F';if r[k]='g'then r[k]:='G';if r[k]='h'then r[k]:='H';
if r[k]='i'then r[k]:='I';if r[k]='j'then r[k]:='J';if r[k]='k'then r[k]:='K';if r[k]='l'then r[k]:='L';
if r[k]='m'then r[k]:='M';if r[k]='n'then r[k]:='N';if r[k]='o'then r[k]:='O';if r[k]='p'then r[k]:='P';
if r[k]='q'then r[k]:='Q';if r[k]='r'then r[k]:='R';if r[k]='s'then r[k]:='S';if r[k]='t'then r[k]:='T';
if r[k]='u'then r[k]:='U';if r[k]='v'then r[k]:='V';if r[k]='w'then r[k]:='W';if r[k]='x'then r[k]:='X';
if r[k]='y'then r[k]:='Y';if r[k]='z'then r[k]:='Z';if r[k]='а'then r[k]:='А';if r[k]='б'then r[k]:='Б';
if r[k]='в'then r[k]:='В';if r[k]='г'then r[k]:='Г';if r[k]='д'then r[k]:='Д';if r[k]='е'then r[k]:='Е';
if r[k]='ё'then r[k]:='Ё';if r[k]='ж'then r[k]:='Ж';if r[k]='з'then r[k]:='З';if r[k]='и'then r[k]:='И';
if r[k]='й'then r[k]:='Й';if r[k]='к'then r[k]:='К';if r[k]='л'then r[k]:='Л';if r[k]='м'then r[k]:='М';
if r[k]='н'then r[k]:='Н';if r[k]='о'then r[k]:='О';if r[k]='п'then r[k]:='П';if r[k]='р'then r[k]:='Р';
if r[k]='с'then r[k]:='С';if r[k]='т'then r[k]:='Т';if r[k]='у'then r[k]:='У';if r[k]='ф'then r[k]:='Ф';
if r[k]='х'then r[k]:='Х';if r[k]='ц'then r[k]:='Ц';if r[k]='ч'then r[k]:='Ч';if r[k]='ш'then r[k]:='Ш';
if r[k]='щ'then r[k]:='Щ';if r[k]='ъ'then r[k]:='Ъ';if r[k]='ы'then r[k]:='Ы';if r[k]='ь'then r[k]:='Ь';
if r[k]='э'then r[k]:='Э';if r[k]='ю'then r[k]:='Ю';if r[k]='я'then r[k]:='Я';end;result:=r;end;

procedure TTruncThread2.Execute;
var CurrentCount, i:integer;
begin
while not(Terminated) do begin
CurrentCount:=spisok.Count;
for i:=0 to CurrentCount-1 do 
Spisok.Strings[i]:=strcUP(Spisok.Strings[i]);
end;
end;
 
Ответить с цитированием

  #14  
Старый 20.12.2009, 08:53
Аватар для W!z@rD
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

StrToLower/Upper

не понял, зачем такой код лопатить?!?! о_О

Касательно потоков. Для чего они нужны? Для параллельной работы.

И вот, почитай на досуге, про потоки http://forum.vingrad.ru/forum/topic-60076.html
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #15  
Старый 20.12.2009, 17:05
Аватар для _PARAZIT_
_PARAZIT_
Новичок
Регистрация: 02.10.2007
Сообщений: 29
Провел на форуме:
40682

Репутация: 5
По умолчанию

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

  #16  
Старый 20.12.2009, 20:34
Аватар для W!z@rD
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

Цитата:
Сообщение от _PARAZIT_  
как сделать верхний регистр я знаю.... и как наследовать я знаю.... не надо задавать вопросы на счет тупости, задание есть задание, я незадаю лишних вопросов.
субственно суть вопроса - как переключать два потока между собой?
шиздец, ссылку кому дал?

скажи сразу, не хочу вкуривать, дайте тупо работающий код.
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #17  
Старый 20.12.2009, 20:56
Аватар для intNet
intNet
Познающий
Регистрация: 31.05.2009
Сообщений: 68
Провел на форуме:
1271980

Репутация: 19
По умолчанию

Потоки могут работать независимо друг от друга.
Создаёшь поток через CreateThread/BeginThread, ссылающийся на нужную тебе функцию, и никаких TThread не надо, да и работать всё будет стабильнее.
Код:
...
procedure Memo1Add();
begin
  while true do
    Form1.Memo1.Lines.Append('a');
  ExitThread(0);
end;

procedure Memo2Add();
begin
  while true do
    Form1.Memo2.Lines.Append('b');
  ExitThread(0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  CloseHandle(CreateThread(nil, 0, @Memo1Add, nil, 0, dwThreadID));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  CloseHandle(CreateThread(nil, 0, @Memo2Add, nil, 0, dwThreadID));
end;

end.
 
Ответить с цитированием

  #18  
Старый 21.12.2009, 01:46
Аватар для _PARAZIT_
_PARAZIT_
Новичок
Регистрация: 02.10.2007
Сообщений: 29
Провел на форуме:
40682

Репутация: 5
По умолчанию

intNet спосибо большое конечно, но тут к сожалению вопрос стоит остро и зависит он не от меня, так что реализация на WinAPI не пойдет.....
а на счет вкуривания зря так издеваетесь:
http://www.rsdn.ru/forum/delphi/3358361.flat.aspx
http://forum.vingrad.ru/forum/topic-60076.html
http://digs.alfaspace.net/topics/8
http://www.delphisources.ru/pages/faq/base/threads_development.html
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1370
..................
.....нужен ответ по теме, а не философия
 
Ответить с цитированием

  #19  
Старый 21.12.2009, 02:20
Аватар для Pr0mo
Pr0mo
Новичок
Регистрация: 26.11.2009
Сообщений: 20
Провел на форуме:
88440

Репутация: 60
По умолчанию

Цитата:
Сообщение от _PARAZIT_  
Товарищи подскажите как можно переключать патоки между собой: например есть паток T1 он в Memo все время пишет букву `A`, есть поток T2 он в Memo все время пишет букву `B`..... необходимо реализовать так что бы при нажатии на одну кнопку работал поток T1, а при нажатии на другую кнопку - T2..... как это сделать? необходимо ли уничтожать поток T1 перед созданием потока T2 или нет? создавать их когда, одновременно или как?
Вообще, на сколько я помню потокам можно задавать приоритеты. Соответсвенно, если у потока T1 приоритет 0, а у другого (T2) отличный от нуля, то процессорное время будет затрачиваться именно на поток T2.
 
Ответить с цитированием

  #20  
Старый 21.12.2009, 02:30
Аватар для zeppe1in
zeppe1in
Постоянный
Регистрация: 12.07.2006
Сообщений: 327
Провел на форуме:
1654818

Репутация: 117
По умолчанию

Цитата:
Сообщение от _PARAZIT_  
я просто думаю, по нажатию первой кнопки делать T1.Suspend T2.resume, а по второй кнопке наоборот, но это как то тупо..... может ктонибудь знает нормальный способ?
Почему тупо? вроде самое то.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi] Задержка в WinSock между send() и recv() GlooK С/С++, C#, Delphi, .NET, Asm 9 29.09.2009 18:26
ОПРЕДЕЛЕНИЕ МЕСТОПОЛОЖЕНИЯ АБОНЕНТА МОСКВЫ silveran Телефония и связь 13 08.09.2006 00:27



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ