powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
18 сообщений из 43, страница 2 из 2
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39978890
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Solovej,

Ну так передай правильное, полное имя файла для сохранения.

SaveFile:=TFileStream.Create('ТВОЯ_ПАПКА_КУДА_НАДО_СОХРАНИТЬ\'+FieldByName('TP_ID').AsString + '_' + FieldByName('TP_TYPE').AsString + '_' + FieldByName('TP_NAME').AsString + '.zip', fmCreate);

7z - есть 2 варианта - или распаковывать самому, или написать батник, в который вставить вызов 7z и вызвать этот батник ровно 1 раз для распаковки.
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39978894
Solovej
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster
Solovej,

Ну так передай правильное, полное имя файла для сохранения.

SaveFile:=TFileStream.Create('ТВОЯ_ПАПКА_КУДА_НАДО_СОХРАНИТЬ\'+FieldByName('TP_ID').AsString + '_' + FieldByName('TP_TYPE').AsString + '_' + FieldByName('TP_NAME').AsString + '.zip', fmCreate);

7z - есть 2 варианта - или распаковывать самому, или написать батник, в который вставить вызов 7z и вызвать этот батник ровно 1 раз для распаковки.


для архива уже подключен 7z.dll
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
begin
	  // Распаковывает файлы
	  with CreateInArchive(CLSID_CFormatZip) do
	   begin
	     OpenFile(ExtractFilePath(            );
	     ExtractTo(ExtractFilePath(           );
	   end;
	end;
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39978900
Solovej
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster
Solovej,

Ну так передай правильное, полное имя файла для сохранения.

SaveFile:=TFileStream.Create('ТВОЯ_ПАПКА_КУДА_НАДО_СОХРАНИТЬ\'+FieldByName('TP_ID').AsString + '_' + FieldByName('TP_TYPE').AsString + '_' + FieldByName('TP_NAME').AsString + '.zip', fmCreate);

7z - есть 2 варианта - или распаковывать самому, или написать батник, в который вставить вызов 7z и вызвать этот батник ровно 1 раз для распаковки.


[Ошибка] Unit1.pas(97): Incompatible types: 'String' and 'TFileStream'
97| SaveFile := Edit2.Text + TFileStream.Create(FieldByName('TP_ID').AsString + '_' + FieldByName('TP_TYPE').AsString + '_' + FieldByName('TP_NAME').AsString + '.zip', fmCreate);
где Edit2.Text(изменил)= DBA\
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39978913
Solovej
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Solovej,

Я в ах своей тупости

SaveFile := TFileStream.Create('1\' + FieldByName('TP_ID').AsString + '_' + FieldByName('TP_TYPE').AsString + '_' + FieldByName('TP_NAME').AsString + '.zip', fmCreate);

ошибка типа исключение из класса EFCCreateError сообщ. 'Cannot create file "D:\data\DBA\1\1_0_Dogovor.zip" .Системе не удалось найти указанный путь'
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39978922
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Solovej,

Папку-то создать нужно ПЕРЕД тем, как в нее файлы складывать.
Проверь ее существование :

Код: pascal
1.
if DirectoryExists(..имя папки...)



Если ее нет - ForceDirectories(... создать папку....) вызови для создания папки.

P.S. Сибиряков был прав. В Дельфях выпили F1 :( СавсЭм :(
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39978924
Solovej
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster
Solovej,

Папку-то создать нужно ПЕРЕД тем, как в нее файлы складывать.
Проверь ее существование :

Код: pascal
1.
if DirectoryExists(..имя папки...)



Если ее нет - ForceDirectories(... создать папку....) вызови для создания папки.

P.S. Сибиряков был прав. В Дельфях выпили F1 :( СавсЭм :(


Спасибо, пару секунд сам нашел ответ
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39978925
Solovej
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Solovej
DarkMaster
Solovej,

Папку-то создать нужно ПЕРЕД тем, как в нее файлы складывать.
Проверь ее существование :

Код: pascal
1.
if DirectoryExists(..имя папки...)



Если ее нет - ForceDirectories(... создать папку....) вызови для создания папки.

P.S. Сибиряков был прав. В Дельфях выпили F1 :( СавсЭм :(


Спасибо, пару секунд сам нашел ответ


Осталось только добавить распаковку архива
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39978938
Solovej
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я может, да скорее всего достал уже по глупым вопросом
последовая проблема
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
procedure TForm1.Button3Click(Sender: TObject);
var SaveFile: TFileStream;
    Index: String;
begin
    IBSQL1.SQL.Clear;    //очистка
    IBSQL1.SQL.Add('select TP_ID, TP_BLOB, TP_TYPE, TP_NAME from T_TEMPLATES');     //выставления запроса также также есть уже такойже запрос IBQuery1, но по принцыпу слишком много фалов накружает пк
    IBSQL1.GoToFirstRecordOnExecute:=True; //   запрос первой записи после использую Next
    IBSQL1.ExecQuery; //несовсем понял для чего он
    IBDatabase1.Connected:=True; //подключение базе IBSQL1 связон с им
  with IBSQL1 do    // дальше для меня лес
    begin
  while not Eof do
      begin
        ForceDirectories(Edit2.Text);
        Index := Edit2.Text + FieldByName('TP_ID').AsString + '_' + FieldByName('TP_TYPE').AsString + '_' + FieldByName('TP_NAME').AsString + '.zip';
        SaveFile := TFileStream.Create(Index, fmCreate);
        FieldByName('TP_BLOB').SaveToStream(SaveFile);
        with CreateInArchive(CLSID_CFormatZip) do     \\ от 
        begin
           OpenFile(Index); 
           ExtractTo(Index + '1');
        end;                                                          \\ до 
        Next;
        SaveFile.Free;
      end;
    Close;
    end;
end;


[Error]Процесс не может получить доступ к фалу так как этот файл занят другим процесом
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39978946
Solovej
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Solovej
Я может, да скорее всего достал уже по глупым вопросом
последовая проблема
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
procedure TForm1.Button3Click(Sender: TObject);
var SaveFile: TFileStream;
    Index: String;
begin
    IBSQL1.SQL.Clear;    //очистка
    IBSQL1.SQL.Add('select TP_ID, TP_BLOB, TP_TYPE, TP_NAME from T_TEMPLATES');     //выставления запроса также также есть уже такойже запрос IBQuery1, но по принцыпу слишком много фалов накружает пк
    IBSQL1.GoToFirstRecordOnExecute:=True; //   запрос первой записи после использую Next
    IBSQL1.ExecQuery; //несовсем понял для чего он
    IBDatabase1.Connected:=True; //подключение базе IBSQL1 связон с им
  with IBSQL1 do    // дальше для меня лес
    begin
  while not Eof do
      begin
        ForceDirectories(Edit2.Text);
        Index := Edit2.Text + FieldByName('TP_ID').AsString + '_' + FieldByName('TP_TYPE').AsString + '_' + FieldByName('TP_NAME').AsString + '.zip';
        SaveFile := TFileStream.Create(Index, fmCreate);
        FieldByName('TP_BLOB').SaveToStream(SaveFile);
        with CreateInArchive(CLSID_CFormatZip) do     \\ от 
        begin
           OpenFile(Index); 
           ExtractTo(Index + '1');
        end;                                                          \\ до 
        Next;
        SaveFile.Free;
      end;
    Close;
    end;
end;


[Error]Процесс не может получить доступ к фалу так как этот файл занят другим процесом


а все нужно после SaveFile.Free;
туплю по полной 5 часов
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39978968
Solovej
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТЕМА ЗАКРЫТА
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39978970
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Solovej,

Не мешай все в одну кучу. Проблемы ловишь на пустом месте же...

1) Выгрузи из БД, закрой соединение.
2) Пройдись по выгруженным файлам FindFirst()/FindNext() и распакуй.
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39979002
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Solovej IBSQL1.ExecQuery; //несовсем понял для чего он
IBDatabase1.Connected:=True; //подключение базе IBSQL1 связон с им
сколько можно долбить в одну точку.
Сначала подключение к БД, а потом уже выполнение запросов. Вы что, не можете в отладчике пошагово всю эту конструкцию пройти?
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39979134
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Solovej,

ну вот, а я только попкорна набрал :)

зы. не понятно, как у ТС все работает, если он сначала делает ExecQuery, а только потом коннектится к базе?
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39979192
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док
Solovej,
зы. не понятно, как у ТС все работает, если он сначала делает ExecQuery, а только потом коннектится к базе?

Оно же во многих компонентах автоматом подключает.
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39979200
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

OpenFile(Index);
а где CloseFile ???
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39979264
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
Док,

OpenFile(Index);
а где CloseFile ???


До очередного "in use....". А так-то да.... кладезь.
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39979265
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док
Solovej,

ну вот, а я только попкорна набрал :)

зы. не понятно, как у ТС все работает, если он сначала делает ExecQuery, а только потом коннектится к базе?


До тех пор, пока в дизайнтайме не выключит Connected.
...
Рейтинг: 0 / 0
Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
    #39979561
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster
До тех пор, пока в дизайнтайме не выключит Connected.

Точно, типичное поведение IBX и его форков (помнится в ФИБах это поправили).

ТС уже и след простыл :)
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Сохранения поток данных BLOB из БП -Firebird, через TStream и разархивировать их.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]