Вниз
Скачать: CL | DM;

Погибаю в пучине потоков (уже давно)   Найти похожие ветки 

 
Eraser ©   (2002-01-21 15:38) [0]

type
TMicro1Thread= class (TThread)
...
private
put: array [0..256] of string;
..
public
...
function Getputpub(num: integer): string;
procedure Setputpub(num: integer; const Value: string);
property putpub[num:integer]:string read Getputpub write Setputpub;
..
end;

procedure TMicro1Thread.Execute;
begin
put[1]:=d;
end;

function TMicro1Thread.Getputpub(num: integer): string;
begin
result:=put[num];
end;

procedure TMicro1Thread.Setputpub(num: integer; const Value: string);
begin
put[num]:=value;
end;

объясниите ламеру почему не могу в основной программе обратиться к массиву.Пишу:
TMicro1Thread.Suspend;
f:=TMicro1Thread.getputpub[1];
TMicro1Thread.setputpub[2]:=g;
Tmicro1Thread.Resume;
и пишется ошибка "getputpub not declared" и вторая такая же


 
yaJohn ©   (2002-01-21 15:42) [1]

f:= TMicro1Thread.getputpub[1];
TMicro1Thread.setputpub[2]:=g;

Tipa Triada, day mne znachenie... ;)


 
Eraser ©   (2002-01-21 15:51) [2]

не допонял Вас


 
Rem ©   (2002-01-21 15:59) [3]

В приведенном коде есть несколько некорректных мест:
1. Если уж объявлять property putpub, то тогда методы чтения/записи следовало бы сделать как минимум protected.
2. Как правильно акцентировал yaJohn, обращаться надо не к классу, а к экземпляру класса.
3. Для вызова функций getputpub и setputpub используются круглые скобки.
4. Для обращения к property putpub используются квадратные скобки.

P.S. Я посоветовал бы Вам поближе познакомиться с Object Pascal


 
Digitman ©   (2002-01-21 16:01) [4]

f:=Micro1Thread.putpub[1];
Micro1Thread.putpub[2]:=g;


 
Eraser ©   (2002-01-22 12:56) [5]

ошибку нашел оказалась даже не в том что спрашивал а в объявлении массивов. ну да ладно это уже сделал спасибо ВАМ всем.
Теперь вот мучаюсь:
как можно передать параметр из потока не останавливая его?
Если пишу
Micro1Thread.suspend;
f:=Micro1Thread.putpub[1];
то все ОК, если без suspend то f всегда 0 и я не могу извлечь информацию из потока ни передать в него.
В принципе нужно в определенный момент (напр. после каждого прохода цикла в потоке) считывать информацию из массива созданного при выполнении потока и передаче его другому обработчику


 
Digitman ©   (2002-01-22 13:24) [6]

используй либо объекты синхронизации ОС либо извещай окно объекта-обработчика синхронной посылкой сообщения SendMessage() о доступности данных для обработки



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.008 c
3-18768
wipr
2002-01-09 11:44
2002.02.07
Кто знает что такое Replication Master for Interbase SQL Server и как с ним работать?


1-18890
well
2002-01-23 17:04
2002.02.07
TreeViev


1-18910
Dtr
2002-01-24 10:01
2002.02.07
PopUpMenu


6-18929
Aleksey2001
2001-11-16 09:17
2002.02.07
Интересует работа в delphi с сетями


14-18989
модератор
2001-12-17 21:08
2002.02.07
Просьба обращать внимание на тему конференции.




   Наверх