Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2011, 18:15   #1
nik-kang
Пользователь
 
Регистрация: 30.01.2009
Сообщений: 15
По умолчанию Сохранение файла в системные директории Delphi

Добрый вечер! Пишу программу по численным методам.
Нужно сохранить файл в формате *.pas основной код забит в Memo1 изменяется только 14 строчка после изменения файл нужно сохранить в директорию %SystemRoot%\CH.Method\Fun.pas но при попытке сохранения выскакивает ошибка:



Код процедуры в которо сохраняется файл:
Цитата:
procedure TFunctions.Button1Click(Sender: TObject);
var s,path: string;
begin
s:=edit1.Text;
path:='%SystemRoot%\CH.Method\Fun.p as';
Memo1.Lines.Insert(14, 'result:=' + s + ';');
Memo1.Lines.SaveToFile(path);
Memo1.Lines.Delete(14);
end;
nik-kang вне форума Ответить с цитированием
Старый 23.12.2011, 18:17   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

может у вас нет прав писать туда? винда то какая?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.12.2011, 19:21   #3
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Могу ошибаться, но
Код:
%SystemRoot%
это строчка а не относительный путь.
Для этой задачи нужно вручную находить этот путь, для этого есть соотв. функция.

GetSystemDirectory
Lime вне форума Ответить с цитированием
Старый 23.12.2011, 19:42   #4
nik-kang
Пользователь
 
Регистрация: 30.01.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
может у вас нет прав писать туда? винда то какая?
Windows 7 Ultimate x64

Цитата:
Сообщение от Lime Посмотреть сообщение
Могу ошибаться, но
Код:
%SystemRoot%
это строчка а не относительный путь.
Для этой задачи нужно вручную находить этот путь, для этого есть соотв. функция.

GetSystemDirectory
Спасибо опробую.
nik-kang вне форума Ответить с цитированием
Старый 23.12.2011, 19:44   #5
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

ExpandEnvironmentStrings
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 23.12.2011, 20:24   #6
nik-kang
Пользователь
 
Регистрация: 30.01.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
ExpandEnvironmentStrings
При использовании ExpandEnvironmentStrings
Цитата:
procedure TFunctions.Button1Click(Sender: TObject);
var s, path: string;
Buffer, IsBuffer: PChar;
Size: Cardinal;
begin
s:=edit1.Text;
Size := 255;
IsBuffer := '%SystemRoot%\CH.Method\';
ExpandEnvironmentStrings(IsBuffer, Buffer, Size);
Edit1.Text := Buffer;
{Memo1.Lines.Insert(14, 'result:=' + s + ';');
Memo1.Lines.SaveToFile(Buffer);
case MainMenu.Index of
1: WinExec('cmd /c %SystemRoot%\CH.Method\Cmd\Ur.Metho d.PolDel\PolDel.bat', SW_HIDE);
2: WinExec('cmd /c %SystemRoot%\CH.Method\Cmd\Ur.Metho d.Hord\Hord.bat', SW_HIDE);
end;
Memo1.Lines.Delete(14);}
end;
Выходит следующая ошибка:



А при использовании GetSystemDirectory

Цитата:
s:=edit1.Text;
Size := 255;
GetSystemDirectory(Buffer, Size);
Edit1.Text := Buffer;
Вылазит то такая же ошибка, то:

Последний раз редактировалось nik-kang; 23.12.2011 в 20:28.
nik-kang вне форума Ответить с цитированием
Старый 23.12.2011, 20:29   #7
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

В своем коде замени строку %SystemRoot%\CH.Method\Fun.pas на Win+'\CH.Method\Fun.pas'

Код:
//процедура находит папку Windows
Function win: string;
begin
 SetLength(result, 1024);
 SetLength(result, GetWindowsDirectory(PChar(result), 1024));
end;

procedure TFunctions.Button1Click(Sender: TObject);
var s,path: string;
begin
s:=edit1.Text;
path:=win+'\CH.Method\Fun.pas';
Memo1.Lines.Insert(14, 'result:=' + s + ';');
Memo1.Lines.SaveToFile(path);
Memo1.Lines.Delete(14);
end;

Последний раз редактировалось Aliens_wolfs; 23.12.2011 в 20:34.
Aliens_wolfs вне форума Ответить с цитированием
Старый 23.12.2011, 20:53   #8
nik-kang
Пользователь
 
Регистрация: 30.01.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Aliens_wolfs Посмотреть сообщение
В своем коде замени строку %SystemRoot%\CH.Method\Fun.pas на Win+'\CH.Method\Fun.pas'

Код:
//процедура находит папку Windows
Function win: string;
begin
 SetLength(result, 1024);
 SetLength(result, GetWindowsDirectory(PChar(result), 1024));
end;

procedure TFunctions.Button1Click(Sender: TObject);
var s,path: string;
begin
s:=edit1.Text;
path:=win+'\CH.Method\Fun.pas';
Memo1.Lines.Insert(14, 'result:=' + s + ';');
Memo1.Lines.SaveToFile(path);
Memo1.Lines.Delete(14);
end;
Благодарю за помощь
nik-kang вне форума Ответить с цитированием
Старый 24.12.2011, 00:40   #9
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
после изменения файл нужно сохранить в директорию %SystemRoot%\CH.Method\Fun.pas
Не нужно .
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 24.12.2011, 00:52   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Цитата:
Сохранение файла в системные директории
А что папки AppData мало? Или гадость пишем?

В Windows и её подпапках вообще ничего не должно появлятся, за исключением системных компонент(драйвера, конф. файлы драйверов, сис. библиотеки).
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
.NET Алгоритм проверки каждые n мсек наличие файла в текущей директории omigos99 Общие вопросы .NET 2 10.12.2011 19:37
Как занести в Memo текст из txt файла в директории проэкта ХочуВсёЗнайка Помощь студентам 2 25.01.2011 18:24
C# вставка директории файла... Ryabinin313 Общие вопросы .NET 2 27.09.2010 20:45
Delphi сохранение файла с 'filename'+1 Dj_SheLL Помощь студентам 4 20.08.2010 22:07
Сохранение файла после изменения/удаления записи (Delphi) Kurai Помощь студентам 2 15.05.2010 23:21