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

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

Про СТРОКУ с разделителями [D6, Win95/98, WinME, NT4, Win2k, WinXP]


officeman ©   (2004-07-05 10:33:00) 

Какая там версия Delphi последняя. ох уж и со счета сбился. решил пока на 6 версии остановится. так как в 7 ничего нового ненашёл. кроме интернет и бд компонентов. наверно плохо искал =)

есть некотороая строка. только мы незнаем заранее сколько будет разделителей. может 5, а может 15.
1111;22222;33333;44444;6666;5555

Нужно читать текстовый файл EOF(f) и разбивать каждую строку на подстроки Perem='1111', потом Perem='22222' и тд.
потом next строка.

в дельфи 5 был strutils.pas... там всё было нормально выложено.
но в 6 версии я ненашёл. и компонентов тоже не встречал. =(
нехотелось бы изобретать колесо. а то так повозку и непридумаем.
Поделитесь своими кодами(решениями).

с Уважением, Officeman


officeman   (2004-07-05 12:15:00) [1]

Благодарю!

p.s. давно я не посещал любимый форум http://delphimaster.ru/
т.к. программирую сейчас под 1С.бухгалтерию. Прошло уже более полугода. а Мастера ДЕЛЬФИ не перевелись ещё! ЕСТЬ СИЛА! =))


panov   (2004-07-05 12:02:00) [2]

procedure ParseString(const s: String;var List: TStringList);
var
 i,bPos,Counter: Integer;
begin
 List.Clear;
 if s='' then Exit;
 bPos := 1;
 for i := 1 to Length(s) do
 begin
   if s[i]=';' then
   begin
     List.Add(Trim(Copy(s,bPos,i-bPos)));
     Inc(Counter);
     bPos := i+1;
   end;
 end;
 List.Add(Trim(Copy(s,bPos,Length(s)-bPos+1)));
end;

function GetField(const s: String;const NumField: Integer): String;
var
 i,bPos,Counter: Integer;
begin
 Result := '';
 if s='' then Exit;
 if NumField<=0 then Exit;
 Counter := 1;
 bPos := 1;
 for i := 1 to Length(s) do
 begin
   if s[i]=';' then
   begin
     if Counter=NumField then
     begin
       Result := Trim(Copy(s,bPos,i-bPos));
       Exit;
     end;
     Inc(Counter);
     bPos := i+1;
   end;
 end;
 if Counter=NumField then Result := Trim(Copy(s,bPos,Length(s)-bPos+1));
end;


Amoeba   (2004-07-05 11:38:00) [3]

Скачай библиотеку QStrings (содержит массу ф-ий и процедур для работы со строками)
http://swiss.torry.net/vcl/vcltools/text/adqstrings.zip
и используй ц-ию Q_StrTok1
Это именно то, что тебе нужно.


Семен Сорокин   (2004-07-05 10:40:00) [4]

Pos
TStringList.CommaText
F1


Наверх

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