Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 23.06.2008, 19:22   #1
Sanek_ntsk
Пользователь
 
Регистрация: 08.11.2007
Сообщений: 91
По умолчанию Чтение текста до ...

Как прочитать слова в edit до символа ';'? Помогите пожалста
Sanek_ntsk вне форума Ответить с цитированием
Старый 23.06.2008, 19:40   #2
Altera
Одинокий кодер
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Код:
var
s: string;
c, l: integer;
begin
   l := length(edit1.text);
   s := '';
   for с := 1 to l do
   if edit1.text[c] <> ';' then break else s := s + edit1.text[c];
end;
Ну вот вроде...
Altera вне форума Ответить с цитированием
Старый 23.06.2008, 19:41   #3
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Код:
var p:integer;
str:string;
begin
p:=pos(';',edit1.Text);
if p=0 then p:=length(edit1.text);
str:=copy(edit1.Text,1,p);
end;
считывается до ; включительно.
Если символ ; не надо включать, то делаешь
if p=0 then p:=length(edit1.text)
else dec(p);

Последний раз редактировалось NikLik; 23.06.2008 в 19:44.
NikLik вне форума Ответить с цитированием
Старый 23.06.2008, 19:41   #4
Makarov
Форумчанин
 
Аватар для Makarov
 
Регистрация: 03.01.2008
Сообщений: 102
По умолчанию

Рассматривать строку как массив символов и проверять каждый символ не равен ли он ';'. Пока не равен инкрементировать счетчик. А потом используем функцию COPY.
Теория без практики мертва и бесплодна, практика без теории невозможна и пагубна.
Makarov вне форума Ответить с цитированием
Старый 23.06.2008, 19:50   #5
Sanek_ntsk
Пользователь
 
Регистрация: 08.11.2007
Сообщений: 91
По умолчанию

Ещё один вопрос: у меня есть текст с разделителями:
Семья;Мама;123456
Семья;Папа;654321
Друзья;жека;258741
Девки;Лена;369741
и т.д.
Как сделать так, чтобы в комбобоксе создавались группы(первое слово до ';') но не создавались несколько раз одни и те же, и по выбору в комбобоксе отражались имена группы? Очень нужно. Заранее спасибо
Sanek_ntsk вне форума Ответить с цитированием
Старый 23.06.2008, 20:15   #6
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Код:
procedure tform1.combo(filename:string;combobox:tcombobox);
var n:byte;
f:textfile;
s,addstr:string;
mult:boolean;
begin
assignfile(f,filename);
reset(f);
combobox.Clear;
readln(f,s);
while not(eof(f)) do begin
mult:=false;
readln(f,s);
addstr:=obr(s);
for n:=1 to combobox.Items.Count do
if combobox.Items[n-1]= addstr then mult:=true;
if not mult then
combobox.Items.Add(addstr);
end;
closefile(f);
end;


function tform1.obr(str:string):string;
var p:byte;
begin
p:=pos(';',str);
if p=0 then p:=length(str)
else dec(p);
result:=copy(str,1,p);
end;
Использование:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
combo('123.txt',ComboBox1);
end;
Напиши, что ты хочешь сделать в целом? Интересно стало)

Последний раз редактировалось NikLik; 23.06.2008 в 21:20.
NikLik вне форума Ответить с цитированием
Старый 23.06.2008, 20:59   #7
Sanek_ntsk
Пользователь
 
Регистрация: 08.11.2007
Сообщений: 91
По умолчанию

ещё вопрос: а как прочитать символы между знаками ";"? т.е General;123456789;bullet; нужно 123456789 занести в переменную S
Sanek_ntsk вне форума Ответить с цитированием
Старый 23.06.2008, 21:17   #8
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

функция posex(добавь в uses модуль strutils)--тоже самое, только есть возможность указать, с какого символа искать
например так:
p:=posex(';',str,1);
s:=copy(str,p+1,posex(';',str,p+1)-p-1);
выделяет слова "Мама","Папа", "Жека", "Лена" из того примера, что ты дал

P.S только что нашел ошибку в том коде, что выше
Не combobox.Items.Add(obr(addstr)); , а combobox.Items.Add(addstr);
И ты, кстати, не ответил на мой вопрос

Последний раз редактировалось NikLik; 23.06.2008 в 21:26.
NikLik вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и чтение... Decibel Общие вопросы Delphi 12 17.06.2008 22:08
Чтение subsonic Общие вопросы Delphi 1 30.05.2008 07:06
Чтение строки... prizrak1390 Общие вопросы Delphi 2 28.02.2008 11:18
чтение файла Arteom Общие вопросы Delphi 6 27.08.2007 17:15
чтение файла vicvtor Общие вопросы Delphi 4 27.11.2006 12:26


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS