Вверх ↑
Этот топик читают: Гость
Ответов: 299
Рейтинг: 1
#1: 2026-06-10 09:53:42 ЛС | профиль | цитата
Возможно, туповатый вопрос))) Но я не знаю на него ответа))
Как из массива картинок удалить какую нибудь одну?

в arrayRW есть только замена. но это маленько не то.


Add(MainForm,2953706,98,231)
{
Width=920
Height=600
}
Add(BitmapArray,1636802,427,371)
{
Bitmaps=[]
}
Add(ArrayRW,12492177,427,455)
{
Point(Count)
link(onRead,7762710:doLoad,[])
link(Array,1636802:Array,[])
}
Add(Button,12253877,189,469)
{
Left=30
Top=480
Width=120
Height=65
link(onClick,13251997:doExecute,[])
}
Add(Image,7762710,532,455)
{
Top=15
Width=430
Height=420
}
Add(UpDown,15724284,308,315)
{
Left=245
Top=455
Width=60
Height=100
link(onPosition,6239166:doEvent1,[])
}
Add(Hub,6239166,357,315)
{
link(onEvent1,12492177:doRead,[(394,321)(394,461)])
link(onEvent2,7448564:doText,[])
}
Add(Label,7448564,490,322)
{
Left=365
Top=495
}
Add(Img_Loader,14048178,315,469)
{
Point(ImageWidth)
Point(ImageHeight)
link(onLoad,12492177:doAdd,[])
}
Add(ODialog,13251997,266,469)
{
link(onExecute,14048178:doLoad,[])
}

карма: 1

0
Разработчик
Ответов: 26349
Рейтинг: 2149
#2: 2026-06-10 14:19:01 ЛС | профиль | цитата
Вообще-то, такой функционал в этом компоненте не предусмотрен. Те удалить выборочно элемент из массива не получится.
карма: 23

0
Ответов: 9002
Рейтинг: 825
#3: 2026-06-10 18:05:30 ЛС | профиль | цитата
nesco писал(а):
в этом компоненте не предусмотрен
А обойти сбоку!
Обход


Add(MainForm,11228693,371,126)
{
Width=346
Height=417
link(onCreate,2471087:doClear,[(473,146)(473,188)])
}
Add(BitmapArray,1636802,581,210)
{
Bitmaps=[]
}
Add(ArrayRW,12492177,616,301)
{
Point(Count)
link(onRead,7762710:doLoad,[])
link(Array,1636802:Array,[(622,271)(587,271)])
}
Add(Button,12253877,350,308)
{
Left=20
Top=345
Width=80
Height=25
Caption="Add"
link(onClick,13251997:doExecute,[])
}
Add(Image,7762710,658,301)
{
Top=15
Width=310
Height=305
}
Add(UpDown,15724284,574,126)
{
Left=145
Top=330
Height=55
Point(doMax)
link(onPosition,6239166:doEvent1,[])
}
Add(Hub,6239166,616,126)
{
link(onEvent1,12492177:doRead,[(641,132)(641,279)(606,279)(606,307)])
link(onEvent2,7448564:doText,[])
}
Add(Label,7448564,651,133)
{
Left=180
Top=350
}
Add(Img_Loader,14048178,560,315)
{
Point(ImageWidth)
Point(ImageHeight)
link(onLoad,12492177:doAdd,[])
}
Add(ODialog,13251997,399,308)
{
link(onExecute,10403149:doEvent1,[])
}
Add(StrList,2471087,497,175)
{
}
Add(Hub,10403149,448,308)
{
link(onEvent1,2471087:doAdd,[(480,314)(480,181)])
link(onEvent2,8627475:doWork2,[])
}
Add(Button,6576230,350,189)
{
Left=230
Top=345
Caption="Del"
link(onClick,2924537:doData,[])
}
Add(DoData,2924537,399,189)
{
link(onEventData,6133308:doEvent1,[])
link(Data,15724284:Position,[(405,166)(580,166)])
}
Add(Hub,6133308,441,189)
{
OutCount=6
link(onEvent1,2471087:doDelete,[])
link(onEvent2,4966270:doData,[(487,202)(487,237)])
link(onEvent3,15955854:doData,[(466,209)(466,132)])
link(onEvent4,1636802:doClear,[])
link(onEvent5,1155491:doReset,[(473,223)(473,265)(431,265)(431,293)])
link(onEvent6,4012093:doTimer,[(466,230)(466,251)(375,251)(375,279)])
}
Add(DoData,4966270,504,231)
{
link(onEventData,10492109:doEvent1,[])
link(Data,2471087:Count,[])
}
Add(DoData,15955854,504,126)
{
Data=Integer(0)
link(onEventData,15724284:doPosition,[])
}
Add(Timer,4012093,385,273)
{
Interval=100
Enable=1
Point(doAutoStop)
link(onTimer,1155491:doNext,[])
}
Add(ArrayRW,8639144,490,273)
{
link(onRead,8627475:doWork1,[(543,279)])
link(Array,2471087:Array,[(496,222)(517,222)])
}
Add(HubEx,8627475,539,315)
{
link(onEvent,14048178:doLoad,[])
}
Add(Hub,10492109,546,231)
{
link(onEvent1,15724284:doMax,[(571,237)(571,209)(564,209)(564,139)])
link(onEvent2,4012093:doAutoStop,[(571,244)(571,258)(368,258)(368,293)])
}
Add(Counter,1155491,441,273)
{
Min=-1
Point(doMax)
link(onNext,8639144:doRead,[])
}

карма: 19

0
Разработчик
Ответов: 26349
Рейтинг: 2149
#4: 2026-06-10 19:38:23 ЛС | профиль | цитата
Этот компонент нормальный, но только для статики. Для динамики он не пойдет. Кто мешает создать базу данных в памяти и управлять картинками через нее? Я же приводил недавно пример, как записывать и читать любые картинки из базы данных. Удалить же картинку из базы -- плевое дело.
карма: 23

0
Ответов: 9002
Рейтинг: 825
#5: 2026-06-10 23:08:30 ЛС | профиль | цитата
nesco писал(а):
но только для статики
ну да, пришлось увеличить таймер до 100 мсек
nesco, рад вас видеть здесь
карма: 19

0
Разработчик
Ответов: 26349
Рейтинг: 2149
#6: 2026-06-11 13:05:52 ЛС | профиль | цитата
Леонид писал(а):
рад вас видеть здесь

Приветствую! Я тоже рад Вас видеть. Не много осталось народа, кто еще помнит, что такое HiAsm.
карма: 23

0
Ответов: 299
Рейтинг: 1
#7: 2026-06-13 09:24:18 ЛС | профиль | цитата
nesco писал(а):
А обойти сбоку!

Не подойдет. Мне нужно изменять картинки, отмечая на них всякое, а потом, если что удалить какую то. То есть сейчас измененные картинки добавляются в массив и потом, при его переборе, картинки одна за другой сохраняются в файлы. Осталось только функцию на удаление прописать, а ее оказывается нет, вот нежданчик!

nesco писал(а):
Я же приводил недавно пример, как записывать и читать любые картинки из базы данных.

Чот не работает у меня та схема.
видео

https://disk.yandex.ru/i/ZoA4B-_hQ6YRUg

Редактировалось 1 раз(а), последний 2026-06-13 09:25:26
карма: 1

0
Ответов: 1117
Рейтинг: 224
#8: 2026-06-14 06:18:10 ЛС | профиль | цитата
Gitarist писал(а):
Мне нужно изменять картинки, отмечая на них всякое, а потом, если что удалить какую то. То есть сейчас измененные картинки добавляются в массив и потом, при его переборе, картинки одна за другой сохраняются в файлы.

Зачем в данном случае применять BitmapArray? По-моему, он здесь лишний. Загружать, просматривать, изменять и сохранять картинки можно непосредственно на диске.
Можно хранить их во временной папке.
карма: 20

0
Разработчик
Ответов: 26349
Рейтинг: 2149
#9: 2026-06-14 13:30:41 ЛС | профиль | цитата
Gunta писал(а):
Чот не работает у меня та схема

Надо заменить sqlite3.dll на версию не ниже 3.4.2
карма: 23

0
Ответов: 299
Рейтинг: 1
#10: 2026-06-16 03:24:18 ЛС | профиль | цитата
А может кто то для меня тупенького доработать эту схему от Nesco?
схема

Add(MainForm,13203121,231,161)
{
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,875,196)
{
Left=215
Top=5
Width=256
Height=240
}
Add(FormatStr,14414580,742,399)
{
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,[(748,388)(699,388)])
link(Str2,8646129:Part,[])
}
Add(Case,5126562,728,196)
{
Value=String()
link(onNextCase,14428262:doConvert,[])
}
Add(Stream2Hex,14428262,777,196)
{
Mode=1
link(onResult,16673043:doLoadFrom,[])
}
Add(Button,5646810,238,392)
{
Left=205
Top=250
TabOrder=-1
Caption="Add"
Data=String(1)
link(onClick,6607378:doExecute,[])
}
Add(FileStream,11349030,525,392)
{
link(onLoad,13361357:doConvert,[])
link(FileName,5431599:Value,[(531,383)(433,383)(433,432)(398,432)])
}
Add(Hub,15215390,490,392)
{
link(onEvent1,11349030:doOpen,[])
link(onEvent2,11349030:doClose,[])
}
Add(Stream2Hex,13361357,574,392)
{
link(onResult,3763332:doEvent1,[])
}
Add(StyleXP,6978038,231,105)
{
}
Add(ListBox,6320610,560,182)
{
Left=5
Top=5
Width=200
Height=240
DataType=1
Point(doEnsureVisible)
Point(EndIdx)
Point(onSelect)
Point(doSelect)
link(onClick,8725124:doWork1,[(613,195)])
link(onSelect,8725124:doWork2,[])
}
Add(DS_SQLite,15638967,287,175)
{
Name="sqlite_main"
FileName="Images.db"
link(onOpen,4510486:doExec,[])
}
Add(DSC_Exec,4510486,336,175)
{
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,490,182)
{
SQL="SELECT name FROM images"
DSManager="sqlite_main"
link(onQuery,6320610:doAdd,[])
}
Add(ODialog,6607378,294,392)
{
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,392,392)
{
link(onData,1580319:doPart,[])
}
Add(FilePartElm,1580319,441,392)
{
Point(Part)
link(onPart,15215390:doEvent1,[])
}
Add(FilePartElm,527911,693,343)
{
Mode=2
Point(Part)
link(onPart,8646129:doPart,[])
link(FileName,569877:Var2,[])
}
Add(FilePartElm,8646129,749,343)
{
Mode=3
Point(Part)
link(FileName,569877:Var3,[(755,328)])
}
Add(GetDataEx,569877,693,323)
{
Angle=3
link(Data,1580319:Part,[(629,328)(629,432)(447,432)])
}
Add(Hub,3763332,644,392)
{
link(onEvent1,527911:doPart,[(669,398)(669,349)])
link(onEvent2,14414580:doString,[])
}
Add(DSC_Exec,7229812,791,399)
{
DSManager="sqlite_main"
}
Add(Hub,15015445,399,175)
{
InCount=2
OutCount=4
link(onEvent1,6320610:doClear,[(424,181)(424,174)(529,174)(529,195)])
link(onEvent2,10684373:doQuery,[])
link(onEvent3,6431321:doData,[(424,195)(424,279)])
link(onEvent4,10483385:doData,[(431,202)(431,223)])
}
Add(DoData,6431321,581,273)
{
link(onEventData,6320610:doEnsureVisible,[(620,279)(620,244)(550,244)(550,216)])
link(Data,2762085:Var2,[])
}
Add(DoData,10483385,441,217)
{
link(onEventData,6320610:doSelect,[])
link(Data,2762085:Var1,[(447,208)(482,208)(482,250)])
}
Add(GetDataEx,2762085,581,245)
{
link(Data,6320610:EndIdx,[])
}
Add(Hub,15667411,350,392)
{
link(onEvent1,5431599:doValue,[])
link(onEvent2,15015445:doEvent2,[(382,405)(382,188)])
}
Add(FormatStr,10088451,630,196)
{
DataCount=1
Mask="SELECT hex(Image) FROM images WHERE name = '%1'"
Point(FString)
link(onFString,10502055:doQuery,[])
}
Add(DSC_Query,10502055,679,196)
{
DSManager="sqlite_main"
link(onQuery,5126562:doCase,[])
}
Add(Img_GDIFileProcessor,16673043,826,196)
{
Method=1
link(onLoad,8020156:doLoad,[])
}
Add(HubEx,8725124,609,196)
{
link(onEvent,10088451:doString,[])
}


нужно чтобы база принимала картинки из потока, а не из файла. Так же надо завести кнопку "удалить".

Редактировалось 2 раз(а), последний 2026-06-16 03:24:58
карма: 1

0
Ответов: 1117
Рейтинг: 224
#11: 2026-06-16 07:20:04 ЛС | профиль | цитата
Gitarist писал(а):
нужно чтобы база принимала картинки из потока, а не из файла. Так же надо завести кнопку "удалить".

Сделал пример без базы sqlite

Add(MainForm,11228693,385,133)
{
Width=346
Height=417
link(onCreate,12270136:doCreate,[])
}
Add(ArrayRW,12492177,805,441)
{
Point(Count)
link(onRead,7762710:doLoad,[])
link(Array,13936902:Array,[(811,369)(454,369)])
link(Value,1688515:Var3,[(825,432)])
}
Add(Button,12253877,147,266)
{
Left=20
Top=345
Width=80
Height=25
Caption="Add"
link(onClick,13251997:doExecute,[])
}
Add(Image,7762710,861,441)
{
Top=15
Width=310
Height=305
}
Add(UpDown,15724284,686,378)
{
Left=145
Top=330
Height=55
Max=0
Point(doMax)
link(onPosition,6239166:doEvent1,[])
}
Add(Hub,6239166,728,378)
{
link(onEvent1,7448564:doText,[])
link(onEvent2,6215024:doWork1,[(753,391)])
}
Add(Label,7448564,763,378)
{
Left=180
Top=350
}
Add(Img_Loader,14048178,245,266)
{
Point(ImageWidth)
Point(ImageHeight)
link(onLoad,5529192:doEvent1,[])
}
Add(ODialog,13251997,196,266)
{
link(onExecute,14048178:doLoad,[])
}
Add(Button,6576230,280,469)
{
Left=230
Top=345
Caption="Del"
link(onClick,15903298:doEvent1,[])
}
Add(Type_Create,12270136,448,147)
{
StorageType=0
Point(doClear)
}
Add(Type_RW,6439857,497,259)
{
link(GType,10106393:Var2,[])
link(Name,13342049:Count,[])
}
Add(Type_Array,13936902,448,308)
{
Point(NameArray)
link(GType,11089989:Var2,[])
}
Add(GetDataEx,11089989,448,231)
{
link(Data,12270136:FType,[])
}
Add(Math,1427289,455,385)
{
OpType=1
Op2=1
link(onResult,12557386:doEvent1,[])
link(Op1,13936902:Count,[])
}
Add(Type_RW,13992137,581,448)
{
Point(Count)
link(GType,10106393:Var3,[(587,236)])
}
Add(ArrayRW,8382365,525,469)
{
Point(Count)
link(onRead,13992137:doDelete,[])
link(Array,13936902:NameArray,[(531,376)(468,376)])
link(Index,1688515:Var1,[(538,432)])
}
Add(GetDataEx,1688515,686,427)
{
link(Data,15724284:Position,[])
}
Add(GetDataEx,10106393,497,231)
{
Angle=3
link(Data,11089989:Var3,[])
}
Add(Hub,735085,385,308)
{
InCount=2
link(onEvent1,13936902:doLoad,[])
link(onEvent2,1427289:doOperation,[(431,321)(431,391)])
}
Add(Hub,15903298,329,469)
{
link(onEvent1,8382365:doRead,[])
link(onEvent2,735085:doEvent2,[(375,482)(375,321)])
}
Add(HubEx,6215024,749,441)
{
link(onEvent,12492177:doRead,[])
}
Add(Hub,5529192,336,266)
{
OutCount=3
link(onEvent1,13342049:doNext,[(361,272)(361,188)])
link(onEvent2,6439857:doAdd,[])
link(onEvent3,735085:doEvent1,[(375,286)(375,314)])
}
Add(Hub,12557386,637,385)
{
OutCount=3
link(onEvent1,15724284:doMax,[])
link(onEvent2,15724284:doPosition,[(662,398)(662,384)])
link(onEvent3,6215024:doWork2,[(662,405)(662,447)])
}
Add(InfoTip,7793053,112,224)
{
Info=#23:Вместо этих компонентов|16:побавай свою BMP|
Width=204
Height=88
}
Add(CounterEx,13342049,504,182)
{
Max=9999999
}

карма: 20

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