Форум: "Основная";
Текущий архив: 2003.05.19;
Скачать: [xml.tar.bz2];
ВнизКак передать данные( массив 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c