Вверх ↑
Этот топик читают: Гость
Ответов: 632
Рейтинг: 4
#1: 2018-08-27 18:21:08 ЛС | профиль | цитата
Сделал программу, которая по ссылки скачивает файл и даёт название, но в название часто попадаются символы с которыми файл нельзя сохранять (например:?). Как эти символы убрать, простой способ список замен сделать, но всех символов не угадать. Может есть способ ограничить символы. Например только русский, английский. Если название полностью не читаемое сохранить со случайными символами.

--- Добавлено в 2018-08-27 18:40:22


Add(MainForm,2953706,21,105)
{
}
Add(StrList,3225928,497,98)
{
Strings=#1: |1:ё|1:й|1:ц|1:у|1:к|1:е|1:н|1:г|1:ш|1:щ|1:з|1:х|1:ъ|1:ф|1:ы|1:в|1:а|1:п|1:р|1:о|1:л|1:д|1:ж|1:э|1:я|1:ч|1:с|1:м|1:и|1:т|1:ь|1:б|1:ю|1:1|1:2|1:3|1:4|1:5|1:6|1:7|1:8|1:9|1:0|1:-|1:q|1:w|1:e|1:r|1:t|1:y|1:u|1:i|1:o|1:p|1:a|1:s|1:d|1:f|1:g|1:h|1:j|1:k|1:l|1:z|1:x|1:c|1:v|1:b|1:n|1:m|1:,|1:.|
Point(StrToFind)
Point(doGetIndex)
}
Add(Position,10866075,504,203)
{
link(onSearch,6972558:doStrCat,[(558,209)(558,216)])
link(Str,868810:Item,[(510,191)(482,191)(482,247)(454,247)])
link(Target,591610:Value,[(517,191)(466,191)(466,243)(412,243)(412,236)(398,236)])
}
Add(Copy,10704782,294,203)
{
Count=1
link(onCopy,10331267:doValue,[(331,209)(331,125)])
link(Str,6861674:Var2,[(300,187)(307,187)])
link(Position,13170378:Position,[(307,191)(258,191)(258,247)(230,247)])
}
Add(Length,13494885,175,203)
{
link(onLength,13170378:doFor,[])
link(Str,6861674:Var1,[(181,180)])
}
Add(GetDataEx,6861674,301,175)
{
link(Data,1538820:Text,[(307,135)(237,135)])
}
Add(For,13170378,224,203)
{
link(onEvent,10704782:doCopy,[])
link(onStop,3339557:doData,[(268,216)(268,286)])
link(End,13494885:Result,[(237,191)(209,191)(209,240)(181,240)])
}
Add(Memory,591610,392,203)
{
link(onData,868810:doEnum,[])
}
Add(StrCat,6972558,581,210)
{
Point(doClear)
link(Str1,8386716:Var2,[(587,198)(575,198)])
link(Str2,10331267:Value,[(594,180)(342,180)])
}
Add(Hub,10160039,133,189)
{
link(onEvent1,7738151:In,[])
link(onEvent2,13494885:doLength,[(161,202)(161,209)])
}
Add(LineBreak,11061912,539,217)
{
link(Out,6972558:doClear,[])
Primary=[7738151,-378,-28]
}
Add(GetDataEx,8386716,569,245)
{
Angle=2
link(Data,6972558:Result,[(587,254)])
}
Add(Edit,1538820,231,63)
{
Left=10
Top=45
Width=365
link(onChange,10160039:doEvent1,[(275,69)(275,132)(121,132)(121,195)])
}
Add(StrCase,347607,350,203)
{
link(onModify,591610:doValue,[])
}
Add(ArrayEnum,868810,448,203)
{
link(onItem,10866075:doSearch,[])
link(Array,3225928:Array,[(454,177)(517,177)])
}
Add(DoData,3339557,280,280)
{
link(onEventData,2953706:doCaption,[(324,286)(324,198)(9,198)(9,111)])
link(Data,8386716:Var1,[(286,250)])
}
Add(Memory,10331267,336,119)
{
link(onData,347607:doModify,[(380,125)(380,184)(338,184)(338,209)])
}

Сам догадался

Редактировалось 1 раз(а), последний 2018-08-27 18:40:22
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#2: 2018-08-27 18:45:45 ЛС | профиль | цитата
Спроси у GOOGLE какие символы нельзя использовать в имени файла
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 632
Рейтинг: 4
#3: 2018-08-27 18:52:44 ЛС | профиль | цитата
Tad, хорошо спрошу.
[spoiler=Доработал, добавил случайные числа]
Add(MainForm,2953706,189,217)
{
}
Add(MultiElementEx,2214755,126,203)
{
link(Text,16435655:Text,[(132,156)(125,156)])
link(Результат,2953706:doCaption,[(174,209)(174,223)])
}
BEGIN_SDK
Add(EditMultiEx,10209676,21,21)
{
WorkCount=#27:Фильтор=Отфильтровать текст|
EventCount=#24:Результат=Получить текст|
DataCount=#63:Text=Строка, которую нужно профильтровать от ненужных символов.|
Width=650
Height=340
link(Фильтор,10160039:doEvent1,[(39,27)(39,188)])
}
Add(StrList,3225928,420,91)
{
Strings=#1: |1:ё|1:й|1:ц|1:у|1:к|1:е|1:н|1:г|1:ш|1:щ|1:з|1:х|1:ъ|1:ф|1:ы|1:в|1:а|1:п|1:р|1:о|1:л|1:д|1:ж|1:э|1:я|1:ч|1:с|1:м|1:и|1:т|1:ь|1:б|1:ю|1:1|1:2|1:3|1:4|1:5|1:6|1:7|1:8|1:9|1:0|1:-|1:q|1:w|1:e|1:r|1:t|1:y|1:u|1:i|1:o|1:p|1:a|1:s|1:d|1:f|1:g|1:h|1:j|1:k|1:l|1:z|1:x|1:c|1:v|1:b|1:n|1:m|1:,|1:.|
Point(StrToFind)
Point(doGetIndex)
}
Add(Position,10866075,427,196)
{
link(onSearch,6972558:doStrCat,[(481,202)(481,209)])
link(Str,868810:Item,[(433,184)(405,184)(405,240)(377,240)])
link(Target,591610:Value,[(440,184)(389,184)(389,236)(335,236)(335,229)(321,229)])
}
Add(Copy,10704782,217,196)
{
Count=1
link(onCopy,10331267:doValue,[(254,202)(254,118)])
link(Str,6861674:Var2,[(223,180)(230,180)])
link(Position,13170378:Position,[(230,184)(181,184)(181,240)(153,240)])
}
Add(Length,13494885,98,196)
{
link(onLength,13170378:doFor,[])
link(Str,6861674:Var1,[(104,173)])
}
Add(GetDataEx,6861674,224,168)
{
link(Data,10209676:Text,[(230,94)(27,94)])
}
Add(For,13170378,147,196)
{
link(onEvent,10704782:doCopy,[])
link(onStop,7950454:doLength,[(285,209)(285,293)])
link(End,13494885:Result,[(160,184)(132,184)(132,233)(104,233)])
}
Add(Memory,591610,315,196)
{
link(onData,868810:doEnum,[])
}
Add(StrCat,6972558,539,203)
{
Point(doClear)
link(onStrCat,6875419:doEvent1,[])
link(Str1,8386716:Var2,[(545,191)(533,191)])
link(Str2,10331267:Value,[(552,173)(265,173)])
}
Add(Hub,10160039,56,182)
{
link(onEvent1,7738151:In,[])
link(onEvent2,13494885:doLength,[(84,195)(84,202)])
}
Add(LineBreak,9694123,497,210)
{
link(Out,6972558:doClear,[])
Primary=[7738151,-413,-28]
}
Add(GetDataEx,8386716,527,238)
{
Angle=2
link(Data,6972558:Result,[(545,247)])
}
Add(StrCase,347607,273,196)
{
link(onModify,591610:doValue,[])
}
Add(ArrayEnum,868810,371,196)
{
link(onItem,10866075:doSearch,[])
link(Array,3225928:Array,[(377,170)(440,170)])
}
Add(DoData,3339557,224,259)
{
link(onEventData,6572332:In,[])
link(Data,4463280:Value,[(230,247)(615,247)])
}
Add(Memory,10331267,259,112)
{
link(onData,347607:doModify,[(303,118)(303,177)(261,177)(261,202)])
}
Add(Length,7950454,329,287)
{
link(onLength,14290558:doCompare,[(377,293)(377,300)])
link(Str,8386716:Var3,[(335,258)(549,258)(549,243)])
}
Add(Random,2730335,462,273)
{
Max=999999
link(onRandom,2963540:doEvent1,[])
}
Add(Memory,4463280,609,203)
{
}
Add(Hub,6875419,581,203)
{
InCount=2
OutCount=1
link(onEvent1,4463280:doValue,[])
}
Add(Hub,2963540,511,273)
{
link(onEvent1,6875419:doEvent2,[(538,279)(538,216)])
link(onEvent2,2184435:doEvent1,[(529,286)(529,300)])
}
Add(If_else,14290558,385,294)
{
Op1=Integer(0)
link(onTrue,2730335:doRandom,[(443,300)(443,279)])
link(onFalse,2184435:doEvent2,[])
}
Add(Hub,2184435,532,294)
{
InCount=2
OutCount=1
link(onEvent1,3339557:doData,[(558,300)(558,282)(212,282)(212,265)])
}
Add(Icon,4604297,77,42)
{
@Hint=#5:#main|
Icon=[ZIP5E07000078DA636060044209090610C9E0C1CEC020C6C0C0A001C4402106030688380828B033500DFC87214A0D0102CA8CFA8F0D916F08927BC8306AB099C380C39C018C2F2AA61FF2ED1E358AFE460DDD88FE4F0D13FE532FD1FF1F8D5CB817FE1F079648CD40CCF8FFFF3F060406F1C1E220F9FFFF7F6DFFFFFF4FF5FFFF3F6C81741D90BFBFFE3F0CFC83E21F06F570360C00004937A90A]
}
Add(LineBreak,5388479,630,28)
{
link(Out,10209676:Результат,[(666,34)(666,27)])
Primary=[6572332,-364,231]
}
END_SDK
Add(Edit,16435655,119,84)
{
Left=115
Top=80
Width=180
link(onChange,2214755:Фильтор,[(163,90)(163,150)(114,150)(114,209)])
}


Редактировалось 1 раз(а), последний 2018-08-27 18:53:09
карма: 0

0
Ответов: 1821
Рейтинг: 168
#4: 2018-08-27 19:20:26 ЛС | профиль | цитата
Вставлю свои пять копеек. А не будет ли более верным решением сделать так, чтобы генератор имени файла сразу создавал правильные имена?

Редактировалось 3 раз(а), последний 2018-08-27 19:23:22
карма: 5

0
Ответов: 16884
Рейтинг: 1239
#5: 2018-08-27 19:37:39 ЛС | профиль | цитата
Vadimluk1, а так (и всего 9 против твоих 30 компонент)
Add(MainForm,1052739,714,553)
{
}
Add(Edit,1538820,385,483)
{
Left=10
Top=45
Width=365
Text="*?E/d|i"@t"
ClearAfterEnter=1
link(onEnter,2080582:doEvent1,[])
}
Add(Str_Enum,15397967,476,497)
{
Delimiter=""
link(onEnum,5205782:doGetIndex,[])
link(onEndEnum,11292567:doData,[(520,510)(520,559)])
}
Add(If_else,9702204,581,483)
{
Op1=Integer(-1)
link(onTrue,3324352:doStrCat,[])
}
Add(StrCat,3324352,651,483)
{
Point(doClear)
link(Str1,15499542:Var1,[(657,478)(648,478)(648,537)])
link(Str2,15397967:Part,[(664,462)(753,462)(753,595)(489,595)])
}
Add(GetDataEx,15499542,651,532)
{
link(Data,3324352:Result,[])
}
Add(DoData,11292567,651,553)
{
Point(Data)
link(onEventData,1052739:doCaption,[])
link(Data,15499542:Var2,[])
}
Add(Hub,2080582,434,490)
{
link(onEvent1,3324352:doClear,[(461,496)(461,470)(626,470)(626,496)])
link(onEvent2,15397967:doEnum,[])
}
Add(StrList,5205782,532,483)
{
Strings=#1:\|1:/|1::|1:*|1:?|1:"|1:<|1:>|1:||1:+|1:%|1:!|1:@|
Point(onGetIndex)
Point(doGetIndex)
link(onGetIndex,9702204:doCompare,[])
}

И я проверяю 14 знаков, а ты 73 (уже в 5 раз быстрее)

Редактировалось 2 раз(а), последний 2018-08-27 19:44:02
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 632
Рейтинг: 4
#6: 2018-08-27 19:44:23 ЛС | профиль | цитата
Tad писал(а):
Vadimluk1, а так (и всего 9 против твоих 30 компонент)

Спасибо!
карма: 0

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