![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как найти символ в строке [D7]
Zhuck01 © (2011-12-06 21:03:00)Есть строка и и список символов, которые не должны встречаться в данной строке. Вроде всё просто. Задаём список, сравниваем. Но вот если список не охото составлять вручную, а возложить это действие на Delphi. То есть, возможно ли задать массив например так ['0'..'9','А'..'Я']. Чтоб это всё работало в следующем примере
....
function srvmas(s:string;mas:Array of char):boolean;
var
i,j,k,l:integer;
begin
result:=false;
k:=length(s);
l:=length(mas);
for i:=1 to k do
for j:=0 to l do
if s[i]=mas[j] then
begin
result:=true;
break;
end;
end;
....
if (not srvmas(table1.FieldByName('HOUSE').AsString,vararrayof( ['0'..'9','А'..'Я']))) then
begin
.....
end;
....
и ещё один вопрос, почему если делать так
....
function srvmas(s:string;mas:Array of char):boolean;
var
i,j:integer;
begin
result:=false;
j:=length(s);
for i:=1 to j do
if s[i] in mas then
begin
result:=true;
break;
end;
end;
....
выходит ошибка, ведь я проверяю есть ли символ в массиве символов
Заранее спасибо
OW (2011-12-07 11:44:00) [1]
> l:=length(mas);
~ length(mas) - 1
никогда не забываем.
Длина = N, последний индекс N-1.
OW (2011-12-07 11:40:00) [2]public { Public declarations }
function srvmas(s: string; mas: Array of char):boolean;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
function TForm1.srvmas(s: string; mas: array of char): boolean;
var
i,j,k,l:integer;
begin
result := false;
k := length(s);
l := length(mas) - 1;
for i := 1 to k do
for j := 0 to l do
if s[i] = mas[j] then
begin
result := true;
Exit;
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
if srvmas('HOUSE', ['D','a']) then
ShowMessage( 'D a');
if srvmas('HOUSE', ['D','O']) then
ShowMessage( 'D O');
end;
vegarulez (2011-12-07 10:00:00) [3]Используй регулярные выражения. И будет тебе счастье.
Zhuck01 (2011-12-06 21:54:00) [4]
> Германн ,> Dimka Maslov
Благодарю, извеняюсь, тупанул
Rouse_ (2011-12-06 21:51:00) [5]uses Masks; -> MatchesMask()
если маской не получается отсечь - используй регулярки
Dimka Maslov (2011-12-06 21:51:00) [6]
> и где несовпадение типов
Оператор in осуществляет проверку нахождения символа в множестве, а не в массиве.
Германн (2011-12-06 21:47:00) [7]
> возможно ли задать массив например так ['0'..'9','А'..'Я']
Это не массив, а множество.
Zhuck01 (2011-12-06 21:40:00) [8]
> Dimka Maslov
так что же тут не то и где несовпадение типов? или стрка это не массив символов?
Dennis I. Komarov (2011-12-06 21:37:00) [9]
> Dimka Maslov © (06.12.11 21:29) [1]
Не царское это дело... Пущай другие...
Dimka Maslov (2011-12-06 21:29:00) [10]Изучать программирование надо не с table1.FieldByName('HOUSE').AsString, а с понятий "переменная", "тип", "символ", "строка", "множество" и т.д.