Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Unable to Write


Страницы:   1 2 3

basilcat ©   (2011-08-30 15:48:00) 

Мастера. Очень редко. Иногда раз в пять дней. Иногда сразу в первый день, а потом затишье неделю, но получаю ошибку Unable to write ... В принципе ошибка локализована. Я по мере отработки программы пишу в ини файл номера точек, которые появляются в PointNumbCurrent:TEdit.   Время между записями разное, от 0,006 сек и выше:
[NachPoint]
NNKV=1605,1,999999  - 1605 меняется 1 - 999999. За диапазон не выходит :)

Проверяю перед тем как писать функцией, используется ли файл кем то другим (смогу ли я его открыть):

function FileStatus(const FileName: string): boolean;
var
 F: TFileStream;
begin
 try
   F := TFileStream.Create(FileName, fmOpenReadWrite or fmShareExclusive);
   try
     Result := true;
   finally
     F.Free;
   end;
 except
   Result := false;
 end;
end;
 
Пишу стандартно:

N_NachKadr_Val:TValue;

procedure TValue.Writer;
var
IniFile:TIniFile;
begin
   IniFile:=TIniFile.Create(IniFileName);
try
 IniFile.WriteString(IniSection,IniName,inttostr(Value)+','+inttostr(min)+','+inttostr(max));
finally
   IniFile.Free;
 end;
end;

procedure  Form_Aplication.PointNumbCurrentChange(Sender:TObject);
begin
...
{$I-}
     if FileStatus(SKADR_Str) then
             N_NachKadr_Val.Writer
{$I+}
...
end;

SKADR_Str:=ExtractFilePath(ParamStr(0))+'_point2.txt'; - имя с путём создаётся один раз во время инициализации при запуске приложения.

Пишется стандартно из модуля IniFile

procedure TIniFile.WriteString(const Section, Ident, Value: string);
begin
 if not WritePrivateProfileString(PChar(Section), PChar(Ident),
                                  PChar(Value), PChar(FFileName)) then
   raise EIniFileException.CreateResFmt(@SIniFileWriteError, [FileName]);
end;

Что может быть причиной ошибки Unable to Write?


Inovet   (2011-08-30 17:14:00) [41]

> [4] basilcat   (30.08.11 17:04)
> Пишет 5 дней нормально. Потом УПС... unable to write

Ты проверку FileStatus прикрутил для отлова ошибки или была изначально? Убери её.


basilcat   (2011-08-30 17:04:00) [42]


> Попробуй открыть, только не надо сюда пихать стрим


Такое впечатление что вопрос не читали. Пишет 5 дней нормально. Потом УПС... unable to write. Идеи кроме умничаний есть. Стрим поставил в 7- попытке. До этого try ... хру и т.д.


Anatoly Podgoretsky   (2011-08-30 16:53:00) [43]

Попробуй открыть, только не надо сюда пихать стрим


basilcat   (2011-08-30 16:24:00) [44]


> Это не проверка. Ini-файлы не "открываются" в Delphi-йском
> смысле.


Предложи по другому проверить не занят ли файл чем то (хотя к нему кроме меня и господа Бога никто не обращается априори)


Игорь Шевченко   (2011-08-30 15:54:00) [45]


> Проверяю перед тем как писать функцией, используется ли
> файл кем то другим (смогу ли я его открыть):


Это не проверка. Ini-файлы не "открываются" в Delphi-йском смысле.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо