Вверх ↑
Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
#16: 2008-11-10 14:47:19 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-09 22:16:55
карма: 0

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#17: 2008-11-10 14:50:40 ЛС | профиль | цитата
89-138-14-22.bb.netvision писал(а):
Только при первом запуске

Так вот это и есть ошибка -- в этом случае данные должны быть не определены, а не читать 1 при Null
карма: 22

1
Голосовали:Konst
Гость
Ответов: 17029
Рейтинг: 0
#18: 2008-11-10 14:52:29 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-09 22:16:55
карма: 0

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#19: 2008-11-10 15:19:10 ЛС | профиль | цитата
89-138-14-22.bb.netvision писал(а):
Почему у меня все работает тип-топ?

Я тебя спросил, что выдает моя схема при нажатии на кнопку

------------ Дoбавленo:


89-138-14-22.bb.netvision писал(а):
DataType=0 // это что Data.Data_type<>data_int ???????????

И каким это боком относится к параметрам данных типа TData

Когда это не что иное, как индекс в списке свойст

DataType=Тип считываемых данных|4|1|Integer,String,Real,Stream

------------ Дoбавленo:


Вот как это реализовано в компоненте Registry


const
dtypes:array[0..3] of byte = (data_int,data_str,data_real,data_stream);

---

case dtypes[_prop_DataType] of
data_int : dtInteger(val,ReadInt(Value,Result));
data_str : dtString(val,ReadStr(Value,Result));
data_real: dtReal(val,ReadFloat(Value,Result));
data_stream: dtStream(val,_ReadStream(Value,Result));
end;


Откуда следует, что DataType=0 есть dtypes[0]=data_int

карма: 22

1
Голосовали:Konst
Ответов: 16884
Рейтинг: 1239
#20: 2008-11-10 16:51:31 ЛС | профиль | цитата
А что эта у тебя выдаст в Label ?

Add(MainForm,1560979,154,91)
{
Width=170
Height=133
link(onCreate,117125:doRead,[])
}
Add(Registry,117125,252,105)
{
HKey=1
Key="softwarehiasm_prog"
Value="Flag7"
DataType=0
link(onRead,4657773:doEvent1,[])
}
Add(CheckBox,10724002,350,112)
{
Left=15
Top=15
link(onCheck,117125:doWrite,[(396,118)(396,88)(240,88)(240,118)])
}
Add(Label,12217583,329,35)
{
Left=20
Top=55
}
Add(Hub,4657773,301,105)
{
link(onEvent1,12217583:doText,[(345,111)(345,76)(317,76)(317,41)])
link(onEvent2,10724002:doCheck,[])
}
------------ Дoбавленo:

И не смотри на коды doWrite, а смотри на коды doRead - с них начинается работа схемы.
------------ Дoбавленo:

Просто чел не нажимал на Check - он писатель.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:Konst
Разработчик
Ответов: 26163
Рейтинг: 2127
#21: 2008-11-10 16:55:49 ЛС | профиль | цитата
Tad писал(а):
А что эта у тебя выдаст в Label ?

Когда нет ключа, то выдает пустую строку. Интересно, а что должен выдавать Null при конвертации его в string

Tad писал(а):
И не смотри на коды doWrite

Ты понимаешь, что ты меня запарил, перегрелся что-ли -- где я смотрел на коды doWrite


function THIRegistry.ReadValue;
var value:string;
begin
dtNull(val);
RootKey := _hkey[_prop_HKey];
if not OpenKey(ReadString(_Data,_data_Key,_prop_Key),false,KEY_READ) then
begin
Result := 0;
exit;
end
else Result := 1;
value := ReadString(_Data,_data_Value,_prop_Value);

case dtypes[_prop_DataType] of
data_int : dtInteger(val,ReadInt(Value,Result));
data_str : dtString(val,ReadStr(Value,Result));
data_real: dtReal(val,ReadFloat(Value,Result));
data_stream: dtStream(val,_ReadStream(Value,Result));
end;

CloseKey;
end;


карма: 22

1
Голосовали:Konst
Ответов: 16884
Рейтинг: 1239
#22: 2008-11-10 17:18:52 ЛС | профиль | цитата
и Check нужно было выбрать по умалчиванию True
------------ Дoбавленo:

nesco писал(а):
Когда нет ключа, то выдает пустую строку
А у меня выдаёт 0 Или у меня обновление позднее или у тебя.
Где ты взял эту строку?Номер строки пож.
nesco писал(а):
Null -- не false в при ReadBool, и все это потому, что вот в этом коде

Result := (Data.Data_type<>data_int)or(Data.idata<>0);

------------ Дoбавленo:

У меня компонент от 23.09.2008
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#23: 2008-11-10 17:45:08 ЛС | профиль | цитата
Tad писал(а):
Где ты взял эту строку?

Батенька, это -- Share, функция ReadBool


function ReadBool(var Data:TData):boolean;
begin
Result := (Data.Data_type<>data_int)or(Data.idata<>0);
end;


------------ Дoбавленo:

Tad, а ты ключ пробовал удалять, а потом проверять
карма: 22

1
Голосовали:Konst
Ответов: 16884
Рейтинг: 1239
#24: 2008-11-10 17:50:30 ЛС | профиль | цитата
nesco писал(а):
а ты ключ пробовал удалять, а потом проверять
сейчас попробовал = 0
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#25: 2008-11-10 18:05:39 ЛС | профиль | цитата
Tad писал(а):
сейчас попробовал = 0

Пустой ключ должен выдавать Null при _prop_NotEmpty=False, или ничего при _prop_NotEmpty=True

------------ Дoбавленo:


Я, черт, совсем забыл про это свойство, потому схема должна была выглядеть вот так


Add(MainForm,10933606,336,224)
{
Width=170
Height=87
link(onCreate,117125:doRead,[])
}
Add(Registry,117125,399,238)
{
HKey=1
Key="softwarehiasm_prog"
Value="Flag"
DataType=0
NotEmpty=1
link(onRead,10724002:doCheck,[])
}
Add(CheckBox,10724002,441,238)
{
Left=15
Top=15
link(onCheck,117125:doWrite,[(487,244)(487,221)(387,221)(387,251)])
}

карма: 22

0
Ответов: 16884
Рейтинг: 1239
#26: 2008-11-10 18:32:24 ЛС | профиль | цитата
Вобщем так:
При типе Integer и Real выдает 0, при String выдает 48
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#27: 2008-11-10 19:35:55 ЛС | профиль | цитата
Tad писал(а):
При типе Integer и Real выдает 0, при String выдает 48

Я не знаю, что у тебя творится с ключами и с компонентом, но он точно работает адекватно тому, что я описал. Он будет выдавать какое-то значение, если ключ существует как таковой, но без значения ключа, и будет выдавать Null при _prop_NotEmpty=False, если ключ отсутствует вообще
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#28: 2008-11-10 22:44:33 ЛС | профиль | цитата
У кого еще при первом запуске схемы в Check стоит ворона ?

Add(MainForm,11794303,210,84)
{
Width=170
Height=87
Position=1
link(onCreate,117125:doRead,[])
}
Add(Registry,117125,266,98)
{
HKey=1
Key="softwarehiasm_prog"
Value="Flag100"
DataType=0
link(onRead,10724002:doCheck,[])
}
Add(CheckBox,10724002,315,98)
{
Left=15
Top=15
Checked=0
link(onCheck,117125:doWrite,[(359,104)(359,138)(254,138)(254,111)])
}


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#29: 2008-11-10 23:02:54 ЛС | профиль | цитата
Tad, млин, еще раз внимательно прочти мой предыдущий пост

nesco писал(а):
Он будет выдавать какое-то значение, если ключ существует как таковой, но без значения ключа, и будет выдавать Null при _prop_NotEmpty=False, если ключ отсутствует вообще


Отключи выход Check, затем вытри полность ключ HKCUsoftwarehiasm_prog (полностью из ветви, а не удалить все значения) и посмотри -- будет выдавать NULL и поставит галочку, создай просто ключ без значений -- будет выдавать 0 и читаться нормально и никакой галочки не будет
------------ Дoбавленo:

Tad, я описал тебе все подробно, тебе не надоело бодаться и пытаться найти чего-то там, где его нет
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#30: 2008-11-10 23:19:16 ЛС | профиль | цитата
nesco, а ты что думаешь, что я первую схему выложил не проверив ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)