Вверх ↑
Этот топик читают: Гость
Ответов: 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
Сообщение
...
Прикрепленные файлы
(файлы не залиты)