Вверх ↑
Этот топик читают: Гость
Ответов: 286
Рейтинг: 5
#1: 2022-07-02 12:47:43 ЛС | профиль | цитата
Имеется эталонная папка с .png файлами.Нужно сравнить файлы в других папках с эталонной и дубликаты удалить.
Add(Memo,13163069,665,119)
{
Left=45
Top=85
Width=570
Height=405
ScrollBars=3
Point(doLoad)
}
Add(StrList,14923820,539,189)
{
}
Add(ArrayEnum,11747147,651,245)
{
link(onItem,14355030:doEvent1,[(695,251)(695,244)])
link(Array,13163069:Array,[(657,198)(685,198)])
}
Add(ArrayEnum,7166975,553,245)
{
link(onItem,11747147:doEnum,[])
link(Array,14923820:Array,[])
}
Add(Hub,3373642,385,231)
{
OutCount=4
link(onEvent1,13872315:doCompare,[(473,237)(473,118)])
link(onEvent2,14923820:doAdd,[(487,244)(487,195)])
link(onEvent3,7166975:doEnum,[])
}
Add(StrMask,13872315,546,112)
{
Mask="*drawable-xhdpi*"
Point(doMask)
link(onTrue,10083864:doPart,[])
}
Add(Memo,14183736,894,251)
{
Left=635
Top=90
Width=570
Height=405
ScrollBars=3
Point(doLoad)
}
Add(StrMask,8826521,805,245)
{
Point(doMask)
link(onTrue,14183736:doAdd,[(865,258)(865,257)])
link(Str,7166975:Item,[(811,233)(685,233)(685,289)(559,289)])
}
Add(FormatStr,12854121,742,266)
{
Mask="*%1 *"
link(onFString,8826521:doMask,[(790,272)(790,258)])
}
Add(Hub,14355030,707,238)
{
link(onEvent1,12854121:doString,[(731,244)(731,272)])
link(onEvent2,8826521:doCompare,[])
}
Add(FilePartElm,10083864,595,119)
{
link(onPart,13163069:doAdd,[])
}
Add(Button,1032059,98,231)
{
Left=290
Top=5
Width=100
Caption="Папка"
link(onClick,1584642:doBrowse,[])
}
Add(Button,1454278,224,231)
{
Left=290
Top=30
Width=100
Enabled=1
Caption="Заменить"
Point(doEnabled)
link(onClick,9717498:doSearch,[])
}
Add(Edit,8494145,182,231)
{
Left=60
Top=10
Width=195
Text=""
link(onChange,1454278:doEnabled,[])
}
Add(Browse,1584642,140,231)
{
Title="Select Folder"
NewDirButton=1
link(onBrowse,8494145:doText,[])
}
Add(FileSearch,9717498,294,231)
{
Ext="*.png"
TimeType=1
link(onSearch,3373642:doEvent1,[])
link(Dir,8494145:Text,[(307,219)(255,219)(255,275)(188,275)])
}

Вроде все просто а не выходит.И очень медленно работает.

Редактировалось 1 раз(а), последний 2022-07-02 12:48:08
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 2188
Рейтинг: 673
#2: 2022-07-02 18:00:57 ЛС | профиль | цитата
Udokanec, как вариант использовать вот такой алгоритм:

Add(MainForm,2953706,280,301)
{
Width=422
Height=413
link(onCreate,11747147:doEnum,[])
}
Add(StrList,15880991,364,245)
{
Strings=#5:a.png|5:e.png|5:a.png|5:b.png|5:a.png|5:b.png|5:c.png|5:d.png|5:e.png|5:f.png|
Point(doGetIndex)
Point(onGetIndex)
link(onGetIndex,13458699:doCompare,[])
AddHint(54,-195,42,130,Strings)
}
Add(Memo,2318742,623,273)
{
Left=85
Top=40
Width=185
Height=295
}
Add(ArrayEnum,11747147,378,315)
{
Type=1
link(onItem,15880991:doGetIndex,[(416,321)(416,307)(352,307)(352,293)])
link(Array,15880991:Array,[])
AddHint(47,13,35,13,Type)
}
Add(Hub,9249669,504,259)
{
OutCount=3
link(onEvent1,15880991:doDelete,[(527,265)(527,223)(346,223)(346,265)])
link(onEvent2,5061365:doGetString,[(530,272)(530,314)])
link(onEvent3,5061365:doDelete,[])
}
Add(If_else,13872552,455,252)
{
Op2=Integer(-1)
link(onFalse,9249669:doEvent1,[])
AddHint(-3,34,24,13,Op2)
}
Add(If_else,13458699,413,252)
{
Type=5
link(onTrue,13872552:doCompare,[])
link(Op2,11747147:Index,[(426,240)(495,240)(495,369)(391,369)])
}
Add(StrList,5061365,553,259)
{
Strings=#15:d:\\test1\a.png|15:d:\\test1\e.png|15:d:\\test2\a.png|15:d:\\test1\b.png|14:d:\\test\a.png|14:d:\\test\b.png|14:d:\\test\c.png|14:d:\\test\d.png|14:d:\\test\e.png|14:d:\\test\f.png|
Point(doGetIndex)
Point(onGetIndex)
Point(doGetString)
Point(onGetString)
link(onGetString,2318742:doAdd,[])
AddHint(-79,-209,89,130,Strings)
}
Add(Label,7553020,623,224)
{
Left=140
Top=15
Width=58
Height=17
Caption="дубликаты"
}
Обратите внимание что перебор идет снизу вверх. И файлы эталонной папки нужно добавить в конец списка (можно обычной маской в конец списка добавлять).
Вот набросок:


Add(Button,1032059,161,280)
{
Left=290
Top=5
Width=100
Caption="Папка"
link(onClick,1584642:doBrowse,[])
}
Add(Button,1454278,287,280)
{
Left=290
Top=30
Width=100
Enabled=1
Caption="Заменить"
Point(doEnabled)
link(onClick,9717498:doSearch,[])
}
Add(Edit,8494145,245,280)
{
Left=60
Top=10
Width=195
Text=""
link(onChange,1454278:doEnabled,[])
}
Add(Browse,1584642,203,280)
{
Title="Select Folder"
NewDirButton=1
link(onBrowse,8494145:doText,[])
}
Add(FileSearch,9717498,329,280)
{
Ext="*.png"
TimeType=1
link(onSearch,16306322:doEvent1,[])
link(onEndSearch,2351151:doEnum,[(368,293)(368,398)])
link(Dir,8494145:Text,[(342,268)(151,268)(151,324)(251,324)])
}
Add(FilePartElm,10083864,406,322)
{
link(onPart,7637184:doAdd,[])
}
Add(Hub,16306322,378,280)
{
link(onEvent1,5061365:doAdd,[(635,286)(635,342)])
link(onEvent2,10083864:doPart,[(402,293)(402,328)])
}
Add(MainForm,2953706,168,350)
{
Width=422
Height=413
}
Add(StrList,7637184,462,322)
{
Point(doGetIndex)
Point(onGetIndex)
link(onGetIndex,13458699:doCompare,[])
}
Add(Memo,2318742,721,350)
{
Left=85
Top=40
Width=185
Height=295
}
Add(ArrayEnum,2351151,476,392)
{
Type=1
link(onItem,7637184:doGetIndex,[(514,398)(514,384)(450,384)(450,370)])
link(Array,7637184:Array,[])
AddHint(47,13,35,13,Type)
}
Add(Hub,9249669,602,336)
{
OutCount=3
link(onEvent1,7637184:doDelete,[(625,342)(625,300)(454,300)(454,342)])
link(onEvent2,5061365:doGetString,[(628,349)(628,391)])
link(onEvent3,5061365:doDelete,[])
}
Add(If_else,13872552,553,329)
{
Op2=Integer(-1)
link(onFalse,9249669:doEvent1,[])
AddHint(-3,34,24,13,Op2)
}
Add(If_else,13458699,511,329)
{
Type=5
link(onTrue,13872552:doCompare,[])
link(Op2,2351151:Index,[(524,317)(594,317)(594,432)(489,432)])
}
Add(StrList,5061365,651,336)
{
Point(doGetIndex)
Point(onGetIndex)
Point(doGetString)
Point(onGetString)
link(onGetString,2318742:doAdd,[])
}
Add(Label,7553020,721,301)
{
Left=320
Top=70
Width=58
Height=17
Caption="дубликаты"
}
Последовательность добавления и очистку списка думаю сами сможете доделать.
карма: 10

0
Ответов: 8881
Рейтинг: 822
#3: 2022-07-02 19:24:02 ЛС | профиль | цитата
sla8a, главное продумать защиту от "удаления" при ошибках пользователя
карма: 19

0
Ответов: 652
Рейтинг: 138
#4: 2022-07-02 20:04:07 ЛС | профиль | цитата
Udokanec писал(а):
Имеется эталонная папка с .png файлами.Нужно сравнить файлы в других папках с эталонной и дубликаты удалить.

Есть разные способы поиска одинаковых файлов(дубликатов).
1.По названию
2.По размеру
3.По содержанию
Я так понимаю мы ищем по названию.

Add(Button,1032059,119,140)
{
Left=45
Top=10
Width=120
Caption="эталонная папка"
link(onClick,2849268:doEvent1,[])
}
Add(Button,1454278,126,266)
{
Left=280
Top=30
Width=215
Caption="Папка где найти и удалить лубликаты"
link(onClick,6763020:doBrowse,[])
}
Add(Edit,8494145,252,147)
{
Left=15
Top=45
Width=195
Text=""
link(onChange,9717498:doSearch,[])
}
Add(Browse,1584642,203,147)
{
Title="Укажите эталонную папку."
NewDirButton=1
link(onBrowse,8494145:doText,[])
}
Add(FileSearch,9717498,301,147)
{
Ext="*.png"
TimeType=1
link(onSearch,3582628:doPart,[])
link(onEndSearch,8658984:doData,[(340,160)(340,223)])
}
Add(MainForm,11209390,70,63)
{
Width=602
Height=413
}
Add(Memo,2318742,476,196)
{
Left=15
Top=75
Width=195
Height=295
}
Add(Memo,10164561,633,181)
{
Left=235
Top=75
Width=330
Height=295
link(Str,1547101:Var3,[(639,138)])
}
Add(FilePartElm,3582628,350,147)
{
link(onPart,8494641:doAdd,[])
}
Add(Hub,2849268,168,140)
{
link(onEvent1,8494641:doClear,[(193,146)(193,139)(389,139)(389,160)])
link(onEvent2,1584642:doBrowse,[])
}
Add(Browse,6763020,196,266)
{
Title="Папка где искать дубликаты"
NewDirButton=1
link(onBrowse,6566935:doSearch,[])
}
Add(FileSearch,6566935,245,266)
{
Ext="*.png"
TimeType=1
link(onSearch,14001984:doValue,[])
}
Add(StrList,8494641,413,147)
{
Point(doGetIndex)
Point(onGetIndex)
link(onGetIndex,15132075:doCompare,[])
}
Add(DoData,8658984,413,217)
{
link(onEventData,2318742:doText,[])
link(Data,8494641:Text,[])
}
Add(Memory,14001984,294,266)
{
link(onData,8211724:doPart,[])
}
Add(FilePartElm,8211724,343,266)
{
link(onPart,8494641:doGetIndex,[(389,272)(389,181)])
}
Add(If_else,15132075,476,154)
{
Op2=Integer(-1)
link(onFalse,2652295:doEvent1,[])
}
Add(FileTools,539386,560,147)
{
link(FileName,1547101:Var1,[(566,138)])
}
Add(Hub,2652295,525,161)
{
link(onEvent1,539386:doDelete,[])
link(onEvent2,10164561:doAdd,[(550,174)(550,187)])
}
Add(GetDataEx,1547101,609,133)
{
Angle=2
link(Data,14001984:Value,[(615,320)(300,320)])
}

В схеме нет защиты от удаления эталонных файлов, то есть папки не должны пересекаться (не должны находится одна в другой)

Леонид писал(а):
главное продумать защиту от "удаления" при ошибках пользователя

Нужно удалять в корзину на всякий случай.
карма: 14

1
Голосовали:sla8a
Ответов: 2188
Рейтинг: 673
#5: 2022-07-02 22:17:38 ЛС | профиль | цитата
Gunta, ваша схема удалит только один дубликат, все остальные если они будут проигнорирует.
   Предположим эталонная папка Project_01 в которой дочерняя drawable и в ней несколько png файлов. А дубликаты находятся в папке OldProject в которой несколько дочерних папок Project_98, Project_97 и т.д. и в каждой дочерняя папка drawable c png файлами.
  И вот найдет ваша схема два дубликата: OldProject/Project_98/drawable/simple.png и OldProject/Project_97/drawable/simple.png, а удалит только один, тот что первый в списке будет.
  Мою схему видно вы не смотрели, как и схему Udokanec

Редактировалось 1 раз(а), последний 2022-07-02 22:23:57
карма: 10

0
Ответов: 652
Рейтинг: 138
#6: 2022-07-02 23:01:24 ЛС | профиль | цитата
sla8a, Ещё раз проверил. Моя схема удалила все файлы в разных папках и подпапках, которые имею названия аналогичные названиям файлов в эталонной папке.
Как я понял, Udokanec пытается сравнивать файлы из каталога «drawable-xhdpi» с остальными файлами в других папках и удалить их если они имеют тоже название. Или это не так?
карма: 14

0
Ответов: 2188
Рейтинг: 673
#7: 2022-07-02 23:10:43 ЛС | профиль | цитата
Gunta, извиняюсь, это я невнимательно посмотрел вашу схему. Действительно удаляет все дубликаты.
карма: 10

0
Ответов: 286
Рейтинг: 5
#8: 2022-07-03 02:09:21 ЛС | профиль | цитата
Gunta,sla8a неожидано.Я такой алгоритм даже не продумывал.Gunta в том то и дело что эталонная папка допустим *drawable-xhdpi* находится в одной папке с другими папками.На ум приходит только КОПИРОВАТЬ-УДАЛИТЬ-ВСТАВИТЬ.
Add(Button,1032059,14,147)
{
Left=45
Top=10
Width=120
Caption="эталонная папка"
link(onClick,5449089:doBrowse,[])
}
Add(Button,1454278,329,329)
{
Left=280
Top=30
Width=215
Caption="Папка где найти и удалить лубликаты"
link(onClick,8782185:doEvent1,[])
}
Add(FileSearch,9717498,567,217)
{
Ext="*.png"
TimeType=1
link(onSearch,3582628:doPart,[])
link(onEndSearch,8658984:doData,[(606,230)(606,293)])
}
Add(MainForm,11209390,154,49)
{
Width=602
Height=659
}
Add(Memo,2318742,742,266)
{
Left=15
Top=75
Width=195
Height=255
}
Add(Memo,10164561,899,251)
{
Left=235
Top=75
Width=330
Height=270
link(Str,1547101:Var3,[(905,208)])
}
Add(FilePartElm,3582628,616,217)
{
link(onPart,8494641:doAdd,[])
}
Add(Browse,6763020,462,336)
{
Title="Папка где искать дубликаты"
NewDirButton=1
link(onBrowse,6566935:doSearch,[])
}
Add(FileSearch,6566935,511,336)
{
Ext="*.png"
TimeType=1
link(onSearch,14001984:doValue,[])
}
Add(StrList,8494641,679,217)
{
Point(doGetIndex)
Point(onGetIndex)
link(onGetIndex,15132075:doCompare,[])
}
Add(DoData,8658984,679,287)
{
link(onEventData,2318742:doText,[])
link(Data,8494641:Text,[])
}
Add(Memory,14001984,560,336)
{
link(onData,8211724:doPart,[])
}
Add(FilePartElm,8211724,609,336)
{
link(onPart,8494641:doGetIndex,[(655,342)(655,251)])
}
Add(If_else,15132075,742,224)
{
Op2=Integer(-1)
link(onFalse,2652295:doEvent1,[])
}
Add(FileTools,539386,826,217)
{
link(FileName,1547101:Var1,[(832,208)])
}
Add(Hub,2652295,791,231)
{
link(onEvent1,539386:doDelete,[])
link(onEvent2,10164561:doAdd,[(816,244)(816,257)])
}
Add(GetDataEx,1547101,875,203)
{
Angle=2
link(Data,14001984:Value,[(881,390)(566,390)])
}
Add(StrMask,13872315,196,147)
{
Mask="*drawable*"
Point(doMask)
link(onTrue,10491973:doCompare,[])
}
Add(StrMask,10491973,245,154)
{
Mask="*hdpi*"
Point(doMask)
link(onFalse,8824824:doCompare,[(289,160)(289,132)])
link(onTrue,132297:doWork2,[])
}
Add(StrMask,8824824,301,126)
{
Mask="*mdpi*"
Point(doMask)
link(onFalse,7082500:doCompare,[])
link(onTrue,132297:doWork1,[(340,139)])
}
Add(Memo,5536696,420,161)
{
Left=84
Top=437
Width=340
Height=182
AddType=1
ScrollBars=2
Point(doLoad)
Point(SelText)
Point(onSetFocus)
Point(onMouseEnter)
}
Add(HubEx,132297,336,161)
{
link(onEvent,9455963:doWork2,[])
}
Add(StrMask,7082500,357,126)
{
Mask="*ldpi*"
Point(doMask)
link(onTrue,9455963:doWork1,[(403,139)])
}
Add(HubEx,9455963,399,161)
{
link(onEvent,5536696:doAdd,[])
}
Add(FileSearch,14184120,140,147)
{
FullName=1
Include=1
link(onSearch,13872315:doCompare,[])
}
Add(Browse,5449089,56,147)
{
Title="Папка где искать дубликаты"
NewDirButton=1
link(onBrowse,8494145:doText,[])
}
Add(Edit,8494145,98,147)
{
Left=60
Top=45
Width=195
Text=""
link(onChange,14184120:doSearch,[])
}
Add(FormatStr,12548257,518,217)
{
Mask="%2\\res\%1"
Point(FString)
link(onFString,9717498:doSearch,[])
link(Str1,11257383:Value,[(524,205)(486,205)(486,261)(447,261)])
link(Str2,8494145:Text,[(531,198)(104,198)])
}
Add(Memory,11257383,441,217)
{
Point(Data)
link(onData,12548257:doString,[])
link(Data,5536696:SelText,[])
}
Add(Hub,8782185,378,329)
{
link(onEvent1,11257383:doValue,[(416,335)(416,223)])
link(onEvent2,6763020:doBrowse,[])
}
Add(Label,5275819,196,56)
{
Left=155
Top=370
Width=222
Height=57
Caption="Выбор эталонной папки\r\nВыделить элемент"
}


Редактировалось 5 раз(а), последний 2022-07-03 03:14:52
карма: 0

0
Ответов: 652
Рейтинг: 138
#9: 2022-07-03 12:06:07 ЛС | профиль | цитата
Udokanec писал(а):
.Gunta в том то и дело что эталонная папка допустим *drawable-xhdpi* находится в одной папке с другими папками.На ум приходит только КОПИРОВАТЬ-УДАЛИТЬ-ВСТАВИТЬ.

Нужно просто пропустить эту папку во время сканирования.

Add(Button,1032059,35,217)
{
Left=45
Top=10
Width=95
Caption="Выбратьпапку"
link(onClick,15679354:doEvent1,[])
}
Add(Button,1454278,441,371)
{
Left=300
Top=10
Width=140
Caption="Найти дубликаты"
link(onClick,8782185:doEvent1,[])
}
Add(FileSearch,9717498,700,259)
{
Ext="*.png"
TimeType=1
link(onSearch,3582628:doPart,[])
link(onEndSearch,8658984:doData,[(767,272)(767,342)])
}
Add(MainForm,11209390,315,77)
{
Width=977
Height=479
}
Add(Memo,2318742,903,315)
{
Left=270
Top=75
Width=195
Height=260
ScrollBars=3
ReadOnly=0
}
Add(Memo,10164561,973,273)
{
Left=490
Top=75
Width=405
Height=260
ScrollBars=3
ReadOnly=0
link(Str,14001984:Value,[(979,264)(953,264)(953,418)(727,418)])
}
Add(FilePartElm,3582628,777,259)
{
link(onPart,8494641:doAdd,[])
}
Add(FileSearch,6566935,539,378)
{
Ext="*.png"
TimeType=1
link(onSearch,4180243:doCompare,[])
link(Dir,10153823:Var2,[])
}
Add(StrList,8494641,840,259)
{
Point(doGetIndex)
Point(onGetIndex)
link(onGetIndex,15132075:doCompare,[])
}
Add(DoData,8658984,840,336)
{
link(onEventData,2318742:doText,[])
link(Data,8494641:Text,[])
}
Add(Memory,14001984,721,378)
{
link(onData,8211724:doPart,[])
}
Add(FilePartElm,8211724,784,378)
{
link(onPart,8494641:doGetIndex,[(830,384)(830,293)])
}
Add(If_else,15132075,903,266)
{
Op2=Integer(-1)
link(onFalse,10164561:doAdd,[])
}
Add(FileTools,539386,1043,462)
{
link(onEnd,10407144:doData,[])
}
Add(StrMask,13872315,280,224)
{
Mask="*drawable*"
Point(doMask)
link(onTrue,10491973:doCompare,[])
}
Add(StrMask,10491973,329,231)
{
Mask="*hdpi*"
Point(doMask)
link(onFalse,8824824:doCompare,[(373,237)(373,209)])
link(onTrue,132297:doWork2,[])
}
Add(StrMask,8824824,385,203)
{
Mask="*mdpi*"
Point(doMask)
link(onFalse,7082500:doCompare,[])
link(onTrue,132297:doWork1,[(424,216)])
}
Add(HubEx,132297,420,238)
{
link(onEvent,9455963:doWork2,[])
}
Add(StrMask,7082500,441,203)
{
Mask="*ldpi*"
Point(doMask)
link(onTrue,9455963:doWork1,[(487,216)])
}
Add(HubEx,9455963,483,238)
{
link(onEvent,5935476:doAdd,[])
}
Add(FileSearch,14184120,224,224)
{
FullName=1
Include=1
link(onSearch,13872315:doCompare,[])
}
Add(Browse,5449089,133,224)
{
Title="Папка где искать дубликаты"
NewStyle=0
NewDirButton=1
link(onBrowse,8494145:doText,[])
}
Add(Edit,8494145,182,224)
{
Left=35
Top=40
Width=195
Text=""
link(onChange,14184120:doSearch,[])
}
Add(FormatStr,12548257,602,259)
{
Mask="%2\\res\%1"
Point(FString)
link(onFString,9717498:doSearch,[])
link(Str2,10153823:Var1,[(615,236)(552,236)])
}
Add(Label,5275819,357,84)
{
Left=60
Top=375
Width=147
Height=27
Caption="Выбор эталонной папки\r\nВыделить элемент"
}
Add(ListBox,5935476,504,238)
{
Left=35
Top=75
Width=205
Height=260
Hint="Выбор эталонной папки\r\nВыделить элемент"
DataType=1
Point(String)
link(onClick,4796137:doEvent1,[])
}
Add(Hub,15679354,98,217)
{
link(onEvent1,10052181:In,[(123,223)(123,209)])
link(onEvent2,5449089:doBrowse,[])
}
Add(LineBreak,544333,455,252)
{
link(Out,5935476:doClear,[(494,258)(494,251)])
Primary=[10052181,-315,-49]
}
Add(Hub,4796137,560,245)
{
link(onEvent1,8494641:doClear,[(816,251)(816,272)])
link(onEvent2,12548257:doString,[(592,258)(592,265)])
}
Add(StrMask,4180243,665,378)
{
Point(doMask)
link(onFalse,14001984:doValue,[])
}
Add(StrCatDelim,13696455,602,385)
{
Delimiter="\"
Str2="*"
link(onStrCatDlm,4180243:doMask,[])
link(Str1,12548257:FString,[])
}
Add(Hub,8782185,490,371)
{
link(onEvent1,13696455:doStrCatDlm,[(578,377)(578,391)])
link(onEvent2,6566935:doSearch,[])
}
Add(GetDataEx,10153823,546,273)
{
Angle=3
link(Data,8494145:Text,[(188,278)])
}
Add(Button,10652088,875,469)
{
Left=585
Top=10
Width=215
Caption="Удалить лубликаты"
link(onClick,3359661:doMessage,[])
}
Add(Message,3359661,931,469)
{
Message="Вы уверены что нужно удалить эти файлы"
Type=2
Point(onYES)
link(onYES,10396108:doEnum,[])
}
Add(ArrayEnum,10396108,987,476)
{
Type=1
link(onItem,539386:doDelete,[])
link(Array,10164561:Array,[])
}
Add(DoData,10407144,1099,462)
{
link(onEventData,10164561:doDelete,[(1138,468)(1138,447)(963,447)(963,293)])
link(Data,10396108:Index,[(1105,453)(1091,453)(1091,516)(1000,516)])
}

карма: 14

0
Ответов: 286
Рейтинг: 5
#10: 2022-07-03 12:55:59 ЛС | профиль | цитата
Вместе с дубликатами очищает все папки
карма: 0

0
Ответов: 652
Рейтинг: 138
#11: 2022-07-03 13:12:15 ЛС | профиль | цитата
Udokanec писал(а):
Вместе с дубликатами очищает все папки

Попробовал несколько раз. У меня удаляются только те файлы, которые в списке дубликаты.
Выбери папку - "drawable-ldpi" и посмотри сколько дубликатов и сколько удалит.

Add(Button,1032059,49,154)
{
Left=45
Top=10
Width=95
Caption="Выбратьпапку"
link(onClick,15679354:doEvent1,[])
}
Add(Button,1454278,455,308)
{
Left=300
Top=10
Width=140
Caption="Найти дубликаты"
link(onClick,8782185:doEvent1,[])
}
Add(FileSearch,9717498,714,196)
{
Ext="*.png"
TimeType=1
link(onSearch,3582628:doPart,[])
link(onEndSearch,8658984:doData,[(781,209)(781,279)])
}
Add(MainForm,11209390,329,14)
{
Width=977
Height=479
}
Add(Memo,2318742,917,252)
{
Left=270
Top=75
Width=195
Height=260
ScrollBars=3
ReadOnly=0
}
Add(Memo,10164561,987,210)
{
Left=490
Top=75
Width=405
Height=260
ScrollBars=3
ReadOnly=0
link(Str,14001984:Value,[(993,201)(967,201)(967,355)(741,355)])
}
Add(FilePartElm,3582628,791,196)
{
link(onPart,8494641:doAdd,[])
}
Add(FileSearch,6566935,553,315)
{
Ext="*.png"
TimeType=1
link(onSearch,4180243:doCompare,[])
link(Dir,10153823:Var2,[])
}
Add(StrList,8494641,854,196)
{
Point(doGetIndex)
Point(onGetIndex)
link(onGetIndex,15132075:doCompare,[])
}
Add(DoData,8658984,854,273)
{
link(onEventData,2318742:doText,[])
link(Data,8494641:Text,[])
}
Add(Memory,14001984,735,315)
{
link(onData,8211724:doPart,[])
}
Add(FilePartElm,8211724,798,315)
{
link(onPart,8494641:doGetIndex,[(844,321)(844,230)])
}
Add(If_else,15132075,917,203)
{
Op2=Integer(-1)
link(onFalse,10164561:doAdd,[])
}
Add(FileTools,539386,1057,399)
{
link(onEnd,10407144:doData,[])
link(FileName,10396108:Item,[(1063,390)(1049,390)(1049,460)(1007,460)])
}
Add(StrMask,13872315,294,161)
{
Mask="*drawable*"
Point(doMask)
link(onTrue,10491973:doCompare,[])
}
Add(StrMask,10491973,343,168)
{
Mask="*hdpi*"
Point(doMask)
link(onFalse,8824824:doCompare,[(387,174)(387,146)])
link(onTrue,132297:doWork2,[])
}
Add(StrMask,8824824,399,140)
{
Mask="*mdpi*"
Point(doMask)
link(onFalse,7082500:doCompare,[])
link(onTrue,132297:doWork1,[(438,153)])
}
Add(HubEx,132297,434,175)
{
link(onEvent,9455963:doWork2,[])
}
Add(StrMask,7082500,455,140)
{
Mask="*ldpi*"
Point(doMask)
link(onTrue,9455963:doWork1,[(501,153)])
}
Add(HubEx,9455963,497,175)
{
link(onEvent,5935476:doAdd,[])
}
Add(FileSearch,14184120,238,161)
{
FullName=1
Include=1
link(onSearch,13872315:doCompare,[])
}
Add(Browse,5449089,147,161)
{
Title="Папка где искать дубликаты"
NewStyle=0
NewDirButton=1
link(onBrowse,8494145:doText,[])
}
Add(Edit,8494145,196,161)
{
Left=35
Top=40
Width=195
Text=""
link(onChange,14184120:doSearch,[])
}
Add(FormatStr,12548257,616,196)
{
Mask="%2\\res\%1"
Point(FString)
link(onFString,9717498:doSearch,[])
link(Str2,10153823:Var1,[(629,173)(566,173)])
}
Add(Label,5275819,371,21)
{
Left=60
Top=375
Width=147
Height=27
Caption="Выбор эталонной папки\r\nВыделить элемент"
}
Add(ListBox,5935476,518,175)
{
Left=35
Top=75
Width=205
Height=260
Hint="Выбор эталонной папки\r\nВыделить элемент"
DataType=1
Point(String)
link(onClick,4796137:doEvent1,[])
}
Add(Hub,15679354,112,154)
{
link(onEvent1,10052181:In,[(137,160)(137,146)])
link(onEvent2,5449089:doBrowse,[])
}
Add(LineBreak,8460923,469,189)
{
link(Out,5935476:doClear,[(508,195)(508,188)])
Primary=[10052181,-315,-49]
}
Add(Hub,4796137,574,182)
{
link(onEvent1,8494641:doClear,[(830,188)(830,209)])
link(onEvent2,12548257:doString,[(606,195)(606,202)])
}
Add(StrMask,4180243,679,315)
{
Point(doMask)
link(onFalse,14001984:doValue,[])
}
Add(StrCatDelim,13696455,616,322)
{
Delimiter="\"
Str2="*"
link(onStrCatDlm,4180243:doMask,[])
link(Str1,12548257:FString,[])
}
Add(Hub,8782185,504,308)
{
link(onEvent1,13696455:doStrCatDlm,[(592,314)(592,328)])
link(onEvent2,6566935:doSearch,[])
}
Add(GetDataEx,10153823,560,210)
{
Angle=3
link(Data,8494145:Text,[(202,215)])
}
Add(Button,10652088,889,406)
{
Left=585
Top=10
Width=215
Caption="Удалить лубликаты"
link(onClick,3359661:doMessage,[])
}
Add(Message,3359661,945,406)
{
Message="Вы уверены что нужно удалить эти файлы"
Type=2
Point(onYES)
link(onYES,10396108:doEnum,[])
}
Add(ArrayEnum,10396108,1001,413)
{
Type=1
link(onItem,539386:doDelete,[])
link(Array,10164561:Array,[])
}
Add(DoData,10407144,1113,399)
{
link(onEventData,10164561:doDelete,[(1152,405)(1152,384)(977,384)(977,230)])
link(Data,10396108:Index,[(1119,390)(1105,390)(1105,453)(1014,453)])
}

карма: 14

1
Голосовали:Udokanec
Ответов: 286
Рейтинг: 5
#12: 2022-07-03 13:40:32 ЛС | профиль | цитата
Да с папкой "drawable-ldpi" все пучком.А ты попробуй с папкой "drawable-xhdpi"Или у меня глюк несколько раз пробовал

--- Добавлено в 2022-07-03 14:02:32

Gunta извиняюсь все нормально .А как сделать проверку на пустые папки

Редактировалось 1 раз(а), последний 2022-07-03 14:02:32
карма: 0

0
Ответов: 652
Рейтинг: 138
#13: 2022-07-03 14:29:55 ЛС | профиль | цитата
Udokanec писал(а):
А как сделать проверку на пустые папки

По размеру папки. У пустой он равен 0

Add(MainForm,2953706,49,133)
{
}
Add(DirTools,5886547,399,112)
{
Point(doGetSize)
link(onOK,7557319:doString,[])
}
Add(Button,9202113,175,133)
{
Width=384
Height=30
Align=2
Caption="Найти пустые папки в каталоге"
link(onClick,7877589:doBrowse,[])
}
Add(Browse,7877589,224,133)
{
link(onBrowse,14184120:doSearch,[])
}
Add(FileSearch,14184120,280,133)
{
Include=1
link(onSearch,5618083:doValue,[])
}
Add(FormatStr,7557319,469,112)
{
Mask="%1;%2"
link(onFString,12623990:doAdd,[])
link(Str1,5618083:Value,[(475,103)(461,103)(461,173)(342,173)])
}
Add(StringTable,12623990,546,112)
{
Left=550
Top=105
Align=5
Columns=#13:Имя папки=300|6:Размер|
}
Add(Memory,5618083,336,133)
{
link(onData,5886547:doGetSize,[])
}

карма: 14

0
Ответов: 413
Рейтинг: 57
#14: 2022-07-04 22:02:26 ЛС | профиль | цитата
Добрый день. Когда то делал подобную програму, вот тема на форуме:
https://forum.hiasm.com/topic/53262

Может что-то пригодится.

Редактировалось 1 раз(а), последний 2022-07-04 22:02:52
карма: 0

0
Ответов: 286
Рейтинг: 5
#15: 2022-07-04 23:44:31 ЛС | профиль | цитата
Poputchik спасибо
карма: 0

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