Файл

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
tar
Сообщения: 4
Зарегистрирован: 25 мар 2007, 16:43

01 апр 2007, 12:26

Программа должна проверить: существует ли в данной директории txt (например filename.txt) файл,

если существует,
то необходимо открыть его, добавить (т.е. если в нём было что-то записано, не
нужно перезаписывать, нужно добавить) в него строки (например, s1,s2,s3) и
сохранить - закрыть файл;

если не существуетб то создать файл под указанным именем и выполнить те же
действия, что описаны выше.

Помогите, пожалуйста, напишите код :(

Вот то что сотворил я, но этот код выдаёт ошибку

procedure TForm1.Button1Click(Sender: TObject);
var
f:TStrings;
s1,s2,s3:string;
fs:TFileStream;


begin

if fileexists('c:\filename.txt') then
Begin
f:=TStrings.Create;
f.LoadFromFile('c:\filename.txt');
s1:='string 1';
s2:='string 1';
s3:='string 1';
f.append(s1);
f.append(s2);
f.append(s3);
f.SaveToFile('c:\filename.txt');
f.Free;
end
else
Begin
fs:=TFileStream.Create('c:\filename.txt',fmCreate,fmShareDenyNone);
fs.Free;
f:=TStrings.Create;
f.LoadFromFile('c:\filename.txt');
s1:='string 1';
s2:='string 1';
s3:='string 1';
f.append(s1);
f.append(s2);
f.append(s3);
f.SaveToFile('c:\filename.txt');
f.Free;
end;
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

01 апр 2007, 21:07

во втором блоке когда файла нет:
fs убрать - ничего не делает, создаёшь и тут же убиваешь
далее

Код: Выделить всё

  f:=TStringsList.Create; // TStringList!
  f.Add('string 1');
  f.Add('string 1');
  f.Add('string 1');
  f.SaveToFile('c:\filename.txt');
  f.Free;
Изображение
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

02 апр 2007, 09:06

[syntax=delphi]var
fs: TFileStream;
OpenMode: Word;
s: String;
begin
if not FileExists('filename.ext')
then OpenMode := fmCreate or fmShareDenyNone
else OpenMode := fmOpenWrite or fmShareDenyNone;
fs := TFileStream.Create('filename.ext', OpenMode);
try
fs.Position := fs.Size;
s := s1 + #13#10;
fs.Write(s[1], Length(s));
s := s2 + #13#10;
fs.Write(s[1], Length(s));
s := s3 + #13#10;
fs.Write(s[1], Length(s));
finally
fs.Free;
end;
end[/syntax]
С уважением, Lost Angel...
Ответить