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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2013, 15:31   #1
Host-2013
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 63
По умолчанию Исключение неизвестное программное исключение...

выдает ошибку при запуске, посмотрите пожалуйста в чем дело:

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Original,
  Classes;

Var name: string;
    SL: TStringList;
    i: integer;

begin
write('Enter new name: ');
readln(name);
GoCMD('attrib -r "%~dp0userconfig.cfg"');
SL:= TStringList.Create;
SL.LoadFromFile(ExtractFileDir(ParamStr(0))+'\userconfig.cfg');
GoCMD('del "%~dp0userconfig.cfg"');
for i:= 0 to SL.Count-1 do
if pos('name', SL.Strings[i])<>0
then StringReplace(SL.Strings[i], SL.Strings[i], 'name '+name, [rfReplaceAll])
else SL.Add('name '+name);
SL.SaveToFile(ExtractFileDir(ParamStr(0))+'\userconfig.cfg');
GoCMD('attrib +r "%~dp0userconfig.cfg"');
SL.Free;
write('Name changed');
readln;
end.
п.с. если что GoCMD это моя процедурка, базируется на ShellExecute, только без кучи параметров и вводить можно String без PChar
Host-2013 вне форума Ответить с цитированием
Старый 08.02.2013, 19:38   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А что отладчик показывает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.02.2013, 20:14   #3
Host-2013
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 63
По умолчанию

а отладчик говорит что Cannot create file userconfig.cfg Отказано в доступе
Host-2013 вне форума Ответить с цитированием
Старый 08.02.2013, 20:20   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

ты бы хоть модуль original.pas (или dcu) к проекту приложил, а то у меня этот код вообще не запустился. А когда все твое закомментил - запустился, но ругнулся, что не может найти userconfig.cfg.

Небось из-под Windows 7 работаешь?

тут два варианта - либо exe-шник проекта из-под админа запускать, либо сам проект из другой папки, которая к системе не относится.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 08.02.2013, 20:55   #5
Host-2013
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 63
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
ты бы хоть модуль original.pas (или dcu) к проекту приложил, а то у меня этот код вообще не запустился. А когда все твое закомментил - запустился, но ругнулся, что не может найти userconfig.cfg.

Небось из-под Windows 7 работаешь?

тут два варианта - либо exe-шник проекта из-под админа запускать, либо сам проект из другой папки, которая к системе не относится.
я же написал: единственная процедура из того модуля GoCMD это тот же самый ShellExecute только модифицированный

нет, я ненавижу вин7, мне вообще кроме моей любимой экспишки ничего не надо, она самая удобная
Host-2013 вне форума Ответить с цитированием
Старый 08.02.2013, 21:39   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
ExtractFileDir
Что эта функция дает ты знаешь? Тебе ExtractFilePath() нужен.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.02.2013, 22:11   #7
Host-2013
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 63
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что эта функция дает ты знаешь? Тебе ExtractFilePath() нужен.
да знаю, нет мне нужен именно ExtractFileDir из ParamStr(0), поскольку ParamStr(0) возвращает путь к exe-шнику а мне нужен к кфг файлу в этой же дирректории
и вообще лично мне кажется что вся проблема заключается в изменении атрибутов или в удалении...

по просьбам:
Код:
Procedure GoCMD(command: string);
begin
ShellExecute(0,'open','cmd.exe',PChar('/c '+command),'C:\Windows\system32\',SW_SHOW);
end;

Последний раз редактировалось Host-2013; 08.02.2013 в 22:13.
Host-2013 вне форума Ответить с цитированием
Старый 08.02.2013, 22:28   #8
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Цитата:
Сообщение от Host-2013 Посмотреть сообщение
кажется что вся проблема заключается в изменении атрибутов или в удалении...
Правильно кажется. Нельзя сохранить файл с атрибутом только для чтения. Перед строкой
Код:
SL.SaveToFile(ExtractFileDir(ParamStr(0))+'\userconfig.cfg');
сбрось флажок "только для чтения"
eoln вне форума Ответить с цитированием
Старый 08.02.2013, 23:03   #9
Host-2013
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 63
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Правильно кажется. Нельзя сохранить файл с атрибутом только для чтения. Перед строкой
Код:
SL.SaveToFile(ExtractFileDir(ParamStr(0))+'\userconfig.cfg');
сбрось флажок "только для чтения"
еще раз ВНИМАТЕЛЬНО перечитай код... все сбрасывается в самом начале
Host-2013 вне форума Ответить с цитированием
Старый 08.02.2013, 23:09   #10
Host-2013
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 63
По умолчанию

впрочем по пути подумал и заменил:

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Original,
  Classes;

Var name: string;
    SL: TStringList;
    i: integer;

begin
write('Enter new name: ');
readln(name);
GoCMD('attrib -r "'+ExtractFileDir(ParamStr(0))+'\userconfig.cfg"');
SL:= TStringList.Create;
SL.LoadFromFile(ExtractFileDir(ParamStr(0))+'\userconfig.cfg');
GoCMD('del "'+ExtractFileDir(ParamStr(0))+'\userconfig.cfg"');
for i:= 0 to SL.Count-1 do
if pos('name', SL.Strings[i])<>0
then StringReplace(SL.Strings[i], SL.Strings[i], 'name '+name, [rfReplaceAll])
else SL.Add('name '+name);
SL.SaveToFile(ExtractFileDir(ParamStr(0))+'\userconfig.cfg');
GoCMD('attrib +r "'+ExtractFileDir(ParamStr(0))+'\userconfig.cfg"');
SL.Free;
write('Name changed');
readln;
end.
что впрочем особо ничего не поменяло
Host-2013 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необработанное исключение Faton 11 Общие вопросы C/C++ 4 31.10.2012 00:29
Неизвестное программное исключение Стелс Общие вопросы Delphi 10 18.09.2011 07:29
WebClient исключение MyXa Общие вопросы .NET 4 02.02.2011 13:47
Исключение (Delphi) VadEr Помощь студентам 2 05.06.2009 15:29
Исключение EIdReadTimeout Pedro Работа с сетью в Delphi 1 22.09.2007 22:51