Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
1-59719
Navi
2003-05-04 08:55
2003.05.19
Таскать картинку как в ACDSee или ScrollBox


3-59560
valmont
2003-04-26 06:10
2003.05.19
DBGrid и номер строки


3-59546
sline
2003-04-25 17:19
2003.05.19
Мастера, помогите составить Sql запрос новичку


1-59707
off
2003-05-07 16:26
2003.05.19
Отменить нажатую клавишу Edit-е


3-59604
Анатолий
2003-04-28 15:06
2003.05.19
Как изменить тип поля в таблице(Currency на Float)?





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