Здравствуйте! Есть строка E3 и строка E1. Строка E3 состоит из нескольких групп сиволов (в т. ч. пробелов), разделенных символом '; ' (точка с запятой и пробел); а E1 из группы символов (в т. ч. пробелов). Требуется узнать, является ли E1 одной из групп символов (точки с запятой и пробелы после них в группы символов не входят) строки E3. Пишу следующее:
function qwerty: boolean;
var q, w :word;
m: set of char;
s0: string;
begin
m:= [';'];
s0:= '; ' + e1;
w:=length(s0);
q:= pos (s0, e3);
if (q<>0) and (e3[q+w] in m) then
begin
result:=true;
end
else
result:= false;
end;
Но: если строка E3 имеет вид, например, 'russia1; russia', то при E1 = 'russia', result=false, а при E3 = 'russia1; russia', то true (то есть если одна из групп символов (1) полностью входит в другую группу сиволов (2), и (2) идет перед (1), то (1) не "ловится"). Как это исправиль. Спасибо заранее.
Здравствуйте, Damx, Вы писали:
function qwerty: boolean;
var
z,w :integer;
a,c,e:integer;
s0,s1: string;
begin
//s0:= '; ' + e1; // 'ЭТО неправильно, правильно когда знак ; в конце! тоесть: s0:= e1+'; ';
s0:= e1+'; ';
s1:=e3+';';
w:=length(s0);
z:length(s1);
if w-z>0 then begin
for a:=1 to w-z do
begin
e:=0;
for c:=1 to z do
if s0[a+c-1]=s1[c] then inc(e);
if e=z then
begin
result:=true ;
break;
end
else
result:=false;
end;
end;
в блокноте набрал, но вроде должно работать — а если твой код брать просто поменяй строку s0:= '; ' + e1; на s0:= e1+'; '; должно конать