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

Вниз

Как передать данные( массив buf: array   Найти похожие ветки 

 
k-sergey   (2003-05-05 21:35) [0]

Как передать данные( массив buf: array[0..16999] of char) в поток в функцию?


 
circul ©   (2003-05-05 21:51) [1]

Либо в конструкторе(1), либо в классе потока определить функцию, в качестве параметра которой будет передаваться массив ( в основном потоке вызывать таким образом - MyThread.ThisFunction(buf);)(2), либо воспользоваться PostThreadMessage(3).


 
k-sergey   (2003-05-06 10:52) [2]

...а пример не можешь скинуть, а то с потоками еще не очень познакомился...


 
Palladin ©   (2003-05-06 11:15) [3]

1

TMyThread=class(TThread)
private
MyArrayOfChar:string;
...
public
constructor Create(const Buf:string;CreateSuspend:Boolean=false);
...
end;

Constructor TMyThread.Create;
begin
MyArrayOfChar:=Buf;
inherited Create(CreateSuspend);
end;

2


TMyThread=class(TThread)
private
MyArrayOfChar:string;
MAoCCS:TCriticalSection;
..
public
Constructor Create(CreateSuspend:boolean=false);
Destructor Destroy; override;
procedure AssignBuf(const Buf:string);
...
end;

constructor TMyThread.Create;
begin
MAoCCS:=TCriticalSection.Create;
inherited Create(CreateSuspend);
end;

Destructor TMyThread.Destroy;
begin
MAoCCS.Free;
inherited;
end;

procedure TMyThread.AssignBuf;
begin
MAoCCS.Enter;
MyArrayOfChar:=Buf;
MAoCCS.Leave;
end;


при работе с Buf обязательно

MAoCCS.Enter;
работа с MyArrayOfChar
MAoCCS.Leave;


3
лучше не надо, но если хочешь, то загляни в справку по Windows SDK


 
k-sergey   (2003-05-06 11:18) [4]

Palladin спасибо попробую...


 
k-sergey   (2003-05-06 11:51) [5]

делаю по 1:
type
TSenderObj = class(TThread)
private
{ Private declarations }
MyArrayOfChar:array[0..16999] of char;
procedure Ok;
procedure Error;
public
constructor Create(const Buf2:string;CreateSuspend:Boolean=false);
protected
procedure Execute; override;
end;
var buf: array[0..16999] of char;
...
function qz:boolean;
var
buf: array[0..16999] of char;
...
begin
result:=false;
buf:=MyArrayOfChar; здесь ошибка [Error] MyThread.pas(40): Undeclared identifier: "MyArrayOfChar"
...
end;

Constructor TSenderObj.Create;
begin
MyArrayOfChar:=Buf2;
inherited Create(CreateSuspend);
end;


 
Palladin ©   (2003-05-06 11:55) [6]

1 замечание: я тебе намекнул что пользуйся string
3 замечание: а почему какая то левая функция qz должна знать что такое MyArrayOfChar?

вывод: ты бы сначала в паскале поднатарел бы...


 
Palladin ©   (2003-05-06 11:55) [7]

2 замечание было отшито цензурой, ибо там был мат


 
k-sergey   (2003-05-06 12:02) [8]

просто у функции такое название, а она самая главная в этом потоке..!


 
Palladin ©   (2003-05-06 12:04) [9]

НУ ТАК СДЕЛАЙ ЕЕ МЕТОДОМ КЛАССА ПОТОКА!


 
k-sergey   (2003-05-06 12:09) [10]

??? я не очень силен в потоках поэтому и спрашиваю, МЕТОДОМ КЛАССА ПОТОКА - мне бы пример, чтобы разобраться, а то эти слова мне не омногом говорят..


 
Palladin ©   (2003-05-06 12:15) [11]

в таком случае см вывод
Palladin © (06.05.03 11:55)

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

в твоем случае,
TSenderObj = class(TThread)
private
...
function qz:boolean;

end;

function TSenderObj.qz;

что же ты через ступеньку прыгаешь?


 
k-sergey   (2003-05-06 12:50) [12]

спасибо, все сделал...пришлось самому думать...


 
Palladin ©   (2003-05-06 12:54) [13]

:)))


 
Palladin ©   (2003-05-06 12:57) [14]

Я требую занести эту фразу в орешник!


 
Digitman ©   (2003-05-06 13:02) [15]


> Palladin


)))) ... солидарен !) ... и - на флаг империи мастаков Делфи !)))



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

Текущий архив: 2003.05.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
3-59616
ligor
2003-04-28 22:13
2003.05.19
FibPlus


14-59938
Dim!S
2003-04-29 09:21
2003.05.19
Программирование для КПК


11-59641
Сандро
2002-08-12 12:48
2003.05.19
Формы


4-59987
QUE
2003-03-19 16:14
2003.05.19
Вставить текст в чужое окно, только что обсуждалось, но не совсем


1-59672
Patrick
2003-05-07 10:42
2003.05.19
Кодировка клавиш