0
Отвечен

Перезапись значений в текстовый файл

Николай (JFCE) 2 года назад в Монитор обновлен СИМП Лайт (тех поддержка) 2 года назад 1

Реализую простенькую функцию для передачи информации в другую информационную систему через запись значений в текстовый файл с помощью скрипта (файл удаляю для сохранения заданного значения на той же строке):

{Pascal Script}
const
i=4;
Var
j: integer;
// v:array[1..i] of integer;
v:array[1..i] of extended;
s:array[1..i] of string;
Begin
DeleteFile('m:\test_me.txt');
v[1]:= (ceil(10*ReadValue('Virtual channel 1')))/10;
v[2]:= (ceil(10*ReadValue('Virtual channel 2')))/10;
v[3]:= (ceil(10*ReadValue('Virtual channel 3')))/10;
v[4]:= (ceil(10*ReadValue('Virtual channel 4')))/10;
for j:=1 to i do
begin
s[j]:='I;'+inttostr(j+3220)+';'+';'+floattostr(v[j])+';'+'0;';
SaveToTxtFile('m:\test_me.txt',s[j]);
end;
end.

Установил бесплатную версию, преверил - всё норм, работает, а вот на серверной версии СКАДА системы файл не удалается и значения дописываются дальше, как победить, куда копать? Может есть функция удаления содержимого текстового файла перед записью?

ХОРОШО, МНЕ ПОНРАВИЛОСЬ

ок

Оценка удовлетворенности от Николай (JFCE) 2 года назад
+1
Отвечен

День добрый.

Установил бесплатную версию, преверил - всё норм, работает, а вот на серверной версии СКАДА системы файл не удалается и значения дописываются дальше.

Скорей всего приложению не хватает прав на удаление файла из указанной директории.

 как победить, куда копать?

const
FileName = 'm:\test_me.txt';
i = 5;
Var
j: integer;
v:array[1..i] of extended;
str: string;
FileСontents: TStringList;
Begin
v[1]:= (ceil(10*ReadValue('Virtual channel 1')))/10;
v[2]:= (ceil(10*ReadValue('Virtual channel 2')))/10;
v[3]:= (ceil(10*ReadValue('Virtual channel 3')))/10;
v[4]:= (ceil(10*ReadValue('Virtual channel 4')))/10;

FileСontents := TStringList.Create;
try
for j := 1 to i do
begin
str := 'I;' + inttostr(j+3220) + ';' + ';' + floattostr(v[j]) + ';' + '0;';
FileСontents.Add(str);
end;
FileСontents.SaveToFile(FileName);
finally
FileСontents.Free;
end;
end.

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