Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
6-18944
volodya
2001-11-14 16:33
2002.02.07
Как получить доступ по локальной сети к реестру и редактировать его


3-18754
EAlexander
2002-01-11 15:29
2002.02.07
ODAC 3.30


6-18938
ZserG
2001-11-18 02:23
2002.02.07
Как вставить инструментальную панель в Explorer?


1-18801
UserL
2002-01-24 08:08
2002.02.07
TToolBar


14-18987
DinaraRu
2001-12-17 23:27
2002.02.07
Альфа-тестеры





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