TArray.BinarySearch не находит строки с двойными кавычками "
От: HAXT  
Дата: 17.06.17 08:56
Оценка:
Добрый день,
Подскажите пожалуйста по Delphi програмке

Почему то TArray.BinarySearch не находит строки в которых присутствует символ "
Такая же проблема замечена с методом TStringList.IndexOf

Как обойти это ограничение ?

var
      i: integer;
      idx: integer;
      outFoundIndex: integer;
      oldValues: TArray<String>;
      newValues: TArray<String>;
      oldValue : String;
      newValue : String;
      restValue : String;
      dummy : String;
      str : String;
begin
      oldValue := '123,455,""333';
      newValue := '123,455,""333,777';

      oldValues := VarToStr(oldValue).Split([',']);
      newValues := VarToStr(newValue).Split([',']);
      with TStringList.Create do
      begin
        Delimiter := ',';
        for i := Low(oldValues) to High(oldValues) do
        begin
          if not TArray.BinarySearch<string>(newValues, oldValues[i], outFoundIndex) then
            Add(newValues[i]);
        end;
        restValue := DelimitedText;
      end;
end.
Отредактировано 17.06.2017 8:57 HAXT . Предыдущая версия .
Re: TArray.BinarySearch не находит строки с двойными кавычками "
От: kov_serg Россия  
Дата: 17.06.17 09:13
Оценка:
Здравствуйте, HAXT, Вы писали:

HAX>Добрый день,

HAX>Подскажите пожалуйста по Delphi програмке

HAX>Почему то TArray.BinarySearch не находит строки в которых присутствует символ "

HAX>Такая же проблема замечена с методом TStringList.IndexOf

HAX>Как обойти это ограничение ?


HAX>
HAX>var
HAX>      i: integer;
HAX>      idx: integer;
HAX>      outFoundIndex: integer;
HAX>      oldValues: TArray<String>;
HAX>      newValues: TArray<String>;
HAX>      oldValue : String;
HAX>      newValue : String;
HAX>      restValue : String;
HAX>      dummy : String;
HAX>      str : String;
HAX>begin
HAX>      oldValue := '123,455,""333';
HAX>      newValue := '123,455,""333,777';

HAX>      oldValues := VarToStr(oldValue).Split([',']);
HAX>      newValues := VarToStr(newValue).Split([',']);
HAX>      with TStringList.Create do
HAX>      begin
HAX>        Delimiter := ',';
HAX>        for i := Low(oldValues) to High(oldValues) do
HAX>        begin
HAX>          if not TArray.BinarySearch<string>(newValues, oldValues[i],outFoundIndex) then
HAX>            Add(newValues[i]);
HAX>        end;
HAX>        restValue := DelimitedText;
HAX>      end;
HAX>end.
HAX>

А что делает ваш код? Особенно выделенные фрагменты
Re: TArray.BinarySearch не находит строки с двойными кавычками "
От: kov_serg Россия  
Дата: 17.06.17 09:15
Оценка: +2
Здравствуйте, HAXT, Вы писали:

HAX>Добрый день,

HAX>Подскажите пожалуйста по Delphi програмке

HAX>Почему то TArray.BinarySearch не находит строки в которых присутствует символ "

HAX>Такая же проблема замечена с методом TStringList.IndexOf

HAX>Как обойти это ограничение ?

Для обхода ограничения надо отсортировать список
Re[2]: TArray.BinarySearch не находит строки с двойными кавычками "
От: HAXT  
Дата: 17.06.17 12:25
Оценка:
Здравствуйте, kov_serg, Вы писали:

Код удаляет повторяющиеся вхождения строк

_>Для обхода ограничения надо отсортировать список


Это типа сарказм ?
Re[3]: TArray.BinarySearch не находит строки с двойными кавычками "
От: kov_serg Россия  
Дата: 17.06.17 12:41
Оценка:
Здравствуйте, HAXT, Вы писали:

HAX>Здравствуйте, kov_serg, Вы писали:


HAX>Код удаляет повторяющиеся вхождения строк


_>>Для обхода ограничения надо отсортировать список


HAX>Это типа сарказм ?


Нет

Note: BinarySearch requires that the array be sorted.

Re[3]: TArray.BinarySearch не находит строки с двойными кавычками "
От: kov_serg Россия  
Дата: 17.06.17 12:46
Оценка:
Здравствуйте, HAXT, Вы писали:

HAX>Код удаляет повторяющиеся вхождения строк


Есть для этого полезная структура TDictionary
Re[4]: TArray.BinarySearch не находит строки с двойными кавычками "
От: HAXT  
Дата: 17.06.17 12:50
Оценка:
Здравствуйте, kov_serg, Вы писали:

HAX>>Это типа сарказм ?


_>Нет

_>

_>Note: BinarySearch requires that the array be sorted.


Извините, действительно получилось,
спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.