В Delphi существует ли эффективный целый Word Search Function?

$ cat /usr/local/bin/runc
#!/bin/bash
sed -n '2,$p' "$@" | gcc -o /tmp/a.out -x c++ - && /tmp/a.out
rm -f /tmp/a.out

$ cat main.c
#!/bin/bash /usr/local/bin/runc

#include <stdio.h>

int main() {
    printf("hello world!\n");
    return 0;
}

$ ./main.c
hello world!

Команда sed берет файл .c и удаляет строку хэша. 2,$p означает печать строк 2 до конца файла; "$@" распространяется на аргументы командной строки для сценария runc, т.е. "main.c".

вывод sed передается в gcc. Передача - в gcc указывает ему читать из stdin, и когда вы делаете это, вы также должны указать исходный язык с помощью -x, поскольку у него нет имени файла, из которого можно угадать.

7
задан lkessler 5 November 2009 в 23:15
поделиться

2 ответа

Функцию SearchBuf можно использовать с параметром [soWholeWord].

function SearchBuf(Buf: PAnsiChar; BufLen: Integer; SelStart: Integer; SelLength: Integer; SearchString: AnsiString; Options: TStringSearchOptions): PAnsiChar;

См. Этот пример

function ExistWordInString(aString:PWideChar;aSearchString:string;aSearchOptions: TStringSearchOptions): Boolean;
var
  Size : Integer;
Begin
      Size:=StrLen(aString);
      Result := SearchBuf(aString, Size, 0, 0, aSearchString, aSearchOptions)<>nil;
End;

Используйте это так

ExistWordInString('Go Delphi Go','Delphi',[soWholeWord,soDown]);

Пока.

17
ответ дан 6 December 2019 в 09:20
поделиться

Тот факт, что редактор Delphi имеет функцию "сопоставления слов", не означает, что библиотека Delphi предлагает ее!

Как правило, в большинстве языков это обычный способ выражение. Кажется, они (все еще) не встроены в Delphi, поскольку существуют сторонние библиотеки, предлагающие такую ​​возможность. Первый найденный мною пример: http://delphi.about.com/od/toppicks/tp/delphi-regular-expressions.htm .

Как правило, вы создаете регулярное выражение. Например,

myRegex = '[' + Delim + ']+' + Word + '[' + Delim + ']+';
if regexSearch (Str, myRegex) then ...

Вы захотите получить подробную информацию из документации к библиотеке, которую вы получаете. В моем примере неправильно обрабатывается регистр слова, начинающегося с начала Str или заканчивающегося в конце, или являющегося целиком Str.

2
ответ дан 6 December 2019 в 09:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: