$ 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
, поскольку у него нет имени файла, из которого можно угадать.
Функцию 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]);
Пока.
Тот факт, что редактор 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.