Вверх ↑
Этот топик читают: Гость
Ответов: 627
Рейтинг: 3
#1: 2017-07-18 14:53:43 ЛС | профиль | цитата

Add(If_else,1784317,791,364)
{
Op1=Integer(0)
link(onFalse,16204237:doAdd,[(835,377)(835,289)(436,289)(436,202)])
link(Op2,5338289:Value,[(804,352)(846,352)])
}
Add(MainForm,2953706,21,105)
{
Width=573
Height=383
Caption="Ищем копии файлов"
}
Add(Edit,15216250,210,84)
{
Left=80
Top=15
Width=410
Text=""
}
Add(Label,11808342,12,14)
{
Left=15
Top=15
Width=60
Height=17
Caption="Где искать"
}
Add(Button,335334,70,91)
{
Left=495
Top=15
Caption="Выбор"
link(onClick,3264345:doBrowse,[(139,97)(139,90)])
}
Add(Browse,3264345,154,84)
{
Title="Сканировать"
NewDirButton=1
link(onBrowse,15216250:doText2,[(198,90)(198,97)])
}
Add(Button,15604769,56,161)
{
Left=15
Top=45
Width=530
Caption="Искать"
link(onClick,2943089:doEvent1,[])
}
Add(FileSearch,7696906,140,154)
{
Point(Attr)
link(onSearch,16743984:doValue,[(188,160)(188,146)])
link(onEndSearch,10594897:doEvent1,[(184,167)(184,237)(86,237)(86,307)])
link(Dir,15216250:Text,[(153,135)(216,135)])
}
Add(FileAttributes,13983146,196,210)
{
Point(DateCreateReal)
Point(DateAccessReal)
Point(DateModifyReal)
Point(FileSize)
Point(Major)
Point(Minor)
Point(Release)
Point(Build)
link(onRead,11686084:doString,[(288,216)(288,248)(191,248)(191,279)])
link(FileName,15412587:Var2,[(202,202)(209,202)])
link(Attr,7696906:Attr,[(209,194)(160,194)])
}
Add(Memory,16743984,203,140)
{
link(onData,3738448:doPart,[(240,146)(240,153)])
}
Add(FormatStr,11686084,203,273)
{
DataCount=3
Mask="%1;%2;%3"
link(onFString,3497886:doAdd,[(271,279)(271,153)])
link(Str1,13983146:FileSize,[(209,251)(244,251)])
link(Str2,15412587:Var3,[(216,180)])
link(Str3,3738448:Part,[(223,226)(251,226)])
}
Add(GetDataEx,15412587,203,175)
{
link(Data,16743984:Value,[])
}
Add(StrList,3497886,308,147)
{
}
Add(FilePartElm,3738448,245,147)
{
Point(Part)
link(onPart,13983146:doRead,[(289,153)(289,185)(184,185)(184,216)])
}
Add(Hub,2943089,98,161)
{
OutCount=3
link(onEvent1,3497886:doClear,[(210,167)(210,160)])
link(onEvent2,16204237:doClear,[(430,174)(430,209)])
link(onEvent3,7696906:doSearch,[(126,181)(126,160)])
}
Add(DoData,16163684,315,112)
{
Data=Integer(1)
}
Add(StringTable,16204237,448,196)
{
Left=5
Top=70
Width=550
Height=270
Columns=#6:Размер|4:Путь|14:Названия файла|12:Копия Размер|10:Копия Путь|20:Копия Названия файла|
Point(Strings)
link(Str,12169275:Var2,[(454,184)(576,184)(576,345)(629,345)])
}
Add(ArrayRW,2193411,308,301)
{
link(onRead,9772667:doSplit,[(352,307)(352,293)])
link(Array,12749151:Var2,[(314,247)(328,247)])
link(Index,10604585:Count,[(321,289)(283,289)(283,373)(244,373)])
}
Add(Hub,10594897,98,301)
{
OutCount=4
link(onEvent1,12444171:doOperation,[(122,307)(122,314)])
link(onEvent2,15327796:doWork1,[(196,314)(196,405)])
link(onEvent3,7899367:doData,[(122,321)(122,342)])
link(onEvent4,3489173:doEvent1,[(158,328)(158,342)])
}
Add(CounterEx,10604585,238,315)
{
Default=-1
Point(doMax)
Point(doValue)
Point(onThroughMax)
link(onNext,5096600:doCompare,[(275,321)(275,363)])
link(onThroughMax,15327796:doWork2,[(275,328)(275,412)])
}
Add(Math,12444171,133,308)
{
OpType=1
Op2=1
link(onResult,10604585:doMax,[(201,314)(201,328)])
link(Op1,3497886:Count,[(139,250)(321,250)])
}
Add(DoData,7899367,133,336)
{
Data=Integer(-1)
link(onEventData,10604585:doValue,[(201,342)(201,335)])
}
Add(MultiStrPart,9772667,364,287)
{
Count=3
link(onSplit,8895152:doEnum,[(404,293)(404,300)])
}
Add(ArrayEnum,8895152,413,294)
{
link(onItem,5630715:doSplit,[(453,300)(453,286)])
link(Array,14885590:Var2,[])
}
Add(GetDataEx,12749151,322,210)
{
link(Data,3497886:Array,[])
}
Add(MultiStrPart,5630715,462,280)
{
Count=3
link(onSplit,13077130:doCompare,[(499,286)(499,300)])
}
Add(If_else,7625739,553,294)
{
link(onTrue,413299:doString,[(618,300)(618,307)])
link(onFalse,8533340:doEvent2,[(597,307)(597,331)(562,331)(562,356)])
link(Op1,14617563:Var3,[(559,282)(443,282)(443,338)])
link(Op2,15554007:Var3,[(566,282)(496,282)(496,338)])
}
Add(FormatStr,413299,623,301)
{
DataCount=6
Mask="%1;%2;%3;%4;%5;%6"
Point(FString)
link(onFString,4343549:doEnum,[])
link(Str1,14617563:Var1,[(629,289)(361,289)(361,338)])
link(Str2,7696348:Var2,[(636,289)(500,289)(500,337)(377,337)])
link(Str3,9772667:Part3,[(643,289)(507,289)(507,331)(384,331)])
link(Str4,15554007:Var1,[(650,289)(459,289)(459,338)])
link(Str5,15896475:Var2,[(657,289)(559,289)(559,344)(475,344)])
link(Str6,5630715:Part3,[(664,289)(566,289)(566,324)(482,324)])
}
Add(GetDataEx,14617563,364,333)
{
link(Data,9772667:Part1,[])
}
Add(GetDataEx,15554007,462,333)
{
link(Data,5630715:Part1,[])
}
Add(If_else,13077130,504,294)
{
link(onTrue,8533340:doEvent1,[(555,300)(555,349)])
link(onFalse,7625739:doCompare,[(544,307)(544,300)])
link(Op1,7696348:Var3,[(510,282)(445,282)(445,327)])
link(Op2,15896475:Var3,[(517,282)(497,282)(497,334)])
}
Add(GetDataEx,7696348,371,322)
{
link(Data,9772667:Part2,[])
}
Add(GetDataEx,15896475,469,329)
{
link(Data,5630715:Part2,[])
}
Add(Hub,8533340,574,343)
{
InCount=2
OutCount=1
link(onEvent1,3489173:doEvent2,[(600,349)(600,337)(191,337)(191,349)])
}
Add(Hub,3489173,203,336)
{
InCount=2
link(onEvent1,2625749:In,[])
link(onEvent2,10604585:doNext,[(227,349)(227,321)])
}
Add(If_else,5096600,280,357)
{
Op1=Integer(0)
link(onTrue,2193411:doRead,[(324,363)(324,335)(296,335)(296,307)])
link(Op2,15168220:Value,[(293,345)(321,345)(321,436)(349,436)])
}
Add(Memory,15168220,343,392)
{
}
Add(ChanelToIndex,15327796,280,399)
{
link(onIndex,15168220:doValue,[(328,405)(328,398)])
}
Add(ArrayEnum,4343549,686,301)
{
link(onItem,12410435:doCompare,[])
link(onEndEnum,1784317:doCompare,[(754,314)(754,370)])
link(Array,14885590:Var3,[(692,236)])
}
Add(GetDataEx,14885590,413,231)
{
link(Data,12749151:Var3,[(419,215)])
}
Add(If_else,12410435,735,301)
{
link(onFalse,15885879:doWork2,[(779,314)(779,321)])
link(Op1,12169275:Var3,[(741,289)(687,289)(687,341)])
link(Op2,4343549:Item,[(748,289)(720,289)(720,345)(692,345)])
}
Add(GetDataEx,12169275,623,336)
{
link(Data,413299:FString,[])
}
Add(ChanelToIndex,15885879,791,308)
{
link(onIndex,5338289:doValue,[])
}
Add(LineBreak,2344301,735,266)
{
link(Out,15885879:doWork1,[(785,272)(785,314)])
Primary=[2625749,-504,70]
}
Add(Memory,5338289,840,308)
{
}

Что можно поменять?
карма: 0
Высшую красоту, ценность и конфорт можно обрести только в простоте.
0
vip
#1.1контекстная реклама от партнеров
Ответов: 16884
Рейтинг: 1237
#2: 2017-07-18 15:59:21 ЛС | профиль | цитата
Vadimluk1 писал(а):
Ищем копии файлов
Копии по имени или копии по содержанию ?
Копия по содержанию — точное воспроизведение текста какого-либо документа.
А копия по имени - это одноименные файлы.
Vadimluk1 писал(а):
Что можно поменять?
Всё.

Число одноименных файлов:
Add(MainForm,2953706,182,189)
{
Width=322
link(onCreate,11413846:doCount,[])
}
Add(ArrayCountRepeats,11413846,245,203)
{
link(onCount,4940698:doStr,[])
link(Array,14955310:Array,[])
}
Add(Memo,14955310,231,133)
{
Left=15
Top=10
Width=70
Height=245
Strings=#4:Вася|4:Петя|3:Оля|4:Коля|4:Вася|4:Петя|4:Вася|4:Петя|3:Оля|4:Коля|4:Вася|4:Петя|4:Коля|
ScrollBars=2
}
Add(MT_String,4940698,308,203)
{
link(onResult,12997333:doAdd,[])
}
Add(StringTable,12997333,371,203)
{
Left=100
Top=10
Width=185
Height=125
Columns=#3:Имя|5:Число|
}
прим.
Сейчас придет Galkov и скажет свое "фэ".
Это не готовая программа. Это подсказка - в какую сторону копать.

Для подсчета одинаковых по содержимому можно использовать компонент HashSum

Редактировалось 10 раз(а), последний 2017-07-18 16:41:15
карма: 24
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:Vadimluk1
Ответов: 627
Рейтинг: 3
#3: 2017-07-18 16:55:36 ЛС | профиль | цитата
Спасибо, мне надо поиск по имени и содержанию или по размеру файла.

--- Добавлено в 2017-07-18 17:31:29


Add(ArrayCountRepeats,11413846,413,602)
{
link(onCount,4940698:doStr,[])
link(Array,3497886:Array,[(419,572)(475,572)])
}
Add(MT_String,4940698,476,602)
{
link(onResult,16204237:doAdd,[(611,608)(611,534)(499,534)(499,461)])
}
Add(MainForm,2953706,84,364)
{
Width=573
Height=383
Caption="Ищем копии файлов"
}
Add(Edit,15216250,273,343)
{
Left=80
Top=15
Width=410
Text=""
}
Add(Label,11808342,75,273)
{
Left=15
Top=15
Width=60
Height=17
Caption="Где искать"
}
Add(Button,335334,133,350)
{
Left=495
Top=15
Caption="Выбор"
link(onClick,3264345:doBrowse,[(202,356)(202,349)])
}
Add(Browse,3264345,217,343)
{
Title="Сканировать"
NewDirButton=1
link(onBrowse,15216250:doText2,[(261,349)(261,356)])
}
Add(Button,15604769,119,420)
{
Left=15
Top=45
Width=530
Caption="Искать"
link(onClick,2943089:doEvent1,[])
}
Add(FileSearch,7696906,203,413)
{
Point(Attr)
link(onSearch,16743984:doValue,[(251,419)(251,405)])
link(onEndSearch,11413846:doCount,[(373,426)(373,608)])
link(Dir,15216250:Text,[(216,394)(279,394)])
}
Add(Memory,16743984,266,399)
{
link(onData,3738448:doPart,[(306,405)(306,412)])
}
Add(FormatStr,11686084,259,518)
{
DataCount=3
Mask="%1;%2;%3"
link(onFString,3497886:doAdd,[(373,524)(373,503)])
link(Str1,16459261:Var2,[(265,474)(272,474)])
link(Str2,3738448:Part,[(272,478)(321,478)])
link(Str3,3300151:Var2,[(279,474)(447,474)])
}
Add(StrList,3497886,455,497)
{
}
Add(FilePartElm,3738448,315,406)
{
Point(Part)
link(onPart,1224980:doData,[])
}
Add(Hub,2943089,161,420)
{
OutCount=4
link(onEvent1,3497886:doClear,[(315,426)(315,510)])
link(onEvent3,16204237:doClear,[(343,440)(343,468)])
link(onEvent4,7696906:doSearch,[(189,447)(189,419)])
}
Add(StringTable,16204237,511,455)
{
Left=5
Top=70
Width=550
Height=270
Columns=#4:Путь|14:Названия файла|9:Хэш сумма|
Point(Strings)
}
Add(Hashsum,6121917,399,399)
{
link(onResult,14854513:doValue,[])
}
Add(DoData,1224980,357,406)
{
link(onEventData,6121917:doFileHashsum,[])
link(Data,16459261:Var3,[(363,394)(319,394)(319,467)])
}
Add(GetDataEx,16459261,266,462)
{
link(Data,16743984:Value,[])
}
Add(Memory,14854513,441,399)
{
link(onData,11686084:doString,[(485,405)(485,465)(247,465)(247,524)])
}
Add(GetDataEx,3300151,441,441)
{
link(Data,14854513:Value,[])
}

Находит правильно копии файла, но элемент "ArrayCountRepeats" выдаёт только хеш сумму, нужно кроме хеш суммы и подсчёт повторов, ещё полный путь к файлу и имя файла.

Редактировалось 2 раз(а), последний 2017-07-18 17:31:29
карма: 0
Высшую красоту, ценность и конфорт можно обрести только в простоте.
0
Разработчик
Ответов: 4682
Рейтинг: 423
#4: 2017-07-18 21:20:01 ЛС | профиль | цитата
Может, поможет /post/124046

Редактировалось 1 раз(а), последний 2017-07-18 21:20:15
карма: 10
1
Голосовали:Vadimluk1
Ответов: 398
Рейтинг: 57
#5: 2017-07-18 21:25:35 ЛС | профиль | цитата
Добрый день.
Когдато делал поиск копий.
http://forum.hiasm.com/topic/53262
карма: 0

1
Голосовали:Vadimluk1
Ответов: 627
Рейтинг: 3
#6: 2017-07-18 22:23:02 ЛС | профиль | цитата
Poputchik писал(а):
http://forum.hiasm.com/topic/53262

Спасибо, но клоны не нашел у меня в папке. У меня картинки скачены около 5 тысяч и там много клонов, забывал или дважды одно и тоже скачивал. Надо именно вычислять по размеру или по хеш сумме.

--- Добавлено в 2017-07-18 22:27:00

Assasin писал(а):
Может, поможет /post/124046

Спасибо большое помогло !

Редактировалось 1 раз(а), последний 2017-07-18 22:27:00
карма: 0
Высшую красоту, ценность и конфорт можно обрести только в простоте.
0
Ответов: 627
Рейтинг: 3
#7: 2017-07-19 00:01:45 ЛС | профиль | цитата
Add(ArrayCountRepeats,11413846,413,602)
{
link(onCount,4940698:doStr,[])
link(Array,3497886:Array,[(419,572)(475,572)])
}
Add(MT_String,4940698,476,602)
{
link(onResult,16204237:doAdd,[(611,608)(611,534)(499,534)(499,461)])
}
Add(MainForm,2953706,84,364)
{
Width=573
Height=383
Caption="Ищем копии файлов"
}
Add(Edit,15216250,273,343)
{
Left=80
Top=15
Width=410
Text=""
}
Add(Label,11808342,75,273)
{
Left=15
Top=15
Width=60
Height=17
Caption="Где искать"
}
Add(Button,335334,133,350)
{
Left=495
Top=15
Caption="Выбор"
link(onClick,3264345:doBrowse,[(202,356)(202,349)])
}
Add(Browse,3264345,217,343)
{
Title="Сканировать"
NewDirButton=1
link(onBrowse,15216250:doText2,[(261,349)(261,356)])
}
Add(Button,15604769,119,420)
{
Left=15
Top=45
Width=530
Caption="Искать"
link(onClick,2943089:doEvent1,[])
}
Add(FileSearch,7696906,203,413)
{
Point(Attr)
link(onSearch,16743984:doValue,[(251,419)(251,405)])
link(onEndSearch,11413846:doCount,[(373,426)(373,608)])
link(Dir,15216250:Text,[(216,394)(279,394)])
}
Add(Memory,16743984,266,399)
{
link(onData,3738448:doPart,[(306,405)(306,412)])
}
Add(FormatStr,11686084,259,518)
{
DataCount=3
Mask="%1;%2;%3"
link(onFString,3497886:doAdd,[(373,524)(373,503)])
link(Str1,16459261:Var2,[(265,474)(272,474)])
link(Str2,3738448:Part,[(272,478)(321,478)])
link(Str3,3300151:Var2,[(279,474)(447,474)])
}
Add(StrList,3497886,455,497)
{
}
Add(FilePartElm,3738448,315,406)
{
Point(Part)
link(onPart,1224980:doData,[])
}
Add(Hub,2943089,161,420)
{
OutCount=4
link(onEvent1,3497886:doClear,[(315,426)(315,510)])
link(onEvent3,16204237:doClear,[(343,440)(343,468)])
link(onEvent4,7696906:doSearch,[(189,447)(189,419)])
}
Add(StringTable,16204237,511,455)
{
Left=5
Top=70
Width=550
Height=270
Columns=#4:Путь|14:Названия файла|9:Хэш сумма|
Point(Strings)
}
Add(Hashsum,6121917,399,399)
{
link(onResult,14854513:doValue,[])
}
Add(DoData,1224980,357,406)
{
link(onEventData,6121917:doFileHashsum,[])
link(Data,16459261:Var3,[(363,394)(319,394)(319,467)])
}
Add(GetDataEx,16459261,266,462)
{
link(Data,16743984:Value,[])
}
Add(Memory,14854513,441,399)
{
link(onData,11686084:doString,[(485,405)(485,465)(247,465)(247,524)])
}
Add(GetDataEx,3300151,441,441)
{
link(Data,14854513:Value,[])
}

Находит правильно копии файла, но элемент "ArrayCountRepeats" выдаёт только хеш сумму, нужно кроме хеш суммы и подсчёт повторов, ещё полный путь к файлу и имя файла.
Кто еще может помочь, пожалуйста помогите.

Редактировалось 2 раз(а), последний 2017-07-19 00:04:28
карма: 0
Высшую красоту, ценность и конфорт можно обрести только в простоте.
0
Ответов: 627
Рейтинг: 3
#8: 2017-07-19 01:36:10 ЛС | профиль | цитата

Add(MainForm,8475715,126,196)
{
Width=573
Height=383
Caption="Ищем копии файлов"
}
Add(Edit,15216250,315,175)
{
Left=80
Top=15
Width=410
Text=""
}
Add(Label,11808342,117,105)
{
Left=15
Top=15
Width=60
Height=17
Caption="Где искать"
}
Add(Button,335334,175,182)
{
Left=495
Top=15
Caption="Выбор"
link(onClick,3264345:doBrowse,[(244,188)(244,181)])
}
Add(Browse,3264345,259,175)
{
Title="Сканировать"
NewDirButton=1
link(onBrowse,15216250:doText2,[(303,181)(303,188)])
}
Add(Button,15604769,161,252)
{
Left=15
Top=45
Width=530
Caption="Искать"
link(onClick,2943089:doEvent1,[])
}
Add(FileSearch,7696906,245,245)
{
Point(Attr)
link(onSearch,16743984:doValue,[(293,251)(293,237)])
link(onEndSearch,13242666:doSort,[(359,258)(359,440)])
link(Dir,15216250:Text,[(258,226)(321,226)])
}
Add(Memory,16743984,308,231)
{
link(onData,3738448:doPart,[(348,237)(348,244)])
}
Add(FormatStr,11686084,301,350)
{
DataCount=3
Mask="%3;%2;%1"
link(onFString,3497886:doAdd,[(397,356)(397,335)])
link(Str1,16459261:Var2,[(307,306)(314,306)])
link(Str2,3738448:Part,[(314,310)(363,310)])
link(Str3,14854513:Value,[(321,306)(489,306)])
}
Add(StrList,3497886,462,329)
{
}
Add(FilePartElm,3738448,357,238)
{
Point(Part)
link(onPart,1224980:doData,[])
}
Add(Hub,2943089,203,252)
{
OutCount=3
link(onEvent1,3497886:doClear,[(357,258)(357,342)])
link(onEvent2,16204237:doClear,[(385,265)(385,300)])
link(onEvent3,7696906:doSearch,[(231,272)(231,251)])
}
Add(StringTable,16204237,553,287)
{
Left=5
Top=70
Width=550
Height=270
Columns=#9:Хэш сумма|4:Путь|14:Названия файла|
Grid=0
SaveWidth=0
Redaction=1
Point(Strings)
link(onClick,2285376:doSplit,[(597,293)(597,307)])
}
Add(Hashsum,6121917,441,231)
{
link(onResult,14854513:doValue,[])
}
Add(DoData,1224980,399,238)
{
link(onEventData,6121917:doFileHashsum,[])
link(Data,16459261:Var3,[(405,226)(361,226)(361,299)])
}
Add(GetDataEx,16459261,308,294)
{
link(Data,16743984:Value,[])
}
Add(Memory,14854513,483,231)
{
link(onData,11686084:doString,[(527,237)(527,297)(289,297)(289,356)])
}
Add(ArraySort,13242666,441,434)
{
CaseSensitive=0
link(onEndSort,9465038:doEnum,[(485,440)(485,461)(429,461)(429,482)])
link(Array,3497886:Array,[(447,421)(482,421)])
}
Add(ArrayEnum,9465038,441,476)
{
link(onItem,16204237:doAdd,[(513,482)(513,293)])
link(Array,13242666:ArraySort,[])
}
Add(MultiStrPart,2285376,609,301)
{
Count=3
link(onSplit,14640396:doMessage,[(653,307)(653,279)(625,279)(625,251)])
link(Str,16204237:Select,[(615,289)(591,289)(591,337)(566,337)])
}
Add(Message,14640396,637,245)
{
Message="Вы хотите удалить? Да, в корзину. Нет, минуя корзину. Отмена, нечего"
Caption="Удалить?"
Type=3
Point(onYES)
Point(onNO)
Point(onCANCEL)
link(onYES,3027079:doDelete,[(683,258)(683,262)])
link(onNO,6066938:doDelete,[(685,265)(685,314)])
}
Add(FileTools,6066938,700,294)
{
link(FileName,1323869:Var2,[(706,282)(664,282)])
}
Add(FileTools,3027079,697,242)
{
DelToRecycle=1
link(FileName,1323869:Var3,[(703,230)(685,230)(685,299)])
}
Add(GetDataEx,1323869,658,294)
{
Angle=2
link(Data,2285376:Part2,[(664,345)(622,345)])
}


Поставил сортировку, пришлось поменять столбцы местами и не понятно, что происходит, когда ищут клонов в большом количестве файлов (5000~файлов).
карма: 0
Высшую красоту, ценность и конфорт можно обрести только в простоте.
0
Ответов: 16884
Рейтинг: 1237
#9: 2017-07-23 15:52:59 ЛС | профиль | цитата
Vadimluk1, а над применением БД подумать не пробовал ?
карма: 24
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9906
Рейтинг: 351
#10: 2017-07-23 17:54:36 ЛС | профиль | цитата
Кто про что, а Tad про БД
карма: 9

0
Ответов: 627
Рейтинг: 3
#11: 2017-07-24 11:59:22 ЛС | профиль | цитата
Tad, ни разу не применял не в одной программе базу данных, не знаю как ей пользоваться.

Редактировалось 1 раз(а), последний 2017-07-24 11:59:52
карма: 0
Высшую красоту, ценность и конфорт можно обрести только в простоте.
0
Ответов: 497
Рейтинг: 16
#12: 2017-07-24 18:24:07 ЛС | профиль | цитата
Vadimluk1, для этого и придумали примеры
карма: 1
        ]  
0
Ответов: 627
Рейтинг: 3
#13: 2017-07-24 23:20:29 ЛС | профиль | цитата
RAWY_EX, знаю, настолько не пригодилась база данных, примеры не смотрел.
карма: 0
Высшую красоту, ценность и конфорт можно обрести только в простоте.
0
13
Сообщение
...
Прикрепленные файлы
(файлы не залиты)