Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];

Вниз

Разделение строки. Что неправильно?   Найти похожие ветки 

 
-= Like =-   (2002-08-19 16:26) [0]

Здравствуйте. Не поможете разделить строку на три части?
Строка имеет вид - "... ... ...", то есть три числа, разделённые между собой пробелами. Числа могуть быть разные: одно-, двух- и трёхзначные. Я попыталься разделить, но что-то не ладиться:

var
Pat1,Pat2,Pat3, s: String;

//Читаю строку и заношу в переменную "s"
s := Reg.ReadString("Background");

//Разделяю строки (здесь всё нормально)
Pat1 := Copy(s, 0, pos(" ", s)-1);
//Здесь хуже
Pat2 := Copy(s, pos(" " ,s)+1, pos(" ", s)+1);
//А здесь совсем плохо
Pat3 := Copy(s, pos(" ", s)+5, length(s));

//Здесь вывожу результат
ShowMessage(Pat1+" - "+Pat2+" - "+Pat3);


 
Mike Kouzmine   (2002-08-19 16:32) [1]

После copy делай delete


 
McSimm   (2002-08-19 16:33) [2]


> Pat1 := Copy(s, 0, pos(" ", s)-1);

надо Copy(s, 1, ...

Pos(" ", s) во всех случаях возвращает позицию первого пробела в строке


 
Unreg   (2002-08-19 16:35) [3]

В функции copy третий параметр - длина копируемой строки.
У всё пойдёт лучше, если после первого copy ты удалишь первое число-строку...
А вообще-то тебе debug сказал бы ВСЁ!


 
lenin   (2002-08-19 16:35) [4]

var
Pat1,Pat2,Pat3, s: String;

s := Reg.ReadString("Background");

Pat1 := Copy(s, 1, pos(" ", s)-1);
delete(s,1,pos(" ", s));
Pat3 := Copy(s, 1, pos(" ", s)-1);
delete(s,1,pos(" ", s));
Pat3 := s;

ShowMessage(Pat1+" - "+Pat2+" - "+Pat3);


 
Ura   (2002-08-19 16:40) [5]

// Считываем два числовых данных и текста -strConst
// И переводим их в число
str_T:=copy(strConst,1,pos(" ",strConst));
str_T := Trim(str_T);
val(str_T,X,code);
if Code = 0 then
begin
delete(strConst,1,pos(" ",strConst));
str_mV := Trim(strConst);
val(str_mV,Y,code);
if Code = 0 then begin
// end
else


 
Yuri-7   (2002-08-19 16:43) [6]

Попробуй по-другому обрабатывать разделитель, например:
procedure TForm1.Button1Click(Sender: TObject);
Var
ar: array [1..3] of string;
S: String;
n,i: integer;
Begin
s:="111 222 333";
n:=1;
ar[1]:="";ar[2]:="";ar[3]:="";
for i:=1 to Length(s) do
begin
if s[i]=" " then Inc(n)
else ar[n]:=ar[n]+s[i];
end;
ShowMessage(ar[1]+"-"+ar[2]+"-"+ar[3]);
end;


 
MBo   (2002-08-19 16:46) [7]

slist:=tstringlist.create;
slist.commatext:=s;
теперь каждый slist[i] содержит отдельную подстроку
Все.


 
Мефодий   (2002-08-19 17:16) [8]

Вот вариант для общего случая:

var s,sub_str,show_str: string;
Pat: array of string;
i: integer;

s := Reg.ReadString("Background"); sub_str := "";
show_str := "";
for i := 1 to Length(s) do
begin
if s[i] <> " " then
sub_str := sub_str + s[i];
if (s[i] = " ") or (i = Length(s)) then
begin
if Length(Trim(sub_str)) > 0 then
begin
SetLength(Pat,Length(Pat)+1);
Pat[High(Pat)] := sub_str;
show_str := show_str + sub_str;
if i < Length(s) then
show_str := show_str + " - ";
end;
sub_str := "";
end;
end;
ShowMessage(show_str);



 
-= Like =-   (2002-08-19 17:22) [9]

Ну, ребята, спасибо.
Помогли.


 
Мефодий   (2002-08-19 17:46) [10]

Исправление к моему ответу:

после строки

s := Reg.ReadString("Background");

нужно еще добавить

sub_str := "";


 
-= Like =-   (2002-08-19 17:59) [11]

2Мефодий (19.08.02 17:46)

Так там же есть!


> s := Reg.ReadString("Background"); sub_str := "";
> show_str := "";
> for i := 1 to Length(s) do




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

Форум: "Основная";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
4-96022
HighWay
2002-06-25 20:13
2002.08.29
Как вызвать событие в другом приложении?


1-95847
просто панк
2002-08-17 01:50
2002.08.29
Rich Edit


1-95827
Ferrari_the_best
2002-08-17 05:50
2002.08.29
!!!Help!!!


3-95685
sasha123
2002-08-08 13:58
2002.08.29
Подскажите, какую ОС поставить при установки MS SQL SERVER 2000.


1-95771
France
2002-08-19 10:51
2002.08.29
Drag&Drop - ответа не нашел





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский