Ваши комментарии

Не-не.
TStringList.SaveToFile пишет имя канала, как и требуется.
Этот код не выполняется.
Версия - только что скачал SIMP Light FREE..
Правда сейчас я под WIN7 проверяю, может из-за этого.

А на что ругается? Хотя, судя по тому что обнаружили неправильную работу скрипта, этот вариант тоже не "взлетит", программисты мне уже ответили в чем проблема, при компиляции система для оптимизации скорости, заменяет имена на индексы в таблице данных, тут то и происходит "чудо" Встретив в скрипте имя канала, в данном случае объявленное как константа, система заменяет его на индекс.

Извиняюсь. Надо было от имени Администратора редактор запускать.
С TStringList.SaveToFile работает нормально.
В любом случае это баг.

И чой-то у вас все запущено… :)
TStringList.SaveToFile создает файл и пишет данные из редактора скриптов - если "Выполнить".
А SaveToTxtFile() только когда "Монитор" запускаешь.
Давайте попробуем вот такой вариант:


var
cTime: TDateTime;
TinValue: Variant;
tStr: string;
flist: TStringList;
Const
logFileName = 'c:\simplog.txt';
TinChName = 'Уровень мерник поз. 1';
begin
cTime := Now;
tStr := FormatDateTime('yyyy-mm-dd hh:nn:ss',cTime) + '; ';
TinValue := ReadValue(TinChName);
tStr := tStr + 'Канал ' + TinChName + ' = ' + VarToStr(TinValue) + ';';

flist := TStringList.Create;
try
if FileExists(logFileName) then
flist.LoadFromFile(logFileName);
flist.add(tStr);
flist.SaveToFile(logFileName);
finally
flist.free;
end;
end.


Этот код не выполняется.
Версия - только что скачал SIMP Light FREE..
Правда сейчас я под WIN7 проверяю, может из-за этого.
Давайте ширше

Var
…end.


В файле, вместо ожидаемого: "Канал Уровень мерник поз. 1 = 85",
видим: "Канал 3 = 85".

При этом ShowMessage(tStr) показывает то, что нужно.

Довольно интересно, можете пару строк из сохранённого simplog.txt показать, проверил Ваш пример у себя, работает как надо. Через минут 5 - 10 пришлю другой пример, посмотрим как у Вас он будет работать.

У вас такой канал, "Уровень мерник поз. 1" среди активных присутствует?
Давайте ширше

Var
cTime: TDateTime;
TinValue: Variant;
tStr: string;
Const
logFileName = 'c:\simplog.txt';
TinChName = 'Уровень мерник поз. 1';
Begin
cTime := Now;
tStr := FormatDateTime('yyyy-mm-dd hh:nn:ss',cTime) + '; ';
TinValue := ReadValue(TinChName);
tStr := tStr + 'Канал ' + TinChName + ' = ' + VarToStr(TinValue) + ';';
SaveToTxtFile(logFileName, tStr);
end.


В файле, вместо ожидаемого: "Канал Уровень мерник поз. 1 = 85",
видим: "Канал 3 = 85".

При этом ShowMessage(tStr) показывает то, что нужно.
В подобном случае

ChannelName := 'Имя канала';
SaveToTxtFile('Имя файла',Channel_Name);


в файл выводится индекс канала, а не текстовое содержимое переменной Channel_Name.
Так и должно быть?


Сервис поддержки клиентов работает на платформе UserEcho