Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26343
Рейтинг: 2149
#16: 2026-04-29 00:15:56 ЛС | профиль | цитата
На тебе пример, как картинки спрятать в базу. Понимаются и читаются разные форматы. По Add видно какие форматы понимаются для записи в базу (понимается также мультидобавление). Там есть и индекс, и имя, и расширение. Можно вытащить любую картинку в файл с тем же именем по запросу. База создается автоматически, если ее нет, так же, как и сама таблица.

Схема

Add(MainForm,13203121,189,126)
{
Left=20
Top=105
Width=495
Height=315
Caption="Example_bd_ImgToBLOB_&_BLOBToImg"
Position=1
Point(onClose)
link(onCreate,15638967:doOpen,[])
link(onClose,15638967:doClose,[])
}
Add(Image,8020156,833,161)
{
Left=215
Top=5
Width=256
Height=240
}
Add(FormatStr,14414580,700,350)
{
DataCount=3
Mask="INSERT INTO images VALUES\r\n(\r\n(SELECT Max(Id) + 1 FROM images),\r\n'%1',\r\n'%2',\r\nx'%3'\r\n);"
Point(FString)
link(onFString,7229812:doExec,[])
link(Str1,527911:Part,[(706,341)(657,341)])
link(Str2,8646129:Part,[])
}
Add(Case,5126562,686,161)
{
Value=String()
link(onNextCase,14428262:doConvert,[])
}
Add(Stream2Hex,14428262,735,161)
{
Mode=1
link(onResult,16673043:doLoadFrom,[])
}
Add(Button,5646810,196,343)
{
Left=205
Top=250
TabOrder=-1
Caption="Add"
Data=String(1)
link(onClick,6607378:doExecute,[])
}
Add(FileStream,11349030,483,343)
{
link(onLoad,13361357:doConvert,[])
link(FileName,5431599:Value,[(489,334)(391,334)(391,383)(356,383)])
}
Add(Hub,15215390,448,343)
{
link(onEvent1,11349030:doOpen,[])
link(onEvent2,11349030:doClose,[])
}
Add(Stream2Hex,13361357,532,343)
{
link(onResult,3763332:doEvent1,[])
}
Add(StyleXP,6978038,189,84)
{
}
Add(ListBox,6320610,518,147)
{
Left=5
Top=5
Width=200
Height=240
DataType=1
Point(doEnsureVisible)
Point(EndIdx)
Point(onSelect)
Point(doSelect)
link(onClick,8725124:doWork1,[(571,160)])
link(onSelect,8725124:doWork2,[])
}
Add(DS_SQLite,15638967,252,140)
{
Name="sqlite_main"
FileName="Images.db"
link(onOpen,4510486:doExec,[])
}
Add(DSC_Exec,4510486,301,140)
{
SQL="CREATE TABLE IF NOT EXISTS images (\r\nId int,\r\nname text,\r\nformat text,\r\nimage blob\r\n);"
DSManager="sqlite_main"
link(onExec,15015445:doEvent1,[])
}
Add(DSC_Query,10684373,448,147)
{
SQL="SELECT name FROM images"
DSManager="sqlite_main"
link(onQuery,6320610:doAdd,[])
}
Add(ODialog,6607378,252,343)
{
Filter="All Image Files|*.bmp;*.gif;*.ico;*wmf;*.emf;*.tif;*.png;*.jpg;*.jpeg|BMP (*.bmp)|*.bmp|JPG (*.jpg, *.jpeg)|*.jpg;*.jpeg|GIF (*.gif)|*.gif|TIFF (*.tif)|*.tif|PNG (*.png)|*.png|ICO (*.ico)|*.ico|EMF (*.emf)|*.emf|WMF (*.wmf)|*.wmf|All files (*.*)|*.*"
FileName=""
Select=1
link(onExecute,15667411:doEvent1,[])
}
Add(Memory,5431599,350,343)
{
link(onData,1580319:doPart,[])
}
Add(FilePartElm,1580319,399,343)
{
Point(Part)
link(onPart,15215390:doEvent1,[])
}
Add(FilePartElm,527911,651,294)
{
Mode=2
Point(Part)
link(onPart,8646129:doPart,[])
link(FileName,569877:Var2,[])
}
Add(FilePartElm,8646129,707,294)
{
Mode=3
Point(Part)
link(FileName,569877:Var3,[(713,279)])
}
Add(GetDataEx,569877,651,274)
{
Angle=3
link(Data,1580319:Part,[(587,279)(587,383)(405,383)])
}
Add(Hub,3763332,602,343)
{
link(onEvent1,527911:doPart,[(627,349)(627,300)])
link(onEvent2,14414580:doString,[])
}
Add(DSC_Exec,7229812,749,350)
{
DSManager="sqlite_main"
}
Add(Hub,15015445,357,140)
{
InCount=2
OutCount=4
link(onEvent1,6320610:doClear,[(382,146)(382,139)(487,139)(487,160)])
link(onEvent2,10684373:doQuery,[])
link(onEvent3,6431321:doData,[(382,160)(382,244)])
link(onEvent4,10483385:doData,[(389,167)(389,188)])
}
Add(DoData,6431321,539,238)
{
link(onEventData,6320610:doEnsureVisible,[(578,244)(578,209)(508,209)(508,181)])
link(Data,2762085:Var2,[])
}
Add(DoData,10483385,399,182)
{
link(onEventData,6320610:doSelect,[])
link(Data,2762085:Var1,[(405,173)(440,173)(440,215)])
}
Add(GetDataEx,2762085,539,210)
{
link(Data,6320610:EndIdx,[])
}
Add(Hub,15667411,308,343)
{
link(onEvent1,5431599:doValue,[])
link(onEvent2,15015445:doEvent2,[(340,356)(340,153)])
}
Add(FormatStr,10088451,588,161)
{
DataCount=1
Mask="SELECT hex(Image) FROM images WHERE name = '%1'"
Point(FString)
link(onFString,10502055:doQuery,[])
}
Add(DSC_Query,10502055,637,161)
{
DSManager="sqlite_main"
link(onQuery,5126562:doCase,[])
}
Add(Img_GDIFileProcessor,16673043,784,161)
{
Method=1
link(onLoad,8020156:doLoad,[])
}
Add(HubEx,8725124,567,161)
{
link(onEvent,10088451:doString,[])
}

Полное управление картинками в базе тоже можно сделать, но за отдельную плату
И на хрен только тебе это dll вперлось, не туда копал?

Редактировалось 4 раз(а), последний 2026-04-29 00:21:38
карма: 23

0
Ответов: 272
Рейтинг: 1
#17: 2026-04-29 00:40:54 ЛС | профиль | цитата
Спасибо за вашу схему, будем поизучать.
nesco писал(а):
И на хрен только тебе это dll вперлось, не туда копал?

Нужно было освободить exe от картинок, так как уже компилироваться стала долго и сам hiasm стал вылетать когда 4-5 вкладок с проектами открыто. dll - это первое что я попробовал чтобы облегчить приложение. (но кстати hiasm иногда вообще не открывается, с 10 попытки если откроется - тогда есть возможность закрыть все вкладки проекты и работать с 1 -3 вкладками).
Прога разрослась, с картинками exe весил 20мб. Сейчас 3. Это всё от неопытности работы с БД. В своем приложении я там всё перебором строк делаю. Но буду стараться осилить БД ближайшее время.

--- Добавлено в 2026-04-29 00:50:16

nesco писал(а):
но за отдельную плату

ненуачо... почемубыинет.... правда какими то большими суммами не обладаю. этот проект мне пока ничего не принес. да и сам я... гитарист

Редактировалось 2 раз(а), последний 2026-04-29 00:50:42
карма: 1

0
Разработчик
Ответов: 26343
Рейтинг: 2149
#18: 2026-04-29 02:06:06 ЛС | профиль | цитата
Gitarist писал(а):
ненуачо... почемубыинет....

Забей, пошутил я
карма: 23

0
18
Сообщение
...
Прикрепленные файлы
(файлы не залиты)