i:=StreamReadFromDatabase(a1,a1+m,ReadValue('КаналКомбо'),stream); КаналКомбо привязан к выпадающему списку в котором вбит список каналов. На выходе ошибка DB_CHANNEL_NOTFOUND = 3; В чем может быть проблема?
Если можно текст всего скрипта пришлите, сюда или на почту.
В первом шаге пытаемся имя канала взять из выпадающего списка. Выдает ошибку 3.
в str1 - на момент чтения из БД, точно есть имя канала? Виртуальный канал к которому привязан этот скрипт выполняется по кругу, или запускается по событию?
Во втором шаге передаем точно такое же имя канала из строчки str2. Все работает. Только непонятно почему str2 становится равен 0;
т.е. после чтения из БД переменная str2 становится равной 0?
КаналКомбо привязан к выпадающему списку в котором вбит список каналов. На выходе ошибка DB_CHANNEL_NOTFOUND = 3;
В чем может быть проблема?
Если можно текст всего скрипта пришлите, сюда или на почту.
time:TDateTime;
stream: TMemoryStream;
val:double;
i:word;
str1,str2:string;
Begin
str1:=ReadValue('I?ai');
str2:='Node1.Item1';
stream := TMemoryStream.create;
i:=StreamReadFromDatabase(StrToDateTime('30.07.14 14:40:00'),StrToDateTime('30.07.14 14:40:10'),str1,stream);
GetValueFromStream(stream,time,val);
SaveToTxtFile('c:\test.txt',str1+' - '+inttostr(i)+' - '+DateTimeToStr(time)+' - '+FloatToStr(val));
stream.free;
stream := TMemoryStream.create;
i:=StreamReadFromDatabase(StrToDateTime('30.07.14 14:40:00'),StrToDateTime('30.07.14 14:40:10'),str2,stream);
GetValueFromStream(stream,time,val);
SaveToTxtFile('c:\test.txt',str2+' - '+inttostr(i)+' - '+DateTimeToStr(time)+' - '+FloatToStr(val));
stream.free;
stream := TMemoryStream.create;
i:=StreamReadFromDatabase(StrToDateTime('30.07.14 14:40:00'),StrToDateTime('30.07.14 14:40:10'),'Node1.Item1',stream);
GetValueFromStream(stream,time,val);
SaveToTxtFile('c:\test.txt',inttostr(i)+' - '+DateTimeToStr(time)+' - '+FloatToStr(val));
stream.free;
end.
Node1.Item1 - 3 - 30.12.1899 - 0
0 - 0 - 30.07.2014 14:40:00 - 39
0 - 30.07.2014 14:40:00 - 39
Последние две строчки нормальные. Только str2 почему-то 0
Немного "приберемся" в скрипте.
var time: TDateTime; stream: TMemoryStream; val:double; i:word; str1,str2:string; begin str1 := ReadValue('I?ai'); str2 := 'Node1.Item1'; stream := TMemoryStream.create; try // шаг 1 i := StreamReadFromDatabase(StrToDateTime('30.07.14 14:40:00'),StrToDateTime('30.07.14 14:40:10'), str1, stream); GetValueFromStream(stream, time, val); SaveToTxtFile('c:\test.txt',str1 + ' - ' + inttostr(i) + ' - ' + DateTimeToStr(time) + ' - ' + FloatToStr(val)); // шаг 2 stream.clear; i := StreamReadFromDatabase(StrToDateTime('30.07.14 14:40:00'),StrToDateTime('30.07.14 14:40:10'), str2, stream); GetValueFromStream(stream, time, val); SaveToTxtFile('c:\test.txt', str2 + ' - ' + inttostr(i) + ' - ' + DateTimeToStr(time) + ' - ' + FloatToStr(val)); // шаг 3 stream.clear; i := StreamReadFromDatabase(StrToDateTime('30.07.14 14:40:00'),StrToDateTime('30.07.14 14:40:10'),'Node1.Item1',stream); GetValueFromStream(stream,time,val); SaveToTxtFile('c:\test.txt', inttostr(i) + ' - ' + DateTimeToStr(time) + ' - ' + FloatToStr(val)); finally stream.free; end; end.
Теперь давайте разбираться str1 := ReadValue('I?ai')- в str1 - имя канала? str2 := 'Node1.Item1' - Node1.Item1 это имя канала? На каком шаге происходит сбой?
Во втором шаге передаем точно такое же имя канала из строчки str2. Все работает. Только непонятно почему str2 становится равен 0;
В третьем шаге все нормально.
str1 := ReadValue('I?ai') канал привязан к выпадающему списку, тип string;
Node1.Item1 - имя канала
в str1 - на момент чтения из БД, точно есть имя канала? Виртуальный канал к которому привязан этот скрипт выполняется по кругу, или запускается по событию?
т.е. после чтения из БД переменная str2 становится равной 0?
0 - 0 - 30.07.2014 14:40:00 - 39
0 - 30.07.2014 14:40:00 - 39
Вот отладочный файл по 3 шагам