На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Поможите улучшить функцию ExtractStrings
    В Syste.Classes есть функция ExtractStrings, она разбивает слова из текста, учитывает сепараторы и достаточно быстрая.
    Но есть в ней ряд проблем:

    К примеру текст: Yo 'dude' I'm big 'man' of 'steal' n1
    Разбивается на слова:
    Цитата

    Yo
    'dude'
    I'm big 'man' of 'steal' n1

    А дожен разбиваться на:
    Цитата

    Yo
    'dude'
    I'm
    big
    'man'
    of
    'steal'
    n1




    ExpandedWrap disabled
      ....
      ExtractStrings([ ',','.',' '],[], Pchar(Memo1.Text), Memo2.Lines);
      ....
       
      function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar;
        Strings: TStrings): Integer;
      var
        Head, Tail: PChar;
        EOS, InQuote: Boolean;
        QuoteChar: Char;
        Item: string;
      begin
        Result := 0;
        if (Content = nil) or (Content^ = #0) or (Strings = nil) then
          Exit;
        Tail := Content;
        InQuote := False;
        QuoteChar := #0;
        Strings.BeginUpdate;
        try
          Include(WhiteSpace, #13);
          Include(WhiteSpace, #10);
       
          Include(Separators, #0);
          Include(Separators, #13);
          Include(Separators, #10);
          Include(Separators, '''');
          Include(Separators, '"');
          repeat
            while (Tail^ in WhiteSpace) do
              Inc(Tail);
            Head := Tail;
            while True do
            begin
              while (InQuote and not ((Tail^ = #0) or (Tail^ = QuoteChar))) or
                not (Tail^ in Separators) do
                  Inc(Tail);
              if (Tail^ in ['''', '"']) then
              begin
                if (QuoteChar <> #0) and (QuoteChar = Tail^) then
                  QuoteChar := #0
                else if QuoteChar = #0 then
                  QuoteChar := Tail^;
                InQuote := QuoteChar <> #0;
                Inc(Tail);
              end else Break;
            end;
            EOS := Tail^ = #0;
            if (Head <> Tail) and (Head^ <> #0) then
            begin
              if Strings <> nil then
              begin
                SetString(Item, Head, Tail - Head);
                Strings.Add(Item);
              end;
              Inc(Result);
            end;
            Inc(Tail);
          until EOS;
        finally
          Strings.EndUpdate;
        end;
      end;


    Буду признателен за помощь в решении моей задачи.
    Сообщение отредактировано: Jiro -
      Надо всего лишь убрать кавычку и двойную кавычку из особых символов; считать их типичными 'буквами'.
        Славян

        пасиба! :good:
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0559 ]   [ 17 queries used ]   [ Generated: 20.04.24, 05:39 GMT ]