Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Разбить строку на под строки


Автор: Step 30.7.2004, 11:18
как
строка типа 1/2/343/323
разделитель /
желательно что бы в разные переменные
Добавлено @ 11:21
знаю что можно strmove, но это както геморойно......

нельзяли в делфи использовать регулярные выражения на пободие ПШП

Автор: <Spawn> 30.7.2004, 12:03
Дак можно самому написать. Вот пример:

Код
type
 TSplitResult = array of string;

var
 Form1: TForm1;

implementation

{$R *.dfm}

function Split(const Delimiter: Char; Value: string): TSplitResult;

procedure IncResult(var SplitResult: TSplitResult; const Value: string);
begin
 SetLength(SplitResult, Length(SplitResult) + 1);
 SplitResult[High(SplitResult)] := Value;
end;

var
 intCounter: integer;
begin
 SetLength(Result, 0);
 for intCounter := Length(Value) downto 1 do
   if Value[intCounter] = Delimiter then
   begin
     IncResult(Result, Copy(Value, intCounter + 1, Length(Value) - intCounter));
     Delete(Value, intCounter, Length(Value) - intCounter + 1);
   end;
 if Length(Value) <> 0 then
   IncResult(Result, Value);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
 Test: TSplitResult;
 intCounter: integer;
begin
 Test := Split('\', '123\321\тут был я\321\123');
 if Assigned(Test) then
   for intCounter := 0 to High(Test) do
     ShowMessage(Test[intCounter]);
end;


Встроеных средств регулярных выражений нет, по моему, но можно воспользоватсья COM - импортировать библиотеку типов, например, для Microsoft VBScript Regular Expressions и использовать.

Автор: Step 30.7.2004, 12:12
Спасибо...

а вот с этим Microsoft VBScript Regular Expressions я наверное поковыряюсь

Автор: -=::BlackCat::=- 30.7.2004, 14:46
я всегда разбивал так:
Код

text := '1/2/343/323';
for i := 1 to Length(text) do
begin
 if Dann[DanLen] = '/' then
  begin
   Stroka := '';
  end
 else
  begin
   Stroka := Stroka + text[i];
  end;
end;

Автор: Петрович 30.7.2004, 14:55
Для работы с регулярными выражениями, есть хороший компонент http://anso.virtualave.net/
Очень рекомендую.

Автор: Step 30.7.2004, 14:59
Петрович, -=::BlackCat::=-, спасибо

-=::BlackCat::=- - оригинально

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)