Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Разделители [D7, XP]


lobach ©   (2007-03-26 13:19:00) 

Скажите пожалуйста, как прочитать строку типа
имя:::фамилия:::год.рождения
в 3 переменные чтоб ::: было разделителем???


Kolan   (2007-03-26 23:05:00) [1]

> а delimiter — это чар

Да, забыл.


Loginov Dmitry   (2007-03-26 22:59:00) [2]

> Если бы не это, то через  DelimitedText было бы, безусловно,
> корректнее.


Напротив. При работе со StringList'oм проблем будет больше. Правильнее использовать в данной ситуации именно StringReplace.


_Аноним   (2007-03-26 22:49:00) [3]


> Kolan ©

У него там три чара, а delimiter - это чар.
Если бы не это, то через  DelimitedText было бы, безусловно, корректнее.
Можно, конечно, предварительно натравить на источник StringReplace. если бы была уверенность, что в есть какой то символ, которого точно нет в данных.


Kolan   (2007-03-26 22:43:00) [4]

TStrings.DelimitedText ?


Arm79   (2007-03-26 21:26:00) [5]

примерно так:

TStringList.Text := StringReplace(Stroka, ':::', #13#10, [rfReplaceAll]);

Str1 := TStringList[0];
Str2 := TStringList[1];
Str3 := TStringList[2];


Нуб   (2007-03-26 15:11:00) [6]


> Desdechado ©  


а какой у Вас фотык и что за велик ? , если не секрет


Desdechado   (2007-03-26 15:07:00) [7]

> можешь так попробывать
Пробовать можешь, как хочешь. На луну вон из пушки летали.


Нуб   (2007-03-26 14:36:00) [8]

можешь так попробывать

procedure TForm1.Button1Click(Sender: TObject);
var str: string;
  i, step,k : integer;
  arrstr : array [1..3] of string;

begin
 str := 'aa223a:::daaad:::ccasdcc';
 step :=1;
 k := 1;
   for i := 1 to Length(str) do  begin
        if (str[i] = ':') and (str[i-1] <> ':') and (str[i-2] <> ':')then begin
            arrstr[k] := copy(str,step,i-step);
            step := i+3;
            inc(k);
        end;
   end;

   arrstr[k] := copy(str,step,Length(str)-step+1);
 Label1.Caption := arrstr[1]+arrstr[2]+arrstr[3];

end;


RASkov   (2007-03-26 14:23:00) [9]

uses ..., RxStrUtils; //входит в библиотеку RxLib

const Str= 'имя:::фамилия:::год.рождения'; Ch = [':'];
var N, J: Integer; ArrS: array of String;
begin
 J:=WordCount(Str, Ch);
 SetLength(ArrS, J);
 for N := 1 to J do ArrS[N-1]:=ExtractWord(N, Str, Ch);
end;


если нужно могу выдерныть оттуда эти функции... хотя самому написать недолго с использованием предложенных функций.


Desdechado   (2007-03-26 13:50:00) [10]

lobach ©   (26.03.07 13:33) [2]
И с какого боку это влияет?


_Knight_   (2007-03-26 13:37:00) [11]

Pos+Copy+Delete


lobach   (2007-03-26 13:33:00) [12]

Неизвестно сколько какой длинны будет каждая переменная.


Desdechado   (2007-03-26 13:21:00) [13]

Pos + Copy


Наверх

Титульная страница Поиск, карта сайта Написать письмо