Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.07;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.013 c
3-18780
MetallAdm
2002-01-14 13:27
2002.02.07
изменять содержимое таблички


1-18863
dim2001
2002-01-22 21:44
2002.02.07
Как распечатать StringGrid на лазерном принтере?


1-18855
Yuri Btr
2002-01-22 15:07
2002.02.07
Командная строка


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


7-19011
sw
2001-10-30 10:05
2002.02.07
прерывание 09 в Windows