![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TFileStream [D7, XP]
Очень Злой © (2011-10-03 16:04:00)Нужно добавить данные в конец файла, если файла нет - то создать его.
Вопрос в том, какой режим открытия нужно использовать?
fmOpenWrite или fmOpenWrite or fmCreate
И если файл существует, то нужно ли вручную передвигать позицию или она сама встанет в конец файла?
Очень Злой (2011-10-03 16:49:00) [21]
> if FileExists(aFileName) then
Т.е. предлагаете сначала вручную проверить наличие файла?
Просто я думал что TFileStream сам может определить что файла нет и создать его...
Ega23 (2011-10-03 16:36:00) [22]
> Нужно добавить данные в конец файла, если файла нет - то
> создать его.
with TMemoryStream.Create do
try
if FileExists(aFileName) then
begin
LoadFromFile(aFileName);
Position := Size;
end;
WriteBuffer(.....);
SaveToFile(aFileName);
finally
Free;
end;
Очень Злой (2011-10-03 16:36:00) [23]если делаю так:
procedure TFrmMain.Button4Click(Sender: TObject);
var
s:string;
begin
s:='Тра-та-та';
with TFileStream.Create('s.txt', fmOpenWrite) do
try
Seek(0,soFromEnd);
WriteBuffer(s[1],length(s));
finally
free;
end;
end;
То к существующим файлам все нормально добавляется, но если файла нет, то получаем эксепшн.
А если так:
procedure TFrmMain.Button4Click(Sender: TObject);
var
s:string;
begin
s:='Тра-та-та';
with TFileStream.Create('s.txt', fmCreate or fmOpenWrite) do
try
Seek(0,soFromEnd);
WriteBuffer(s[1],length(s));
finally
free;
end;
end;
то файл создается, но к существующим файлам ничего не дописывается...
Anatoly Podgoretsky (2011-10-03 16:15:00) [24]Раз, хочешь создать, то естественно надо fmCreate