Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сохранить текст из BLOB в файл ? [D5, dBase, FoxPro]


WG ©   (2004-01-08 16:57:00) 

Мастера, помогите в простом вопросе - надо сохранить содержание мемо-поля из БД в текстовом файле (вообще-то надо его в Word передать, но, я так понял, проще всего снача в файл). Как использовать TBlobField.SaveToFile - не могу понять синтаксис и всё :(

Table1.FieldByName("HOLDERS").SaveToFile("c:\temp.tmp") - бред ведь ?

По форуму искал, смотрел, но ничего не понял, туплю чего-то :( Объясните по-простому.


Romkin   (2004-01-09 16:50:00) [1]

И в Ворд мона:

var
Content: string;
v: variant;
begin
Content := FieldByName("MyField")).asString;
V := CreateOleObject("Word.Application");
V.Documents.Add();
V.Selection.TypeText(Content);
V.Visible := true;
end;


WG   (2004-01-09 16:28:00) [2]

2 Stas

Й-е-е-ес ! Заработало !!! Спасибо огромное !!! Вот именно TBlobField(Query.FieldByName("MyField")).SaveToFile("MyFile.txt") мне и надо было !


WG   (2004-01-09 16:23:00) [3]

Ладно, с совместимостью я разобрался, конструкция типа

var Stream1: TBlobField;
...
Stream1 := TBlobField( TBlobStream( Table1.CreateBlobStream(Table1.FieldByName("HOLDERS"), bmRead) ));
Stream1.SaveToFile("c:\temp10.tmp");
Stream1.Free;
...

...компилируется, но при выполнении прога падает. Файл temp10.tmp создается, но пустой. Я пробовал так же через TFileStream делать - FileStream.CopyFrom(Stream,0);

но при освобождении (free), файл обнуляется. Блин, уже голову сломал.


Stas   (2004-01-09 16:17:00) [4]

У меня вот так работает
TBlobField(Query.FieldByName("MyField")).SaveToFile("MyFile.txt")


Stas   (2004-01-09 16:13:00) [5]

Ты можешь прямо к полю обратится (Если это возможно)

QueryMyField.SaveToFile ("MyFile.txt")

где QueryMyField - Blob-поле созданное в Designed time


Desdechado   (2004-01-09 16:03:00) [6]

var Stream1 :TStream;


WG   (2004-01-09 10:21:00) [7]

Мастера, ну подскажите, плиз. Парюсь ведь с ерундой. Вот беру пример из хелпа -

procedure TForm1.Button1Click(Sender: TObject);

var
Stream1, Stream2 : TBlobStream;
begin
Stream1 := TBlobStream.Create(Table1Notes, bmRead);
try
Table2.Edit;
{ here’s a different way to create a blob stream }
Stream2 := Table2.CreateBlobStream(Table2.FieldByName("Remarks"), bmReadWrite);
try
Stream2.CopyFrom(Stream1, Stream1.Size);
Table2.Post;
finally
Stream2.Free;
end;
finally
Stream1.Free;

end;
end;

Делаю вроде все то же самое:

var Stream1 :TBlobStream;

begin

Stream1 := Table1.CreateBlobStream(Table1.FieldByName("HOLDERS"), bmRead);
try
Stream1.SaveToFile("c:\temp10.tmp");
finally
Stream1.Free;
end;

end;

Пишет, собака, на строке Stream1 := Table1.CreateBlobStream....:

[Error] Unit1.pas(270): Incompatible types: "TBlobStream" and "TStream"

В чем дело ? Нид хелп !!!


WG   (2004-01-08 18:48:00) [8]

Жутко извиняюсь за назойливость, но нет ли какого конкретного примера ? Я понимаю принцип, проблемы у меня скорее с синтаксисом и увязкой объектов (постоянно то несовместимость типов, то еще что-то)...


MV   (2004-01-08 17:32:00) [9]

Стандартная последовательность:
1.Открываем набор данных.
2.На базе Memo-поля создаем Stream
3.Стреам пишем в файл
4.Убиваем стреам.
5.Закрываем набор данных.


Наверх

Титульная страница Поиск, карта сайта Написать письмо