Замечания и предложения


#668

А если я хочу заменить только вхождения, номера которых определяются по закoну i(a,b,c,d,e) ? Так можно дойти до любой безумной идеи. Вы предлагаете вымороченный случай, который может и встретится один на тысячу. А я веду речь о случае (к примеру, первое вхождение), который встречается не реже, чем замена всех вхождений.


#669

Замена последнего или предпоследнего вхождения может быть не менее используемой операцией, чем замена первого. Ваш вариант функции этого не позволяет. Где принцип равноправия? Лимит замен это какой-то абсолютно бесполезный параметр. Уж лучше ввести функцию ReplaceFirst, либо еще лучше параметр-функтор куда передается индекс вхождения подстроки.


#670

Ладно, будем считать, что в Microsoft и в Googlе сидят дураки, которые этот параметр придумали.


#671

Может вынести разные процедуры в какой-нибудь модуль типа StrUtils? Кстати, когда я попытался перенести в программу на PascalABC.NET возможность работы с 2-3 частыми кодировками, у меня так ничего и не получилось за разумное время. Хотя, UTF-16 по умолчанию используемая в .NET не всегда удобна, пришлось вообще ничего не трогать и оставить как есть, но даже при этом откуда-то лезут непонятные баги при работе с русскими словами.


#672

В смысле? Файл писать можно в любой кодировке. В памяти символы хранятся в двухбайтовом Unicode. Что может быть здесь неудобным?


#673

Двухбайтовая кодировка неудобна из-за отсутствия разумной альтернативы set of char. А с переводом из одной кодировки в другую в памяти я что-то так и не разобрался. Как работать с файлами в разных кодировках я может просто не нашёл, если это есть.


#674

В System.IO.File можно выбрать какой кодировкой читать/записывать файл.


#675

Спасибо. Надо как-нибудь попробовать, не совсем понятно, какие там кодировки можно использовать, сейчас вроде просто вводится число 1251 и работает кодировка CP1251. Может ещё потребоваться UTF-8, консольная кодировка (CP866 ?) и сам Unicode. Но это всё для “развлечений” типа TRAC4, а по работе мне с базами данных надо обычно разбираться. При этом есть куча старых баз в формате какого-нибудь dbase или FoxPro, который достаточно прост, но, бинарный и нужны AnsiChar, AnsiString и перевод кодировок в памяти, чтобы с такими данными работать.


#676

VFP умеет выгружать таблицы в любой указанной кодировке, кроме, пожалуй UNICODE (т.е. я в последнем не уверен, не приходилось). В MS SQL есть утилита, позволяющая загрузить почти все, что угодно. Да масса есть перекодировщиков…


#677

Если всё правильно набрано. А если даты набраны как придётся, числа в перемешку то с точкой, то с запятой. Там же всё в строковых переменных. Какие-то кодовые страницы непонятные. Была идея даже вот нейросети попробовать.


#678

Если набрано неправильно, то чем Вам Паскаль поможет? И потом, там отнюдь не все в строках, это Вы зря… И на том же VFP обработка данных, особенно строк, намного удобнее, чем даже в PascalABC.NET, потому что там функций строковых - выше крыши. Кстати, и работа с регулярками через RegExp поддерживается, если нужны сложные фокусы…


#679

Паскаль поможет тем, что можно работать с “сырыми данными” прямо из файлов, если нужно. Формат dbf состоит из заголовка и следующего за ним набора полей равной длины, в которых хранятся именно char того до-юникодовского времени. Я уж не помню, пихает ли FP туда какие-нибудь double. У меня коллега VFP в основном увлекается. Но работать с двухбайтовыми char действительно не очень удобно. Ладно, забили уже давно с set в стиле bit array, но вот array от 8-битных char были-бы всё-таки предпочтительнее в смысле производительности.


#680

Я всё же открыл паскаль… И за 2 мин вот это собрал:

begin
  var enc := System.Text.Encoding.GetEncoding(1251);
  var s:string := 'Hello, World! Привет, мир!';
  var byte_arr := enc.GetBytes(s);
  var s2 := new string(enc.GetChars(byte_arr));
  writeln(s2);
end.

Это, случайно, не то что вам надо? Я просто скопировал работу ChrAnsi


#681

Да, для проблем типа чтения из файлов, которую я описал, это скорее всего, подходит. GetEncoding(866) тоже вроде работает.


#682

А можно средствами языка определить class AnsiString (содержащий array of byte), чтобы преобразования происходили автоматически. Или там какие-нибудь нежелательные эффекты начнутся если после этого подставлять во всякие функции и выражения переменные такого типа вместо string?


#683

Нежелательные эффекты зависят от того как вы реализуете))). И подставлять во всякие функции можно по разному. К примеру можно написать перегрузки, а можно сделать оператор implicit для вашего типа. Или и то и то. Только предлагаю писать в какой то другой теме или создать новую для этого всего.


#684

Вопрос ко всему коммьюнити! Кто что думает по данному поводу:

Недавно оформил формальную задачу по мотивам обращения незрячего студента. Буквально через несколько минут @admin закрыл issue с формулировкой:

“Добиться совместимости редактора для его озвучивания стандартными скрин-ридерами:”

Этого мы не сможем сделать

Собственно, ни в одной из просмотренных мной IDE нет такого чтобы все пункты меню покрывались горячими клавишами.

Я сильно возмущен такой реакцией, мой комментарий – там же на гитхабе. Если качественные, конструктивные предложения будут вот так с порога отвергаться по надуманным предлогам, какой смысл вообще что-то предлагать и помогать?!

Может быть у кого-то есть иные предложения, как помочь конкретному вышеупомянутому человеку и другим, таким же как он?


#685

Давайте договоримся, что Вы называете качественными предложениями. С моей точки зрения если предложение не может быть выполнено, то оно некачественное. И надо предлагать другое. Либо предлагать свои силы в выполнении.

Ещё раз подчеркну - невозможность выполнения - это не надуманный предлог

И хочу напомнить, что комьюнити в опенсорс проектах - это сообщество тех, кто реализует, а не тех, кто указывает


#686

Давайте!

Качественным я называю предложение: (а) продуманное, (б) конструктивное, (в) грамотно оформленное. Я считаю, что моё предложение соответствует этим качествам.

В данном случае речь идет о мета-задаче для реализации конкретной общей цели, которая поделена на 3 подзадачи. 1 (одну) из них вы лично считаете нереализуемой, поскольку не знаете как это сделать или просто не хотите связываться с установкой, настройкой и тестированием специфического вспомогательного софта. Понятно… Но это абсолютно не значит, что задачу невозможно реализовать в принципе или что она некачественная сама по себе! Именно поэтому я считаю ваш предлог надуманным, даже эгоцентричным, если хотите.

Кроме того, это всего лишь одна из 3-х подзадач, не отменяющая полезности всех остальных. Во-вторых, кто сказал, что все это должны реализовывать только вы один? В этом и есть смысл коммьюнити – с миру по нитке… Кто-то анализирует, кто-то предлагает, кто-то формализует, кто-то критикует, кто-то кодирует, кто-то тестирует и т.п. – в итоге все пользуются и все довольны.

“Реализация” состоит из всего вышеперечисленного и не надо всегда все взваливать на себя одного. Никто тут никому ничего не указывает, только предлагает, и не вам лично, а всему сообществу! Если же вас смутил мой императив в заголовке задачи на гитхабе – так это так принято в формальной документации, никаких личных “указаний” там нет и быть не может!


#687

Я не согласен с (б). Ваше предложение неконструктивное. Можно понасовать много таких предложений:

  • А давайте новую операционку сделаем, под которой начинающим было легко программировать
  • А давайте полностью оболочку PascalABC.NET перепишем.

И прочая.

Всё это - неконструктивные предложения - и они будут отвергаться что называется - с порога.

Про специфичный и вспомогательный софт. Предлагайте на специфичных форумах. Обсуждайте. Там. В частности, где на специфичный софт получить деньги, гранты, людей для исполнения. Но - не здесь. Здесь посторониние темы будут - ещё раз повторю - удаляться с порога.