Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.24;
Скачать: CL | DM;

Вниз

Как разбить строку на подстроки!   Найти похожие ветки 

 
Officeman   (2003-04-02 20:55) [0]

Строка имеет вид:
s:="11111;22222;33333;44444;55555";
Програмно надо её разбить на
s1:="11111";
s2:="22222";
и тд..
как красиво сделать?
без использования SysUtils

с Уважением, ОфисМен


 
Song ©   (2003-04-02 21:21) [1]

TStringList.CommaText


 
Satirus   (2003-04-02 21:25) [2]

var List:TStringList;
begin
List:=TSringList.Create;
try
List:=s;
List.CommaText:=";";
//List[0] - "1111"; List[1] - "2222"
finally
List.Free;
end;
end;


 
MBo ©   (2003-04-02 21:29) [3]

>Satirus
>List.CommaText:=";";
лихо ;)

Officeman
самый простой путь - StringReplace ; на , и Commatext
Если SysUtils кажется некошерным почему-то, достаточно применять Pos и другие строковые процедуры языка


 
Song ©   (2003-04-02 21:40) [4]

Тогда уж лучше на #13#10 :)


 
sniknik ©   (2003-04-02 22:20) [5]

чего придираетесь? ну ошибся чуток парень
но идея то правильная, проверьте

var List: TStrings;
begin
List:= TStringList.Create;
List.Delimiter:= ";";
List.DelimitedText:= "1111;2222;3333";
Label1.Caption:= List.Strings[0];
Label2.Caption:= List.Strings[1];
Label3.Caption:= List.Strings[2];
List.Free;
end;



 
Officeman   (2003-04-03 20:37) [6]

спасибо.попробую


 
Officeman   (2003-04-03 21:10) [7]

Покажите пожалуйста балбесу(то есть мне) как это делается.
Если не силдьно сложно напишите рабочий листинг.
При выполнениии последнего. Программа вылетает с сообщением - ошибка в мобуле. Я думаю правильно будет через pos.
Как это сделать???

с Уважением, ОфисМен


 
Mike Kouzmine ©   (2003-04-03 21:15) [8]

pos
copy
delete
pos
copy
delete
....
Если число символов одинаковое


 
sniknik ©   (2003-04-03 21:48) [9]

> Программа вылетает с сообщением - ошибка в мобуле
какая, ты их читаеш хоть? если они тебе не нужны то другие то не ты.
с кривыми руками и pos не поможет. а ошибка скорее всего выход за пределы массива. если так то делай ограничение на количество присвоений из List. типа

var List: TStrings;
begin
List:= TStringList.Create;
List.Delimiter:= ";";
List.DelimitedText:= Edit1.Text;
if List.Count >= 1 then Label1.Caption:= List.Strings[0];
if List.Count >= 2 then Label2.Caption:= List.Strings[1];
if List.Count >= 3 then Label3.Caption:= List.Strings[2];
List.Free;
end;

(если ошибка не та то приведи ее (по буквам срисуй) плиз, чтобы мне не мучатся угрызениями совести за нерабочий код ;О), и в дальнейшем меняй манеры в задавании вопросов)


 
Evgeny ©   (2003-04-05 07:01) [10]

Можно и через Pos конечно, но тогда придется держать строковый массив для сохранения. Так что со TStrins гораздо проще в итоге выйдет.


 
Officeman   (2003-04-06 18:34) [11]

Ошибка такая:
http://ufastorm.narod.ru/error.jpg

Помогите решить!
Лучше дайте другой способ. этот некатит. может руки кривые. может ещё чего.

с Уважением, ОфисМен


 
Satirus   (2003-04-06 18:49) [12]

2Officeman (06.04.03 18:34)
типичная ошибка выхода за границы массива.
Тебе же сказали, проверяй на количество строк в тексте.


 
Satirus   (2003-04-06 19:13) [13]

на рабочий код и не кумарь больше

procedure TForm1.Button1Click(Sender: TObject);
var s:Tstringlist;
s2,s1:string;
p,i:integer;
begin
s:=TStringList.Create;
try
s2:=edit1.Text;
while pos(";",s2)<>0 do begin
s.add(copy(s2,1,pos(";",s2)-1));
s1:=copy(s2,pos(";",s2)+1,maxint);
s2:=s1;
end;
for i:=0 to s.Count-1 do
memo1.Lines.Add(s[i]);
finally
s.Free;
end;

end;


 
Satirus   (2003-04-06 19:17) [14]

patch
после цикла добавить следующую строку:
if s2<>"" then memo1.Lines.Add(s2);


 
kaif ©   (2003-04-06 21:22) [15]

Посмотри в исходных текстах Delphi, как реализовано разбиение списка полей при вызове метода
TDataSet.Locate("field1;field2;field3;...
Я обычно использую нечто похожее на их прием.



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

Текущий архив: 2003.04.24;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
1-76898
dimonf
2003-04-14 19:53
2003.04.24
От какого модуля наследуеться TStringProperty???


1-76920
Buggy
2003-04-14 20:47
2003.04.24
Работа с Excel


3-76753
Вопрошающий
2003-04-08 13:30
2003.04.24
Доступ к БД


3-76803
ddenisv
2003-04-04 19:07
2003.04.24
Идеология справочников,...


3-76844
Владимир
2003-03-25 06:57
2003.04.24
Как прочесть данные из базы данных для вычислений и редактировани