Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.10.2013, 03:27
NKVD NKVD вне форума
Прохожий
 
Регистрация: 06.01.2011
Сообщения: 25
Репутация: 10
По умолчанию TFileStream запись в конец файла

Доброго времени суток, эксперты!Возникла совершенно дурацкая проблема, на первый взгляд.Сериализую объекты в файл.Делается это в разные промежутки времени.И вместо того, чтобы каждый раз писать в конец файла, не удаляя содержимое, программа пишет поверх содержимого.Никак не могу понять, в чем ошибка.Заранее спасибо за помощь.

Код:
type
  TObraz = class
    X: array [1..49] of Integer; //вектор входного образа  еще надо добавить сюда вектор "желаемый выход"
    T: array [1..4] of Integer; //Желаемый выход
    sq:string; //////////////////////////////////////////////////////////////
    constructor Create(STrGrd: TStringGrid; Col, Row, I, II, III, IIII: Integer; st:string);       //тут будет сериализация\десериализация и побитный парсинг Грида.
    procedure WriteToFile();
  //также можно добавить строковое поле "имя образа"
  end;

implementation

{ TObraz }

//I, II, III, IIII - желаемые выходы, передаваемые с формы
constructor TObraz.Create(STrGrd: TStringGrid; Col, Row, I, II, III, IIII: Integer; st:string);
var u,j,k,flag:Integer;
begin
k:=1;
for u := 0 to Row-1 do
begin
  for j := 0 to Col-1 do
  begin
  //Читаем значение флага, которое записано под видом указателя на объект.
  Flag := Integer(STrGrd.Rows[u].Objects[j]);
  if Flag = 0 then X[k]:=0
  else
  if flag=1 then  X[k]:=1;
  Inc(k);
  end;
end;
//заполняем массив желаемых выходов для данного образа
T[1]:=I;
T[2]:=II;
T[3]:=III;
T[4]:=IIII;
sq:=st;//////////////////////////////////////////////////
end;

procedure TObraz.WriteToFile;
var
  F: TFileStream;
  i:Integer;
begin
F:=TFileStream.Create('Obr.txt', fmCreate or fmOpenReadWrite);
F.Seek(0, soFromEnd);
for i := 1 to High(X) do
  F.WriteBuffer(X[i], SizeOf(X[i]));
for i := 1 to High(T) do
  F.WriteBuffer(T[i], SizeOf(T[i]));
F.WriteBuffer(Pointer(sq)^, Length(sq)); /////////////////////////////////////////
FreeAndNil(F);
end;
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:27.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter