| 
| 
 | Вопрос # 1 189/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты.Почему, когда я вызываю процедуру записи данных
 в INI-файл из обработчика события OnCreate главной формы
 (или до создания главной формы), программа «вылетает» с сообщением
 “Access violation at address XXXXXXXX: write at address XXXXXX. Process stopped. Use
 Step or Run to continue.” Как этого избежать?
 Приложение:Переключить в обычный режим  Procedure WriteStandartOptions;var IniFile: TIniFile;beginIniFile.Create(ExtractFileName(Application.ExeName) + 'AppName.ini');IniFile.WriteString('Options', 'Path', 'C:WINDOWS');IniFile.WriteInteger('Options', 'Color', clBlack);IniFile.Free;end;    Procedure TForm1.FormCreate (Sender: TObject);BeginIf not FileExists(ExtractFileName(Application.ExeName) + 'AppName.ini') Then  WriteStandartOptions;end;   Program Project1; UsesForms,Unit1 in 'Unit1.pas' {Form1} {$R *.res}   BeginIf not FileExists(ExtractFileName(Application.ExeName) + 'AppName.ini') Then  WriteStandartOptions;   Application.Initialize;  Application.CreateForm(TForm1, Form1);  Application.Run;end. 
|  |   Вопрос задал: DoS (статус: 1-ый класс)Вопрос отправлен: 10 декабря 2007, 18:59
 Состояние вопроса: открыт, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, @ndrew!Для начала я бы рекомендовал бы вам поставить кнопочку на форму и вписать туда такой код
 
 ShowMessage(ExtractFileName(Application.ExeName) + 'AppName.ini');Я думаю, что после этого многие вопросы отпали бы:) Если путь к ини файлу указан полный, то он создаётся там, куда указывает путь. а вот если только имя ини файла, то тут загвоздка. В таком случае он создаётся в папке Windows (в Висте говорят немного в другом месте, но сути не меняет).
 наиболее правильно писать эту строку где то так
 ChangeFileExt(Application.exename,'.ini')
 Смотря на тот код, который вы написали, я думаю, вы хотели написать так
 
 ExtractFilePath(Application.exename)+'AppName.ini'Попробуйте это. 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 11 декабря 2007, 01:52
 Оценка за ответ: 4
 |  Ответ #2. Отвечает эксперт: Косолапов Дмитрий Юрьевич Здравствуйте, @ndrew!Самая первая строчка неправильная. Надо:
 IniFile:=TIniFile.Create...
 
|  | Ответ отправил: Косолапов Дмитрий Юрьевич (статус: 8-ой класс)Время отправки: 11 декабря 2007, 08:27
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо вам! Получилось! |  
 Мини-форум вопросаВсего сообщений: 2; последнее сообщение — 11 декабря 2007, 21:50; участников в обсуждении: 2. 
|   | Николай Рубан (статус: 10-ый класс), 10 декабря 2007, 19:14 [#1]:А Вы подключили модуль Inifiles? 
 uses  Windows, Messages,.... Inifiles; |  
|   | DoS (статус: 1-ый класс), 11 декабря 2007, 21:50 [#2]:Естественно! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |