Доброго времени суток.
Есть dbf файл с MEMO полями(.dbt файл), нужно удалять/добавлять записи в этот файл. При удалении/добавлении MEMO поля сдвигаются.
Как реализовать что бы MEMO поля оставались с правильными значениями?
Модератор: Модераторы
Velial писал(а):нужно удалять/добавлять записи в этот файл. При удалении/добавлении MEMO поля сдвигаются.
Velial писал(а):...MEMO поля сдвигаются.
dbf1.TableName:='Post_tu.dbf';
dbf1.Open;
dbf1.First;
dbf1.Delete;
dbf1.Close;
dbf1.Exclusive:=true;
dbf1.Open;
dbf1.PackTable;
dbf1.Close;
while not dbf2.EOF do
begin
dbf1.Edit;
dbf1.Append;
for i:=0 to dbf2.FieldCount-1 do
begin
If (i=7) or (i=9) then
begin
bs1:=tstream.Create;
bs1:=DBF1.CreateBlobStream(dbf1.Fields.Fields[i],bmwrite);
bs2:=tstream.Create;
bs2:=DBF2.CreateBlobStream(dbf2.Fields.Fields[i],bmread);
tmps:='';
try
spisok:=TStringList.Create;
spisok.LoadFromStream(bs2);
spisok.SaveToStream(bs1);
finally
spisok.Free;
bs1.Free;
bs2.Free;
end
end
else
dbf1.Fields.Fields[i].AsVariant:=dbf2.Fields.Fields[i].AsVariant;
end;
dbf1.Post;
dbf2.Next;
end;
Velial писал(а):Может я не правильно копирую записи?
sign писал(а):Не, вы выбрали древний, устаревший инструмент.
Только и всего.
Переходите на нормальные и будет вам счастье.
Vadim писал(а):Velial
У версии dBase III и IV была такая особенность - при удалении записей (даже после упаковки) соответствующая ссылка на блок в dbf-файле уже отсутствует, а вот сам блок в dbt-файле. сохраняется.
Velial писал(а):А есть предложение как такую проблему можно решить?
Vadim писал(а):Тогда попробуйте создать файлы с той же структурой, но только средствами Lazarus и скормить их второй программе. Если будет всё нормально, то просто замените файлы с неправильным заголовком на файлы, которые создал lazarus.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 198