![]() |
|
|
#1
|
||||
|
||||
|
У меня есть ряд параметров, я хочу сохранить их в текстовый файл, при этом использую паскалевкий метод работы с файлами. И эта ошибка (I/O 183) появляется при перезаписи или создании файла при выходе из программы. Я знаю, что эта ошибка означает, что нет доступа к файлу, т.к. он занят, но это не возможно, т.к. его не что не использует, а при запуске приложения этот файл удаляется.
Вот кусочек этого кода: Код:
if pFist^.Next <> nil then
begin
AssignFile(UsersFile, GetCurrentDir + '\fus.fmbp');
if FileExists(GetCurrentDir + '\fus.fmbp') = true then DeleteFile(GetCurrentDir + '\fus.fmbp'); /// Эту строку я ввел на всякий случай
Rewrite(UsersFile); ///////////// Вот здесь и возникает ошибка
pCurrent := pFist^.Next;
while pCurrent <> nil do
begin |
|
#2
|
||||
|
||||
|
Набросал нечто подобное, глюков нет. Вот это работает нормально:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
f: file;
begin
AssignFile( f, GetCurrentDir + '\1.tmp' );
if FileExists( GetCurrentDir + '\1.tmp' ) then
DeleteFile( GetCurrentDir + '\1.tmp' );
Rewrite( f );
CloseFile( f );
end; |
|
#3
|
||||
|
||||
|
Вот например вся процедура:
Код:
procedure SaveUsers;
var
UsersFile : TextFile;
Buff : String;
begin
if pFist^.Next <> nil then
begin
if FileExists(GetCurrentDir + '\fus.fmp') = true then DeleteFile(GetCurrentDir + '\fus.fmp');
AssignFile(UsersFile, GetCurrentDir + '\fus.fmp');
Rewrite(UsersFile);
pCurrent := pFist^.Next;
while pCurrent^.Next <> nil do
begin
Buff := pCurrent^.Name; // Name
WriteLn (UsersFile, Buff);
Buff := pCurrent^.Login; // Login
WriteLn (UsersFile, Buff);
Buff := pCurrent^.Pass; // Pass
WriteLn (UsersFile, Buff);
Buff := pCurrent^.From; // From
WriteLn (UsersFile, Buff);;
Buff := pCurrent^.SMTPaddres; // SMTPaddres
WriteLn (UsersFile, Buff);
Buff := IntToStr(pTemp^.SMTPport); // SMTPport
WriteLn (UsersFile, Buff);
Buff := pCurrent^.SMTPlogin; // SMTPlogin
WriteLn (UsersFile, Buff);
Buff := pCurrent^.SMTPemail; // SMTPemail
WriteLn (UsersFile, Buff);
Buff := BoolToStr(pTemp^.SMTPautorisation); // SMTPautorisation
WriteLn (UsersFile, Buff);
Buff := pCurrent^.SMTPpass; // SMTPpass
WriteLn (UsersFile, Buff);
Buff := pCurrent^.RazbFile; // RazbFile
WriteLn (UsersFile, Buff);
Buff := pCurrent^.SizeParts; // SizeFile
WriteLn (UsersFile, Buff);
Buff := BoolToStr(pCurrent^.yEnc); // yEnc
Writeln (UsersFile, Buff);
Buff := BoolToStr(pCurrent^.Zip); // ZIP
Writeln (UsersFile, Buff);
Buff := BoolToStr(pCurrent^.Chat); // Chat
WriteLn (UsersFile, Buff);
Buff := IntToStr(pCurrent^.ChatHour); // ChatHour
WriteLn (UsersFile, Buff);
Buff := IntToStr(pCurrent^.ChatMin); // ChatMin
Writeln (UsersFile, Buff);
pCurrent := pCurrent^.Next;
end;
CloseFile (UsersFile);
end;
end;Весь прикол в том, что эта процедура стабильно работала, сохраняло всё что необходимо, но когда я добавил в программу возможность Drag & Drop, всё, здесь как отрезало. И подобные процедуры то же отказываются работать. Может я задел какую-нибудь глобальную переменную, фиг знает, у меня знакомый говорить, что это могло быть. Последний раз редактировалось Ross, 02.11.2006 в 17:06. |
|
#4
|
||||
|
||||
|
Цитата:
Все может быть, т.к. приведенная процедура работает нормально (даже с Drag&Drop). |
|
#5
|
||||
|
||||
|
Вопрос закрыт, я переделал всё под WinAPI. Славо богу всё работает. Спасибо Decoding.
![]() |