Вверх ↑
Этот топик читают: Гость
Ответов: 322
Рейтинг: 8
#1: 2022-06-15 10:10:58 ЛС | профиль | цитата
Задался вопросом создать базу инфомации со ссылками на файлы jpg, pdf и т.д.
Все картинки есть возможность открывать кроме pdf.

Add(MainForm,2953706,259,133)
{
Width=822
Height=705
link(onCreate,14812495:doExecute,[])
}
Add(Img_Loader,5689024,406,147)
{
link(onLoad,9409092:doLoad,[])
}
Add(Image,9409092,483,147)
{
Width=806
Height=666
Align=5
link(Bitmap,5689024:Bitmap,[(489,135)(458,135)(458,191)(412,191)])
}
Add(ODialog,14812495,336,147)
{
Filter="BMP, GIF, JPG, JPEG, ICO, WMF, EMF, PNG, XBM, TIFF files (*.bmp;*.gif;*.ico;*wmf;*.emf;*.xbm;*.tiff;*.png;*.jpg;*.jpeg)|.bmp;*.gif;*.ico;*wmf;*.emf;*.xbm;*.tiff;*.png;*.jpg;*.jpeg|All files (*.*)|*.*"
link(onExecute,5689024:doLoad,[])
}
Подскажите есть ли возможность сделать это через HiAsm?
Заранее спасибо.
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 322
Рейтинг: 8
#2: 2022-06-15 13:12:39 ЛС | профиль | цитата
Скиньте ссылку если темы уже были, не могу найти.
карма: 0

0
Ответов: 666
Рейтинг: 139
#3: 2022-06-15 13:26:31 ЛС | профиль | цитата
Dad2016 писал(а):
Скиньте ссылку если темы уже были

Проще пример сделать.

Add(MainForm,10399592,357,224)
{
Width=822
Height=705
link(onCreate,14812495:doExecute,[])
}
Add(ODialog,14812495,420,238)
{
Filter="PDF files|*.pdf"
link(onExecute,710285:doStrCat,[])
}
Add(WebBrowser,3215485,560,238)
{
Left=595
Top=325
Align=5
URL=""
}
Add(StrCat,710285,490,238)
{
Str1="file:///"
link(onStrCat,3215485:doNavigate,[])
}

карма: 14

0
Ответов: 5227
Рейтинг: 585
#4: 2022-06-15 13:47:32 ЛС | профиль | цитата
делал на модифицированных компонентах, выкладывал (искать не буду)

схема и демка https://forum.hiasm.com/getfile/39503

карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
файлы: 1Adobe.zip [235.2KB] [288]
Ответов: 322
Рейтинг: 8
#5: 2022-06-15 14:45:40 ЛС | профиль | цитата
Спасибо всем большое.
Немного допилил и всё норм, осталось немного редактора для картинок добавить.
Add(MainForm,10399592,231,84)
{
Width=822
Height=705
}
Add(ODialog,14812495,280,147)
{
Filter="BMP, GIF, JPG, JPEG, ICO, WMF, EMF, PNG, XBM, TIFF, PDF files (*.bmp;*.gif;*.ico;*wmf;*.emf;*.xbm;*.tiff;*.png;*.jpg;*.jpeg;*.pdf)|.bmp;*.gif;*.ico;*wmf;*.emf;*.xbm;*.tiff;*.png;*.jpg;*.jpeg;*.pdf|All files (*.*)|*.*"
link(onExecute,7297588:doValue,[])
}
Add(WebBrowser,3215485,623,154)
{
Left=595
Top=325
Align=5
URL=""
Point(doBringToFront)
}
Add(StrCat,710285,539,147)
{
Str1="file:///"
link(onStrCat,5566459:doEvent1,[])
}
Add(Hub,5566459,588,147)
{
link(onEvent1,3215485:doBringToFront,[(612,153)(612,188)])
link(onEvent2,3215485:doNavigate,[])
}
Add(Hub,1279507,588,231)
{
link(onEvent1,9409092:doBringToFront,[])
link(onEvent2,9409092:doLoad,[(612,244)(612,223)])
}
Add(MT_Memory,7297588,329,147)
{
link(onData,4176458:doSplit,[])
}
Add(If_else,12357244,427,147)
{
Op2=String(pdf)
link(onTrue,12284719:doData,[])
link(onFalse,9325233:doData,[(475,160)(475,237)])
}
Add(StrPart,4176458,378,147)
{
Char="."
link(onSplit,12357244:doCompare,[])
}
Add(DoData,12284719,490,147)
{
link(onEventData,710285:doStrCat,[])
link(Data,381905:Var1,[(496,135)(415,135)])
}
Add(DoData,9325233,490,231)
{
link(onEventData,5983390:doLoad,[])
link(Data,381905:Var3,[(496,191)])
}
Add(GetDataEx,381905,409,186)
{
Angle=3
link(Data,7297588:Value,[(335,191)])
}
Add(Image,9409092,623,217)
{
Top=35
Width=806
Height=631
Align=5
Point(doBringToFront)
link(Bitmap,5983390:Bitmap,[(629,205)(579,205)(579,277)(545,277)])
}
Add(Img_Loader,5983390,539,231)
{
link(onLoad,1279507:doEvent1,[])
}
Add(ChildPanel,8187518,231,147)
{
link(onEvent1,14812495:doExecute,[])
}
BEGIN_SDK
Add(EditMulti,13396955,21,21)
{
EventCount=1
}
Add(Panel,4290928,35,105)
{
Width=806
Height=35
Align=2
}
Add(Button,14138743,238,42)
{
Left=10
Top=5
Width=155
Caption="Открыть"
link(onClick,13396955:onEvent1,[(296,48)(296,27)])
}
END_SDK

Редактировалось 1 раз(а), последний 2022-06-15 14:46:24
карма: 0

0
Ответов: 666
Рейтинг: 139
#6: 2022-06-15 15:25:30 ЛС | профиль | цитата
Dad2016, Можно всё сделать на WebBrowser
https://forum.hiasm.com/getfile/39504
(Форум портит схемы с тегами)
карма: 14

0
файлы: 1Просмотр jpg pdf.zip [1.1KB] [338]
Ответов: 5227
Рейтинг: 585
#7: 2022-06-15 16:20:33 ЛС | профиль | цитата
Gunta, Да, а если так скажем картинка jpg 55Mb (высокое разрешение на сканере) сколько такой просмотрщик отожрёт памяти
чисто ради интереса спросил (у меня эта схема не отработала и на небольшом файле jpg ~2Mb)
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 666
Рейтинг: 139
#8: 2022-06-15 17:43:04 ЛС | профиль | цитата
andrestudio писал(а):
у меня эта схема не отработала и на небольшом файле jpg ~2Mb

Странно, у меня открываются файлы размером 9,2 Мб и занимают 13,3 Мб памяти.
Снимок.PNG
Я же не настаиваю, что моя схема правильная, я просто предлагаю разные варианты.
Кстати, файл 104,4 Мб у меня тоже не открылся (или я не дождался).
карма: 14

0
Ответов: 5227
Рейтинг: 585
#9: 2022-06-15 19:03:53 ЛС | профиль | цитата
Понятно. Вот бы ещё как то djvu чем прочитать. Кроме activex пока нечем
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 2059
Рейтинг: 131
#10: 2022-06-16 13:57:41 ЛС | профиль | цитата
andrestudio писал(а):
Понятно. Вот бы ещё как то djvu чем прочитать. Кроме activex пока нечем

Раньше в интернете болталась библиотека(автономная) pas какого то немца для djvu, pdf + куча подобных.
Делал IC - всё работало с переводом на КОЛ, но компонент не успел сделать - погибло со старым компьютером.
Как то было не до сук, а сейчас хрен найдёшь, если только на спецовых сайтах для старины, но названия не помню. Можно сделать порт с C\C++, тоже и чаще встречал, но перспективы?

Редактировалось 5 раз(а), последний 2022-06-16 14:10:29
карма: 6

0
Ответов: 5227
Рейтинг: 585
#11: 2022-06-16 18:58:55 ЛС | профиль | цитата
flint2 писал(а):
но перспективы?

В гос структурах формат используется для архивных документов.
По новым законам на бумажных носителях возраст документов снижен, но на электронных носителях даже кое где повышен.
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 322
Рейтинг: 8
#12: 2022-06-17 09:11:03 ЛС | профиль | цитата
Начал делать простенькую прогу для масштабирования и смещения картинки на экране.
Add(MainForm,6320290,308,70)
{
Width=783
Height=629
Caption="Пример использования Img_Shift"
Point(Handle)
link(onCreate,14812495:doExecute,[])
}
Add(Image,9409092,630,84)
{
Top=100
Width=767
Height=490
AutoSize=0
MouseCapture=0
Point(MouseX)
Point(MouseY)
Point(Width)
Point(Height)
link(Bitmap,9032586:Value,[(636,72)(574,72)(574,127)(524,127)])
}
Add(Img_Loader,5983390,413,84)
{
link(onLoad,7231651:doWork2,[])
}
Add(ODialog,14812495,364,84)
{
Filter="BMP, GIF, JPG, JPEG, ICO, WMF, EMF, PNG, XBM, TIFF, PDF files (*.bmp;*.gif;*.ico;*wmf;*.emf;*.xbm;*.tiff;*.png;*.jpg;*.jpeg;*.pdf)|.bmp;*.gif;*.ico;*wmf;*.emf;*.xbm;*.tiff;*.png;*.jpg;*.jpeg;*.pdf|All files (*.*)|*.*"
link(onExecute,5983390:doLoad,[])
}
Add(Img_Shift,6461227,630,224)
{
Pixels=30
Point(doDirectShift)
link(onResult,10695272:doWork3,[(674,230)])
link(Bitmap,7386766:Var2,[])
}
Add(Resize,16318100,770,441)
{
link(onResult,10695272:doWork1,[(884,447)(884,216)])
link(Bitmap,7386766:Var3,[(776,201)])
link(Width,1765918:Value,[(783,366)(790,366)])
link(Height,7785311:Value,[(790,371)(832,371)])
}
Add(MT_Memory,9032586,518,84)
{
link(onData,9409092:doLoad,[])
}
Add(Button,5647691,259,217)
{
Left=560
Top=10
Caption="Вверх"
Data=Integer(2)
link(onClick,11125142:doEvent1,[])
}
Add(Button,8797515,217,231)
{
Left=525
Top=35
Caption="Налево"
Data=Integer(1)
link(onClick,11125142:doEvent3,[])
}
Add(Button,6381857,294,224)
{
Left=595
Top=35
Caption="Направо"
Data=Integer(0)
link(onClick,11125142:doEvent2,[])
}
Add(Button,1607537,259,252)
{
Left=560
Top=60
Caption="Вниз"
Data=Integer(3)
link(onClick,11125142:doEvent4,[(333,258)(333,244)])
}
Add(Hub,11125142,343,217)
{
InCount=4
OutCount=3
link(onEvent1,6461227:doDirectShift,[(621,223)(621,244)])
link(onEvent2,6461227:doLoad,[])
link(onEvent3,6461227:doShift,[])
}
Add(Button,8487047,455,308)
{
Left=320
Top=25
Caption="Меньше"
link(onClick,9206725:doWork1,[(550,314)])
}
Add(Button,8492579,455,385)
{
Left=385
Top=25
Caption="Больше"
link(onClick,7510392:doWork3,[(501,391)])
}
Add(HubEx,7231651,476,84)
{
link(onEvent,9032586:doValue,[])
}
Add(GetDataEx,7386766,630,196)
{
link(Data,9409092:ImageBitmap,[])
}
Add(Memory,1765918,784,315)
{
}
Add(Memory,7785311,826,322)
{
}
Add(Hub,6289081,616,315)
{
OutCount=3
link(onEvent1,216945:doCalc,[])
link(onEvent2,3758796:doCalc,[])
link(onEvent3,10301716:doWork1,[(671,335)])
}
Add(MathParse,216945,651,315)
{
DataCount=1
MathStr="%1 - (%1/100*10)"
link(onResult,14841428:doWork2,[])
link(X1,6912603:Var2,[])
}
Add(MathParse,3758796,693,322)
{
DataCount=1
MathStr="%1 - (%1/100*10)"
link(onResult,338912:doWork2,[])
link(X1,713999:Var2,[])
}
Add(HubEx,10695272,670,210)
{
Angle=3
link(onEvent,7231651:doWork3,[(674,166)(480,166)])
}
Add(Hub,250517,525,371)
{
OutCount=3
link(onEvent1,5150250:doCalc,[])
link(onEvent2,5203352:doCalc,[])
link(onEvent3,10301716:doWork2,[(552,391)(552,447)])
}
Add(MathParse,5150250,560,371)
{
DataCount=1
MathStr="%1 + (%1/100*10)"
link(onResult,14841428:doWork3,[(753,377)])
link(X1,6912603:Var1,[(566,264)])
}
Add(MathParse,5203352,602,378)
{
DataCount=1
MathStr="%1 + (%1/100*10)"
link(onResult,338912:doWork3,[(760,384)])
link(X1,713999:Var1,[(608,278)])
}
Add(HubEx,14841428,749,315)
{
link(onEvent,1765918:doValue,[])
}
Add(HubEx,338912,756,322)
{
link(onEvent,7785311:doValue,[])
}
Add(HubEx,10301716,667,441)
{
link(onEvent,16318100:doResize,[])
}
Add(GetDataEx,6912603,651,259)
{
link(Data,9409092:Width,[])
}
Add(GetDataEx,713999,693,273)
{
link(Data,9409092:Height,[(699,140)(664,140)])
}
Add(InlineCode,12360657,287,364)
{
@Hint=#24:Глобальный перехват мыши|
EventPoints=#2:ev|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,windows,messages;|0:|4:type|27: tagMSLLHOOKSTRUCT = record|12: pt:TPoint;|18: mouseData:dword;|14: flags:dword;|13: time:dword;|23: dwExtraInfo:^Cardinal|5: end;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|17: ev:THI_Event;|0:|23: constructor Create;|33: destructor Destroy; override;|0:|5: end;|0:|14:var H:THandle;|20: hac:THiAsmClass;|0:|14:implementation|0:|49:function hook(code,w,l:integer):Lresult; stdcall;|15:var str:string;|25: ll:tagMSLLHOOKSTRUCT;|15: d:LongWord;|5:begin|38: ll := tagMSLLHOOKSTRUCT(pointer(l)^);|0:|26: d := ll.mouseData shr 16;|46: if d and $8000 <> 0 then d := d or $FFFF0000;|0:|30: str := Int2Str(w)+Int2Str(d);|25: _hi_OnEvent(hac.ev,str);|38: result := CallNextHookEx(H,code,w,l);|4:end;|0:|31:constructor THiAsmClass.Create;|5:begin|18: inherited Create;|13: hac := self;|48: H := SetWindowsHookEx(14, @hook, hInstance, 0);|82: if H = 0 then messagebox(ReadHandle,'Ошибка перехвата мыши','ERROR',mb_iconhand);|4:end;|0:|31:destructor THiAsmClass.Destroy;|5:begin|24: UnhookWindowsHookEx(H);|19: inherited Destroy;|4:end;|0:|4:end.|
link(ev,2464827:doCompare,[])
}
Add(If_else,2464827,343,364)
{
Op2=String(522120)
link(onTrue,9206725:doWork2,[(513,370)(513,321)])
link(onFalse,15611215:doCompare,[])
}
Add(If_else,15611215,406,371)
{
Op2=String(522-120)
link(onTrue,7510392:doWork2,[])
}
Add(HubEx,9206725,546,315)
{
link(onEvent,6289081:doEvent1,[])
}
Add(HubEx,7510392,497,371)
{
link(onEvent,250517:doEvent1,[])
}
Add(InfoTip,12742892,210,196)
{
Info=#21:перемещение по экрану|
Width=155
Height=95
}
Add(InfoTip,9290994,280,294)
{
Info=#33:Масштаб кнопками (можно скроллом)|
Width=456
Height=130
}
1. Если несколько раз +/- масштабировать теряется качество.
2. При сдвиге картинки за пределы окна верха и левой стороны, в последующем та часть картинки которая ушла за границу пропадает.
Прошу совета по данным пунктам, как лучше поступить?

Редактировалось 1 раз(а), последний 2022-06-17 09:11:45
карма: 0

0
Ответов: 2059
Рейтинг: 131
#13: 2022-06-17 12:23:01 ЛС | профиль | цитата
По такой схеме можно сделать поворот, отображение по вертикали\горизонтали.
Конечно схему нужно облагораживать - просто показал принцип, что надо обновлять внутренний буфер, предварительно очистив его, или установить опцию автоматической очистки.
Но в этом случае будет нельзя манипулировать несколькими картинками.
Add(MainForm,6320290,119,42)
{
Width=783
Height=629
Caption="Пример использования Img_Shift"
Point(Handle)
}
Add(Button,5647691,217,238)
{
Left=560
Top=10
Caption="Вверх"
Data=Integer(-10)
link(onClick,2543094:doWork2,[])
}
Add(Button,8797515,175,252)
{
Left=525
Top=35
Caption="Налево"
Data=Integer(-10)
link(onClick,3715352:doWork1,[(303,258)])
}
Add(Button,6381857,259,266)
{
Left=595
Top=35
Caption="Направо"
Data=Integer(10)
link(onClick,3715352:doWork2,[])
}
Add(Button,1607537,217,301)
{
Left=560
Top=60
Caption="Вниз"
Data=Integer(10)
link(onClick,2543094:doWork3,[(270,307)])
}
Add(Button,8487047,252,623)
{
Left=320
Top=15
Caption="Меньше"
Data=Integer(-1)
link(onClick,11824516:doEvent1,[])
}
Add(Button,8492579,161,686)
{
Left=385
Top=15
Caption="Больше"
Data=Integer(1)
link(onClick,16738661:doEvent1,[])
}
Add(InfoTip,12742892,168,217)
{
Info=#21:перемещение по экрану|
Width=155
Height=130
}
Add(PaintBox,6293573,539,105)
{
Top=100
Width=767
Height=490
}
Add(Img_Bmp,2351741,525,455)
{
Point(Transform)
Point(X)
Point(Y)
link(onDraw,6293573:doRefresh,[(576,461)(576,388)(534,388)(534,111)])
link(Bitmap,6293573:Bitmap,[(531,394)(545,394)])
link(SourceBitmap,5045561:Bitmap,[(538,408)(573,408)])
link(Transform,15481771:Transform,[(545,443)(583,443)(583,772)(622,772)])
link(X,15712909:Result,[(552,450)(405,450)])
link(Y,4963455:Result,[(559,447)(391,447)])
}
Add(Img_Loader,5983390,350,392)
{
link(onLoad,15263304:doEvent1,[])
}
Add(ODialog,14812495,301,392)
{
Filter="BMP, GIF, JPG, JPEG, ICO, WMF, EMF, PNG, XBM, TIFF, PDF files (*.bmp;*.gif;*.ico;*wmf;*.emf;*.xbm;*.tiff;*.png;*.jpg;*.jpeg;*.pdf)|.bmp;*.gif;*.ico;*wmf;*.emf;*.xbm;*.tiff;*.png;*.jpg;*.jpeg;*.pdf|All files (*.*)|*.*"
link(onExecute,5983390:doLoad,[])
}
Add(Button,3343426,203,392)
{
Left=45
Top=25
link(onClick,14812495:doExecute,[])
}
Add(MathParse,4963455,385,210)
{
MathStr="%2 + %1"
link(onResult,8432382:doEvent1,[])
link(X2,2122313:Value,[])
}
Add(Memory,2122313,392,147)
{
Default=Integer(0)
}
Add(HubEx,2543094,266,238)
{
link(onEvent,4963455:doCalc,[(317,244)(317,216)])
}
Add(Hub,8432382,448,210)
{
OutCount=3
link(onEvent1,2122313:doValue,[(474,216)(474,184)(380,184)(380,153)])
link(onEvent2,13201157:doWork2,[])
link(onEvent3,6838470:doWork1,[(494,230)])
}
Add(Bitmap,5045561,567,329)
{
Point(Width)
Point(Height)
}
Add(MathParse,15712909,399,315)
{
MathStr="%2 + %1"
link(onResult,8714744:doEvent1,[])
link(X2,7220870:Value,[])
}
Add(Memory,7220870,406,252)
{
Default=Integer(0)
}
Add(Hub,8714744,462,315)
{
OutCount=3
link(onEvent1,7220870:doValue,[(488,321)(488,289)(394,289)(394,258)])
link(onEvent2,3239796:doWork3,[(508,328)])
link(onEvent3,6838470:doWork2,[])
}
Add(HubEx,3715352,299,266)
{
Angle=1
link(onEvent,15712909:doCalc,[(303,321)])
}
Add(Hub,15263304,420,392)
{
link(onEvent1,5045561:doLoad,[(483,398)(483,335)])
link(onEvent2,14582100:doWork2,[])
}
Add(HubEx,14582100,490,399)
{
Angle=1
link(onEvent,75645:doWork1,[])
}
Add(HubEx,6838470,490,329)
{
Angle=1
link(onEvent,14582100:doWork1,[])
}
Add(HubEx,13201157,504,217)
{
Angle=3
link(onEvent,6293573:doClear,[(508,118)])
}
Add(Img_UseScale,15481771,616,728)
{
link(X,7582377:Var2,[])
link(Y,7582377:Var3,[(636,698)])
}
Add(MathParse,14620076,595,623)
{
MathStr="%2 + (%1*0.2)"
link(onResult,16148617:doValue,[(639,629)(639,601)(583,601)(583,573)])
link(X2,16148617:Value,[])
}
Add(Hub,11824516,322,623)
{
OutCount=3
link(onEvent1,708032:doWork2,[])
link(onEvent2,10300237:doWork2,[])
link(onEvent3,3400161:doWork2,[(438,643)(438,454)])
}
Add(HubEx,3400161,490,448)
{
Angle=1
link(onEvent,2351741:doDraw,[(494,461)])
}
Add(Hub,16738661,308,686)
{
OutCount=3
link(onEvent1,708032:doWork3,[(473,692)])
link(onEvent2,10300237:doWork3,[(414,699)])
link(onEvent3,75645:doWork2,[(406,706)(406,426)])
}
Add(HubEx,75645,490,420)
{
Angle=1
link(onEvent,3400161:doWork1,[])
}
Add(Memory,16148617,602,567)
{
Default=Integer(1)
}
Add(GetDataEx,7582377,623,693)
{
link(Data,14620076:Result,[(629,674)(601,674)])
}
Add(HubEx,708032,469,623)
{
link(onEvent,14620076:doCalc,[])
}
Add(HubEx,3239796,504,259)
{
Angle=3
link(onEvent,13201157:doWork3,[])
}
Add(HubEx,10300237,410,630)
{
Angle=3
link(onEvent,3239796:doWork2,[(414,265)])
}


Редактировалось 2 раз(а), последний 2022-06-17 13:38:19
карма: 6

0
Ответов: 5227
Рейтинг: 585
#14: 2022-06-17 12:24:17 ЛС | профиль | цитата
Dad2016, ну так качество теряется потому как масштабируешь уже нес оригиналом
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 666
Рейтинг: 139
#15: 2022-06-18 17:14:25 ЛС | профиль | цитата
andrestudio писал(а):
Вот бы ещё как то djvu чем прочитать. Кроме activex пока нечем

Возможно что-то пригодится http://www.djvu-soft.narod.ru/soft/
Можно djvu конвертировать в файл изображения (pnm, pgm, pbm, bmp, tif, jpeg, ps, pict)
Разбить постранично или как в моём примере всё страницы в одном файле.
Пример на консольной утилите – djvudecode https://forum.hiasm.com/getfile/39510
Просмотр картинок делать лень.
карма: 14

2
файлы: 1djvu_to_image.zip [756.7KB] [301]
Голосовали:andrestudio, Dad2016
Сообщение
...
Прикрепленные файлы
(файлы не залиты)