Перейти к содержимому

Фотография

Вопрос - ОтветЗадал вопрос - получил ответ...


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 764

#21
Tancha

Tancha
  • В доску свой
  • 1 087 сообщений
Уважаемые специалисты по Дельфи...
Подскажите плиз, как добавлять и апдейтить картинку в таблице БД. Чейто помоему - это довольно заморочено все... Не могу найти...
  • 0

#22
Tancha

Tancha
  • В доску свой
  • 1 087 сообщений
А вот подскажите пожалуйста, как сохранить в дельфи дбгрид в эксель ? С чего начать - как подступиться...
Спасибо.
  • 0

#23
Tancha

Tancha
  • В доску свой
  • 1 087 сообщений
Поддерживает ли Дельфи OLE Automation? т.е. возможно ли создать объект CreateOleObject и использовать вызовы OlePropertySet, OlePropertyGet, OleProcedure, OleFunction?
  • 0

#24
Anatem

Anatem

    Dungeon Master

  • В доску свой
  • 1 636 сообщений

Уважаемые специалисты по Дельфи...
Подскажите плиз, как добавлять и апдейтить картинку в таблице БД. Чейто помоему - это довольно заморочено все... Не могу найти...

TDBImage вполне подойдёт. Тип поля желательно что бы был Image или Text, ну или что там. Приведя его к
TBlobField(MyDataSet.FieldByName('Imager')).LoadFromStream и SaveToStream доступны, делай что хочешь. ;)
  • 0

#25
Anatem

Anatem

    Dungeon Master

  • В доску свой
  • 1 636 сообщений

А вот подскажите пожалуйста, как сохранить в дельфи дбгрид в эксель ? С чего начать - как подступиться...
Спасибо.

OLE Automation (см. Ниже).
  • 0

#26
Anatem

Anatem

    Dungeon Master

  • В доску свой
  • 1 636 сообщений

Поддерживает ли Дельфи OLE Automation? т.е. возможно ли создать объект CreateOleObject и использовать вызовы OlePropertySet, OlePropertyGet, OleProcedure, OleFunction?

Ещё как поодерживает! И забудь про такие страшные слова: OlePropertySet, OlePropertyGet, OleProcedure, OleFunction ;)
Три пути:
Самый простой путь: с сайта www.sourceforge.net качаешь отличную либу OfficePartner :rolleyes:
Простой путь: Юзаешь, то что уже намутил Borland закладка Servers.
Правильный путь: Импортируешь библиотеку типов из нужной тебе офисной прилады и делаешь что душе угодно... Project -> Import Type Library.
  • 0

#27
Tancha

Tancha
  • В доску свой
  • 1 087 сообщений

Уважаемые специалисты по Дельфи...
Подскажите плиз, как добавлять и апдейтить картинку в таблице БД. Чейто помоему - это довольно заморочено все... Не могу найти...

TDBImage вполне подойдёт. Тип поля желательно что бы был Image или Text, ну или что там. Приведя его к
TBlobField(MyDataSet.FieldByName('Imager')).LoadFromStream и SaveToStream доступны, делай что хочешь. ;)


Большое спасибо - сделала вот так...
По моему довольно коряво - но не знаю как проще.
Дело в том, что для разных форматов (bmp, jpg) отображение картинки работает по разному...
Поэтому при записи картинки в БД я параллельно в еще одном поле записываю расширение... Как от этого избавиться не знаю...

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 MS: TMemoryStream;
 MyPic: TGraphic;
begin
MS := TMemoryStream.Create ;
if Table1.FieldByName('tttcomment').Text = 'bmp'
then
  MyPic := TBitmap.Create ;
if Table1.FieldByName('tttcomment').Text = 'jpg'
then
  MyPic := TJpegImage.Create ;
try
TGraphicField(Table1.FieldByName('tttimage')).SaveToStream(MS);
MS.Seek(0, 0);
MyPic.LoadFromStream(MS);
Image2.Picture.Assign(MyPic);
finally
MyPic.Free;
MS.Free;
end;
end;
  • 0

#28
Tancha

Tancha
  • В доску свой
  • 1 087 сообщений

Поддерживает ли Дельфи OLE Automation? т.е. возможно ли создать объект CreateOleObject и использовать вызовы OlePropertySet, OlePropertyGet, OleProcedure, OleFunction?

Ещё как поодерживает! И забудь про такие страшные слова: OlePropertySet, OlePropertyGet, OleProcedure, OleFunction ;)
Три пути:
Самый простой путь: с сайта www.sourceforge.net качаешь отличную либу OfficePartner :rolleyes:
Простой путь: Юзаешь, то что уже намутил Borland закладка Servers.
Правильный путь: Импортируешь библиотеку типов из нужной тебе офисной прилады и делаешь что душе угодно... Project -> Import Type Library.


Спасибо... А почему нужно забыть про те страшные слова?  :bored:
  • 0

#29
Anatem

Anatem

    Dungeon Master

  • В доску свой
  • 1 636 сообщений

Спасибо... А почему нужно забыть про те страшные слова?  ;)

В Delphi они тебе ненужны! :rolleyes:
  • 0

#30
Anatem

Anatem

    Dungeon Master

  • В доску свой
  • 1 636 сообщений

Большое спасибо - сделала вот так...
По моему довольно коряво - но не знаю как проще.
Дело в том, что для разных форматов (bmp, jpg) отображение картинки работает по разному...
Поэтому при записи картинки в БД я параллельно в еще одном поле записываю расширение... Как от этого избавиться не знаю...

А просто TDBImage не подошел? Он умеет разберать по форматам! ;) Насчёт записи в поле расширения, в этом ничего такого нет, если охото совсем круто, завтра дам кусочек кода он умеет определять тип графического файла(hard-coded). Типы все которые понимает IE собственно - это его функция и есть.
  • 0

#31
Tancha

Tancha
  • В доску свой
  • 1 087 сообщений

Большое спасибо - сделала вот так...
По моему довольно коряво - но не знаю как проще.
Дело в том, что для разных форматов (bmp, jpg) отображение картинки работает по разному...
Поэтому при записи картинки в БД я параллельно в еще одном поле записываю расширение... Как от этого избавиться не знаю...

А просто TDBImage не подошел? Он умеет разберать по форматам! ;) Насчёт записи в поле расширения, в этом ничего такого нет, если охото совсем круто, завтра дам кусочек кода он умеет определять тип графического файла(hard-coded). Типы все которые понимает IE собственно - это его функция и есть.


Неа TDBImage не подошел... он JPE-ги из базы почемуто вообще показывать не умеет... :rolleyes:
а кусочек кода - было бы здорово :bored:
  • 0

#32
Anatem

Anatem

    Dungeon Master

  • В доску свой
  • 1 636 сообщений

Неа TDBImage не подошел... он JPE-ги из базы почемуто вообще показывать не умеет... ;)
а кусочек кода - было бы здорово :rolleyes:

:bored:
В общем идёшь сюда: Graphics EX качаешь либу. Когда распакуешь обязательно загляни в GraphicConfiguration.inc !!! Она обеспечит тебе поддержку в Delphi кучи графических форматов.

Дальше будет что то типа:

procedure TForm1.BitBtn4Click(Sender: TObject);
var
 GIFGraphic: TGIFGraphic;
begin
 GIFGraphic := TGIFGraphic.Create;

 try
   GIFGraphic.LoadFromFile('C:\PCX\Tests\zdlogo[1].gif');
   Image1.Picture.Bitmap := GIFGraphic;
 finally
   GIFGraphic.Free;
 end;  
end;

Все объекты в Graphics EX потомки TBitmap, что и требовалось доказать :-/ Расширение всё равно в БД лучше хранить, что б не маяться с определением типа, он хоть и работает, но не для всех форматов. К примеру Kodak Photo-CD images (*.pcd) IEешная определялка не выявит ;)

ЗЫ
Готовь пиво ;)
  • 0

#33
Tancha

Tancha
  • В доску свой
  • 1 087 сообщений

Неа TDBImage не подошел... он JPE-ги из базы почемуто вообще показывать не умеет... :bored:
а кусочек кода - было бы здорово :-/

;)
В общем идёшь сюда: Graphics EX качаешь либу. Когда распакуешь обязательно загляни в GraphicConfiguration.inc !!! Она обеспечит тебе поддержку в Delphi кучи графических форматов.
Дальше будет что то типа:
procedure TForm1.BitBtn4Click(Sender: TObject);
var
 GIFGraphic: TGIFGraphic;
begin
 GIFGraphic := TGIFGraphic.Create;
 try
   GIFGraphic.LoadFromFile('C:\PCX\Tests\zdlogo[1].gif');
   Image1.Picture.Bitmap := GIFGraphic;
 finally
   GIFGraphic.Free;
 end;  
end;
Все объекты в Graphics EX потомки TBitmap, что и требовалось доказать ;) Расширение всё равно в БД лучше хранить, что б не маяться с определением типа, он хоть и работает, но не для всех форматов. К примеру Kodak Photo-CD images (*.pcd) IEешная определялка не выявит ;)
ЗЫ
Готовь пиво :)


Биг сенкс... ;) Поразбираюсь на досуге :rolleyes:.
  • 0

#34
Tancha

Tancha
  • В доску свой
  • 1 087 сообщений
А вот может кто подскажет, как решается такая задачка...
(а может она и не решается вовсе)...
Есть результат, возвращаемый хранимой процедурой, примерно следующей структуры:

? F1 F2  
-- -- --
1 aaa 0
2 aaa 1
3 aaa 1
4 aaa 0
1 bbb 0
2 bbb 1
3 bbb 1
4 bbb 1
1 ccc 1
2 ccc 0
3 ccc 1
4 ccc 1
...
причем по желанию можно отдельно получать результат для aaa, bbb, ссс

Задача: надо этот результат какнибудь по уму отобразить... желательно вот так:
? aaa bbb ccc ...
1  1    0     1
2  1    1     0
3  1    1     1
4  0    1     1

ума не приложу, какие компоненты для этого использовать... хотела грид - с lookup полями - вызывающими одну и туже процедуру с разными входными параметрами - не получается :fie:...

Помогите, люди добрые...
  • 0

#35
Anatem

Anatem

    Dungeon Master

  • В доску свой
  • 1 636 сообщений
А много у тебя записей выходит? Если много, то может появится проблема с ограничением на количество полей :fie: Если их немного, я бы хранимую процедуру налобал которая это будет делать, только она будет медленная достаточно, так как будет в тупую перекладывать :eek:
Можно написать расширенную хранимую процедуру, в ней проще решит такого рода проблемы.
  • 0

#36
Tancha

Tancha
  • В доску свой
  • 1 087 сообщений

А много у тебя записей выходит? Если много, то может появится проблема с ограничением на количество полей :eek: Если их немного, я бы хранимую процедуру налобал которая это будет делать, только она будет медленная достаточно, так как будет в тупую перекладывать :eek:
Можно написать расширенную хранимую процедуру, в ней проще решит такого рода проблемы.


Записей относительно много - около 3000 (по 200 на 15)... Но самое обидное - что их может быть переменное количество в результате процедуры, и соотвественно переменное количество строк и полей в гриде...

Процедуру конечно написать можно - это как раз не проблема... :fie: Только вот как?.. Ведь таблица получается какая то трехмерная...
  • 0

#37
Anatem

Anatem

    Dungeon Master

  • В доску свой
  • 1 636 сообщений
:fie:
Ну, тогда тебе прямая дорого разбираться с кубами и всякими там OLAP :smoke:
  • 0

#38
Tancha

Tancha
  • В доску свой
  • 1 087 сообщений

:smoke:
Ну, тогда тебе прямая дорого разбираться с кубами и всякими там OLAP :)


Угу... Уже разбираюсь... Только вот ходят слухи - что всякие там кубы и олапы - в дельфи крайне глючные - и не работают практически?... :fie:
  • 0

#39
Tancha

Tancha
  • В доску свой
  • 1 087 сообщений
Вот тупой вопрос - уже полчаса копаюсь - не могу найти ответ...
как в dbgrid по имени колонки получить ее индекс...?

Неужели только так?:
For j:=1 to DBGrid1.Columns.Count do
begin
if DBGrid1.Fields[j].FieldName = 'dbid'
then break;
end;

Сообщение отредактировал Tancha: 19.08.2003, 14:10:30

  • 0

#40
Ralkor

Ralkor
  • Постоялец
  • 491 сообщений
Ситуация такая:

Есть прога, которая перекодирует и определенным образом обрабатывает некий файл данных. Прога писана в двух вариантах, один на Билдере, другой - в Борланде С++ 5. Алгоритмы одинаковые.
По идее в Борланде должно работать быстрее, так-как терминальный режим т.е. без всякой графики. Однако все наоборот.... Билдерный проект пашет в разы быстрее :smoke:

Вопрос: может есть идеи - почему? Спрашивал у разного уровня программеров, никто не может дать точного ответа...
  • 0


Количество пользователей, читающих эту тему: 0

пользователей: 0, неизвестных прохожих: 0, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.