Проблемы с SaveToTxtFile

Avatar
  • обновлен
Всем доброго дня, сначала свою проблему обозначил здесь , чтобы не путаться - решил вынести обсуждение в отдельный топик.

Задача такова - нужно писать в txt файл несколько параметров,
В файл record1.txt пытаюсь вывести заранее подготовленную строку
В файл record.txt пытаюсь вывести строку которая формируется в самой функции SaveToTxtFile

Var In1, In2, In3, In4, str: String; Begin In1:=ReadValue('натяжение'); In2:=ReadValue('Dmin'); In3:=ReadValue('Dmax'); In4:=ReadValue('оборотов в мин'); str := TimeToStr(now) + ' ves ' + ReadValue('натяжение') + ' Dmin ' + ReadValue('Dmin') + ' Dmax '+ ReadValue('Dmax'); SaveToTxtFile('d:\record1.txt', str); SaveToTxtFile('d:\record.txt', TimeToStr(now) + ' ves ' + ReadValue('натяжение') + ' Dmin ' + ReadValue('Dmin') + ' Dmax '+ ReadValue('Dmax') ); end
ни тот ни другой вариант не работают, компиляция проходит без ошибок, но эффекта 0 (файлы не создаются и не записываются значения), в чем может быть проблема?
Используется версия Simp Light Free, ОС Windows 7 Профессиональная SP1 64bit, запуск SimpLight от имени администратора.
Avatar
Вадим
Конечно же! ДВОЙНОЙ СЛЭШ!!!! Стыдно… :( Но я исправлюсь!
Спасибо!
Avatar
SIMP Tech (Сергей)
День добрый.

Да всё!
Файл не создаётся, строки не считаются пишет "-1", строку не возвращает.

Хорошо. Понял. Запускаете скрипт в редакторе каналов, или при запуске "монитора" такая же картина? И разве слеш в Си не надо экранировать, к примеру так res= SaveToTxtFile("c:\\receipt.txt", "123,33,44,555")?
Avatar
Вадим
Да всё!
Файл не создаётся, строки не считаются пишет "-1", строку не возвращает.
Avatar
SIMP Tech (Сергей)
/* Пример C++ Script */
{
/* присвоить переменной In1, значение переменной канала*/
int In1=ReadValue("кнопка посчитать строки");
int count;
string str1;
boolean res;

count=9;
if(In1==1)
{
res= SaveToTxtFile("c:\receipt.txt", "123,33,44,555");
str1=LoadFromTxtFile("c:\strcount.txt",1);
ShowMessage(str1);
count=GetFileStrCount("c:\strcount.txt");
WriteValue("количество строк",count);
WriteValue("результат",res);
}
}

Ок. Скрипт вижу. Что именно не работает?
Avatar
Вадим
/* Пример C++ Script */
{
/* присвоить переменной In1, значение переменной канала*/
int In1=ReadValue("кнопка посчитать строки");
int count;
string str1;
boolean res;

count=9;
if(In1==1)
{
res= SaveToTxtFile("c:\receipt.txt", "123,33,44,555");
str1=LoadFromTxtFile("c:\strcount.txt",1);
ShowMessage(str1);
count=GetFileStrCount("c:\strcount.txt");
WriteValue("количество строк",count);
WriteValue("результат",res);
}
}
Avatar
SIMP Tech (Сергей)
Здравствуйте.

Вообще ни одна функция работы с текстовыми файлами не работает

Уточните пожалуйста что именно не работает, пример скрипта приведите.
Avatar
Вадим
Вообще ни одна функция работы с текстовыми файлами не работает
Avatar
SIMP Tech (Сергей)
Может ли быть проблема связана с тем, что к каналам Dmin и Dmax так же "подвязаны" скрипты в которых идет расчетная часть?
То есть смысл такой: есть один физический канал 'оборотов в мин' - значение из него передается в виртуальные каналы 'Dmin' и 'Dmax'
далее есть виртуальный канал record - в нем как раз и располагается скрипт

В любом случае файл должен был бы формироваться. У Вас будет возможность предоставить доступ по teamviwer, на месте посмотрим в чем может быть причина. Если да, то данные для подключения пришлите на simp@miniscada.com
Avatar
Владимир
Может ли быть проблема связана с тем, что к каналам Dmin и Dmax так же "подвязаны" скрипты в которых идет расчетная часть?
То есть смысл такой: есть один физический канал 'оборотов в мин' - значение из него передается в виртуальные каналы 'Dmin' и 'Dmax'
далее есть виртуальный канал record - в нем как раз и располагается скрипт
Var In1, In2, In3, In4, str: String; Begin In1:=ReadValue('натяжение'); In2:=ReadValue('Dmin'); In3:=ReadValue('Dmax'); In4:=ReadValue('оборотов в мин'); str := TimeToStr(now) + ' ves ' + ReadValue('натяжение') + ' Dmin ' + ReadValue('Dmin') + ' Dmax '+ ReadValue('Dmax'); SaveToTxtFile('d:\record1.txt', str); SaveToTxtFile('d:\record.txt', TimeToStr(now) + ' ves ' + ReadValue('натяжение') + ' Dmin ' + ReadValue('Dmin') + ' Dmax '+ ReadValue('Dmax') ); end