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

Вниз

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

 
ALF   (2004-02-13 00:44) [0]

Здравствуйте. Я хочу сделать следующее:

например, в ini-файле есть раздел с параметром:

[section]
code=903|905|095

Я хочу считать строку 903|905|095 и разбив ее на отдельные строки: 903, 905, 095 засунуть в ComboBox как три строки. Делаю следующее:

var codes: string;
i: integer;
a: string;
begin
a:="";
Combobox2.Items.Clear;
codes:=ini.ReadString("section", "code", "");
for i:=1 to length(codes) do
begin
if pos("|",codes)=i then
begin
ComboBox2.Items.Add(a);
a:="";
end;
a:=a+copy(codes,i,1);
end;
end;

В результате в ComboBox вносится только первая строка: 903
Что не так?


 
DDA   (2004-02-13 01:38) [1]

Ну дак и правильно.
условие if pos("|",codes)=i всегда показывает одно и тоже число
- номер позиции первого "|"

делай так если строка у тебя не заканчивается знаком "|"

var codes: string;
i: integer;
a: string;
begin
a:="";
Combobox1.Items.Clear;
codes:="605|520|145";
i:=1;
while i<>length(codes)+2 do
begin
if (codes[i]="|") or (i=length(codes)+1) then
begin

ComboBox1.Items.Add(a);
a:="";
end
else a:=a+codes[i];
inc(i);
end;
end;


или так - если в конце строки стоит знак "|"

var codes: string;
i: integer;
a: string;
begin
a:="";
Combobox1.Items.Clear;
codes:="605|520|145|";
i:=1;
while i<>length(codes)+1 do
begin
if codes[i]="|" then
begin

ComboBox1.Items.Add(a);
a:="";
end
else a:=a+codes[i];
inc(i);
end;
end;


 
mfender   (2004-02-13 01:41) [2]

Вобщем, в приведенном тобой случае, строку нужно привести хотя бы к виду "903|905|095|". Потому что ты берешь очередной отрезок строки до вхождения "|". Поэтому как ни крути, по твоему коду "095" никак в комбу не попадет. В остальном твой код с небольшими изменениями будет выглядеть так (сам цикл):

for i:=1 to length(codes) do
begin
if not (copy(codes,i,1)="|") then a:=a+copy(codes,i,1)
else
begin
ComboBox1.Items.Add(a);
a:="";
end;
end;


 
Rouse_   (2004-02-13 01:44) [3]

StringReplace, как я понял не подходит? ;)


 
mfender   (2004-02-13 01:55) [4]

Вопрос был "что не так?" Надо думать, в приведенном коде...


 
Defunct   (2004-02-13 02:00) [5]

mfender © (13.02.04 01:41) [2]
Мона еще проще:
И для текущего формата строки 903|905|095

for i:=1 to length(codes) do
begin
If not codes[i]="|") Then a:=a+codes[i] Else
Begin
ComboBox1.Items.Add(A);
a:="";
End; // elseif
If A<>"" Then ComboBox1.Items.Add(A);
End;


 
Defunct   (2004-02-13 02:01) [6]

> If not codes[i]="|") Then a:=a+codes[i] Else
ех, скобочку забыл удалить ;>
If not codes[i]="|" Then a:=a+codes[i] Else


 
mfender   (2004-02-13 02:10) [7]

У меня D5...


 
Defunct   (2004-02-13 03:26) [8]

Ну и?
тип String это массив символов независимо от версии Delphi.


 
mfender   (2004-02-13 03:48) [9]

Согласен. Это у меня были мысли вслух. Я не о том подумал. Спать охота, а еще работать и работать... А утром опять же на работу идти.


 
ALF   (2004-02-13 14:54) [10]

Спасибо всем, попробую!



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

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

Наверх




Память: 0.46 MB
Время: 0.034 c
1-79765
zamkom
2004-02-11 15:04
2004.02.25
Вопрос про массив


3-79673
BanderLog
2004-01-30 11:42
2004.02.25
Перевод Даты в Строку


1-80019
NailMan
2004-02-09 11:33
2004.02.25
Показ модальной формы из DLL


14-80091
Mox Fulder
2004-02-03 15:24
2004.02.25
DivX


1-79808
DimonNew
2004-02-11 12:36
2004.02.25
создание формы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский