Скажите пожалуйста как взять строчку из Memo и назовем так анализировать...
Допустим строчка 192.168.1.0/23, мне нужно из строчки присвоить определенным переменный присвоить числа после 1-й точки, 2-й точки, 3 точки и число после слэша...
Вид для печати
Скажите пожалуйста как взять строчку из Memo и назовем так анализировать...
Допустим строчка 192.168.1.0/23, мне нужно из строчки присвоить определенным переменный присвоить числа после 1-й точки, 2-й точки, 3 точки и число после слэша...
Бери строку...
Разбирай её "по точкам", т работай с массивом
ну вот в этом у меня у проблема, я плохо знаю Delphi и незнаю как строку в мемо разобрать...
строки из мемы можно дернуть так
Memo.Lines.Strings[Index: Integer]
первая строка 0 и т.д.
парсить с помощью функций работы со строками
Pos определяет номер символа в строке(в общем случае номер начального символа вхождения подстроки в строку)
Copy копирует подстроку с ... по ...
ещё будут варианты?
благодарен за предложенные, но всё же интересно...
Забить болт на программирование. Если такие вопросы возникают...
Использовать регулярные выражения.
Ну.. если еще нужны варианты..
кроме как вытаскивания определенной строки и поиска точки, можно канечно использовать тупой просмотр по одному. А вот pos естественно хорошо, только если в одной строке до фига разных разделителей, то много мороки. Тут проще заранее забить set из разделителей и спрашивать
символ
a: set of ['/', '.',':',';'];
s:=Memo.Lines.Strings[Index: Integer];
i:=1;
s1:='';
index2:=1;
while i<=length(s) do
begin
if not( s[i] in a ) then s1:=s1+s[i] else
begin
_variable[Index,index2]:=s1;
inc(index2);
s1:='';
end;
inc(i);
end;
это пример в конкретной строке index
А все переменные будут в массиве _variable[] index-номер строки, index2 - порядковый номер переменной
[QUOTE=Lexis;3864815]Ну.. если еще нужны варианты..
кроме как вытаскивания определенной строки и поиска точки, можно канечно использовать тупой просмотр по одному. А вот pos естественно хорошо, только если в одной строке до фига разных разделителей, то много мороки. Тут проще заранее забить set из разделителей и спрашивать
символ
a: set of ['/', '.',':',';'];
s:=Memo.Lines.Strings[Index: Integer];
i:=1;
s1:='';
index2:=1;
while i<=length(s) do
begin
if not( s[i] in a ) then s1:=s1+s[i] else
begin
_variable[Index,index2]:=s1;
inc(index2);
s1:='';
end;
inc(i);
end;
это пример в конкретной строке index
А все переменные будут в массиве _variable[] index-номер строки, index2 - порядковый номер переменной[/QUOTE]
спасибо...
а есть еще способ с помощью конечных автоматов (который был назван " тупой просмотр по одному"). но он, наверное, будет оправдан, только если задачка будет посложнее.
Не надо здесь функций работы со строками и регулярных выражений, в VCL есть штатное средство для подобного разбора строки. Почитай справку по классу TStringList, конкретно - мемберы Delimiter и DelimitedText.
ААА...Оно рабоатет...:D
[QUOTE=Skeeter;3851540]Допустим строчка 192.168.1.0/23, мне нужно из строчки присвоить определенным переменный присвоить числа после 1-й точки, 2-й точки, 3 точки и число после слэша...[/QUOTE]
Функция ExtractWord из библиотеки RxLib.
из библиотеки RegExp юзаем простейшую регулярку - '\d+\.\d+\.\d+\.\d+\\\d+'