![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Глюкии ввода-вывода ReWrite [D7, WinXP]
mw_Kronos © (2009-10-26 10:51:00)Есть у меня тип:
type TData = record
period :array [0..1, 0..23] of TDateTime;
text :array [0..23] of string[255];
date :TDateTime;
count :integer;
password :array [0..23] of string[255];
end;
Есть процедура которая должна писать в файл этот тип:
function THallData.SaveData(dirPath:string):boolean;
var s:string;
f:file of TData;
begin
s := FormatDateTime('ddmmyyyy',data.date) + '.dat';
{$I-}
SaveData := true;
AssignFile(f, s);
ReWrite(f);
if IOResult = 0 then
Write(f,data)
else
SaveData := false;
CloseFile(f);
{$I+}
end;
Проблема в следующем: если файл не существует, то он создается, но запись в него невозможна, IOResult возвращает 103. А если файл уже существует, то запись проходит успешно. В хелпе написано что ReWrite должна создавать и открывать файл для записи при его отсутствии, но реально выдает ошибку. Почему?
Anatoly Podgoretsky (2009-10-26 12:22:00) [21]И непонятно, зачем там передается dirPath, наверно не зря.
Anatoly Podgoretsky (2009-10-26 12:20:00) [22]> mw_Kronos (26.10.2009 12:14:08) [8]
А чего искать, наверно недостаточно прав на папку.
mw_Kronos (2009-10-26 12:14:00) [23]у меня RadStudio 2007
Сергей М. (2009-10-26 12:06:00) [24]И в "усложненном" тоже работает)
type TData = record
period :array [0..1, 0..23] of TDateTime;
text :array [0..23] of string[255];
date :TDateTime;
count :integer;
password :array [0..23] of string[255];
end;
var
data: TData;
function SaveData(dirPath:string):boolean;
var
i: Integer;
s:string;
f:file of TData;
begin
{$I-}
AssignFile(f, dirpath);
ReWrite(f);
if IOResult = 0 then
Write(f,data)
else
ShowMessage(IntToStr(IOResult));
CloseFile(f);
{$I+}
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
SaveData('c:\1.dat')
end;
Плохиш (2009-10-26 12:03:00) [25]Приведённый код в BDS2006 работает без проблем, ищите ошибку в неприведённом коде.
mw_Kronos (2009-10-26 11:49:00) [26]странно, в упрощенном виде у меня тоже работает
mw_Kronos (2009-10-26 11:45:00) [27]а если не упрощать?
Сергей М. (2009-10-26 11:37:00) [28]У меня этот чуть упрощенный код успешно работает:
function SaveData(dirPath:string):boolean;
var
i: Integer;
f:file of Integer;
begin
{$I-}
AssignFile(f, dirpath);
ReWrite(f);
if IOResult = 0 then
Write(f,i)
else
ShowMessage(IntToStr(IOResult));
CloseFile(f);
{$I+}
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
SaveData('c:\1.dat')
end;
mw_Kronos (2009-10-26 11:29:00) [29]FileMode = 2
Сергей М. (2009-10-26 11:21:00) [30]F1 + "FileMode"