Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.03.18;
Скачать: CL | DM;

Вниз

как найти символ в строке   Найти похожие ветки 

 
Zhuck01 ©   (2011-12-06 21:03) [0]

Есть строка и и список символов, которые не должны встречаться в данной строке. Вроде всё просто. Задаём список, сравниваем. Но вот если список не охото составлять вручную, а  возложить это действие на 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;
....

выходит ошибка, ведь я проверяю есть ли символ в массиве символов

Заранее спасибо


 
Dimka Maslov ©   (2011-12-06 21:29) [1]

Изучать программирование надо не с table1.FieldByName("HOUSE").AsString, а с понятий "переменная", "тип", "символ", "строка", "множество" и т.д.


 
Dennis I. Komarov ©   (2011-12-06 21:37) [2]


> Dimka Maslov ©   (06.12.11 21:29) [1]

Не царское это дело... Пущай другие...


 
Zhuck01 ©   (2011-12-06 21:40) [3]


> Dimka Maslov

так что же тут не то и где несовпадение типов? или стрка это не массив символов?


 
Германн ©   (2011-12-06 21:47) [4]


> возможно ли задать массив например так ["0".."9","А".."Я"]

Это не массив, а множество.


 
Rouse_ ©   (2011-12-06 21:51) [5]

uses Masks; -> MatchesMask()
если маской не получается отсечь - используй регулярки


 
Dimka Maslov ©   (2011-12-06 21:51) [6]


> и где несовпадение типов


Оператор in осуществляет проверку нахождения символа в множестве, а не в массиве.


 
Zhuck01 ©   (2011-12-06 21:54) [7]


> Германн ,> Dimka Maslov


Благодарю, извеняюсь, тупанул


 
vegarulez   (2011-12-07 10:00) [8]

Используй регулярные выражения. И будет тебе счастье.


 
OW ©   (2011-12-07 11:40) [9]

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;


 
OW ©   (2011-12-07 11:44) [10]


> l:=length(mas);

~ length(mas) - 1
никогда не забываем.
Длина = N, последний индекс N-1.



Страницы: 1 вся ветка

Текущий архив: 2012.03.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
2-1323077597
LDV
2011-12-05 13:33
2012.03.18
создание таблиц бд в классе


2-1323074402
gvozdkoff
2011-12-05 12:40
2012.03.18
длина строк в TStringList


15-1321526211
>|<
2011-11-17 14:36
2012.03.18
Как правильно устаналивать программу в Windows 7?


15-1322338591
SQLEX
2011-11-27 00:16
2012.03.18
Как фильм называется про разведку


2-1322695608
cahier
2011-12-01 03:26
2012.03.18
ОБРАБОТКА ТЕКСТА