Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 15
1

Разделение строки (Эдит), на несколько(Эдит2-4)

03.06.2012, 12:24. Просмотров 2650. Ответов 12
Метки нет (Все метки)


Имеется строка символов, разделенные запятыми и пробелами.
текст1,(пробел)Текст2,(пробел)текст3
Записана данная строка в Edit.

Требуется разделить её на несколько Edit'ов.
То есть Edit1 полная запись. Edit2 Текст1(без запятой и пробела), Edit3 Текст2(без запятой и пробела) Edit4 Текст3(без запятой и пробела).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2012, 12:24
Ответы с готовыми решениями:

Вывести в Эдит часть строки
Помогите пожалуйста. Имеется строка : edit5.text:=(''+IntToStr(RandomRange(1800, 1970))); Как...

Разделение строки на несколько строк
помогите разобрать, как именно работает данный предикат, нашев в gooogle, делаю работу...

Разделение одной текстовой строки на несколько
Начну с примера. Кто то ввёл в форму строку типа ...

Разделение кода на несколько файлов
Доброго времени суток. Заинтересовал вопрос о разделении кода, когда это требуется разделяю на...

12
103 / 103 / 74
Регистрация: 27.05.2009
Сообщений: 201
03.06.2012, 16:23 2
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TForm1.Button1Click(Sender: TObject);
var
t:tstringlist;
i:integer;
begin
 t:=tstringlist.Create;
 t.Text:=StringReplace(edit1.Text, ',',#13#10,[rfReplaceAll, rfIgnoreCase]);
 // если edit1.text содержит строку текст1,(пробел)Текст2,(пробел)текст3
 // то теперь
 // t[0]=Текст1
 // t[1]=Текст2
 //t[2]=Текст3
 // теперь можно просто присвоить
 edit2.Text:=trim(t[0]);
 edit3.Text:=trim(t[1]);
 edit4.Text:=trim(t[2]);
 // если такие компоненты есть на форме
 // если нет то создать их динамически в цикле
 // тоесть так
 for I := 0 to t.Count-1 do begin
                             // создание edit
                             end;
 
end;
1
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 15
03.06.2012, 18:39  [ТС] 3
отлично работает.

только если вдруг оказывается меньше 3, выдает ошибку.
Каким способом, можно при избытке или нехватке добавлять эдиты.



2 вопрос, имеется поисковик по txt файлу Поиск.rar. можно ли сделать что-бы искал во всех txt файлах в заданной папке.

3 вопрос, имеется в txt файле записи: Текст231 (пробел) Путь. Можно ли после того как поисковик нашел Текст231 остальные символы в строке распознал как путь на конце которого ждет установщик)
0
103 / 103 / 74
Регистрация: 27.05.2009
Сообщений: 201
03.06.2012, 20:43 4
Цитата Сообщение от KaLLIaK Посмотреть сообщение
отлично работает.

только если вдруг оказывается меньше 3, выдает ошибку.
Каким способом, можно при избытке или нехватке добавлять эдиты.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TForm1.Button1Click(Sender: TObject);
var
t:tstringlist;
i:integer;
m:array[0..10] of Tedit;
begin
 t:=tstringlist.Create;
 t.Text:=StringReplace(edit1.Text, ',',#13#10,[rfReplaceAll, rfIgnoreCase]);
 //на форме есть edit1, новые edit создаем в зависимости от его располажения и под ним
 // создаем динамически в цикле необходимые edit
 for I := 0 to t.Count-1 do begin
                             // создание edit
                             m[i]:=Tedit.Create(self);
                             m[i].Parent:=form1;
                            m[i].Left:=edit1.Left;
                            m[i].Top:=edit1.Top+(edit1.Height*(i+1));
                            m[i].Width:=edit1.Width;
                            m[i].Text:=t[i];
                             end;
 
end;
Добавлено через 6 минут
Цитата Сообщение от KaLLIaK Посмотреть сообщение

3 вопрос, имеется в txt файле записи: Текст231 (пробел) Путь. Можно ли после того как поисковик нашел Текст231 остальные символы в строке распознал как путь на конце которого ждет установщик)
если строка оканчивается так: "пробел путь"

то просто копируем с последнего в строке пробела до конца строки
Delphi
1
2
3
4
5
6
var
s,p:string;
begin
 s:=trim(s);
 p:=copy(s,LastDelimiter(' ',s),length(s));
end;
1
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 15
06.06.2012, 16:36  [ТС] 5
Спасибо.
с созданием разобрался.
только не где не могу найти как обнулять такой массив.
то есть если первый раз он создал 6 эдитов, то при следующем заполнение он пишет в них-же а лишнии остаются с той же информацией.


Я правильно понимаю, что чтобы дальше обращаться к информации в этих эдитах. имена у них m[0]-m[10].
(предварительно я "m" и "i" сделал глобальными переменными).
0
103 / 103 / 74
Регистрация: 27.05.2009
Сообщений: 201
06.06.2012, 18:02 6
можно и без имени, просто по тегу
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
procedure TForm1.Button1Click(Sender: TObject);
var
t:tstringlist;
i:integer;
m:array[0..10] of Tedit;
begin
// проверка и удаление динамически созданных edit
 for i := Form1.ComponentCount - 1 downto 0 do
  begin
    if Form1.Components[i] is TEdit then begin
     if (Form1.Components[i] as TEdit).Tag=1 then  (Form1.Components[i] as TEdit).Free;
                                          end;
  end;
 t:=tstringlist.Create;
 t.Text:=StringReplace(edit1.Text, ',',#13#10,[rfReplaceAll, rfIgnoreCase]);
 //на форме есть edit1, новые edit создаем в зависимости от его располажения и под ним
 // создаем динамически в цикле необходимые edit
 for I := 0 to t.Count-1 do begin
                             // создание edit
                             m[i]:=Tedit.Create(self);
                             m[i].Parent:=Form1;
                            m[i].Left:=edit1.Left;
                            m[i].Top:=edit1.Top+(edit1.Height*(i+1));
                            m[i].Width:=edit1.Width;
                            m[i].Text:=t[i];
                            // по этому тегу будем определять, что edit был создан динамически
                            m[i].Tag:=1;
                             end;
 
end;
1
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 15
12.06.2012, 20:32  [ТС] 7
В папке имеется n количество текстовых файлов.
нужно перебрать их всех и найти данный "тег". если его нет, то искать следующий.
если нашел, "то ваше сообщение выше", оставшиеся символы воспринимаем как путь.

Добавлено через 19 часов 41 минуту
Программа, которая ищет слово в файле.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.Button2Click(Sender: TObject);
begin
opendialog1.Execute;
edit2.Text:=opendialog1.FileName;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
     s:string;
begin
memo1.Lines.LoadFromFile(edit2.Text);
for i:=0 to (memo1.lines.count-1) do
begin
 if pos (edit1.Text,memo1.Lines[i])<>0 then
 s:=s+' '+inttostr(i+1);
end;
showmessage('Данный текст найден в строках: '+s);
end;
Программа которая выводит все тхт файлы.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
  F: TSearchRec;
  Path: string;
  Attr: Integer;
begin
  {Искать все файлы в заданной директории с расширение .wav}
  Path := 'e:\*.txt';
  {которые имеют атрибуты "Только для чтения" и "Архивный"}
  Attr := faReadOnly + faArchive;
 
  FindFirst(Path, Attr, F);
 
  {Если хотя бы один файл найден, то продолжить поиск}
  if F.name <> '' then
  begin
    ListBox1.Items.Add(F.name); {Добавление в TListBox имени найденного файла}
    while FindNext(F) = 0 do
      ListBox1.Items.Add(F.name);
  end;
  FindClose(F);
end.
Как их можно объединить, имея все выше сказанное.
+
Delphi
1
2
3
4
5
6
var
s,p:string;
begin
 s:=trim(s);
 p:=copy(s,LastDelimiter(' ',s),length(s));
end;
0
103 / 103 / 74
Регистрация: 27.05.2009
Сообщений: 201
13.06.2012, 08:34 8
функция для получения списка файлов в папке
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function FindFiles(path, ext: string):tstringlist;
Var SR : TSearchRec;
    Res : Integer;
    t:tstringlist;
begin
t:=tstringlist.Create;
  Res := FindFirst(path+ext, faAnyFile, SR);
  while Res = 0 do
  begin
  t.Add(path+Sr.Name);
   Res := FindNext(SR);
  end;
  FindClose(SR);
  result:=t;
end;
пример получения списка файлов в папке и поиска подстроки в файлах
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
procedure TForm1.Button1Click(Sender: TObject);
var
t,tm:tstringlist;
s,ps:ansistring;
i,j,x:integer;
begin
ps:='тег'; // то что ищем
t:=tstringlist.Create;
// получаем список файлов
 t:=findfiles('C:\', '*.txt');
 tm:=tstringlist.Create; x:=-1;
 // поиск в файлах
      for I := 0 to t.Count-1 do begin
                                tm.LoadFromFile(t[i]);
                                  // проверяем нахождение строки в файле
                                for j := 0 to tm.Count-1 do begin
                                              //(с учетом регистра)
                                              if pos(ps,tm[j])>0 then // строка найдена
                                                begin
                                          // здесь выполняем необходимые действия
                                         // tm.Text содержит текст файла
                                         // tm[0] первая строка файла и тд.
                                         // t[i] содержит путь к файлу
                                         // t[j] содержит строку с найденной подстрокой
                                         // например выводим в memo1, строку с найденной подстрокой
                                         memo1.Lines.Add(tm[j]);
                                         // если ищем только одно совпадение в файле, то выходим из цикла поиска в этом файле
                                         break;
                                                end;
                                                             end;
                                 end;
 tm.Free;t.Free;
end;
1
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 15
13.06.2012, 12:53  [ТС] 9
щас попробую разобраться.
0
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 15
13.06.2012, 22:13  [ТС] 10
alexmcoder, Поиск не получается настроить. Приложил все, что наработал. С пояснительной запиской.
Если есть возможность посмотри пожалуйста.

prog.rar
0
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 15
14.06.2012, 14:34  [ТС] 11
странно. вроде разобрался, находит то что нужно, но добавочно выводит непонятно по какому принципу взятую инфу из других блокнотов.
0
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 15
14.06.2012, 15:09  [ТС] 12
prog.rar перезалил.
0
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 15
14.06.2012, 23:32  [ТС] 13
разобрался.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2012, 23:32

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Разделение программы на несколько файлов
Всем доброго времени суток! Возникла проблема - я написал небольшую програмку в main. ...

Разделение кода на несколько файлов
• Имеем основной cpp файл с main. • Имеем код некоторых нужных функций • Есть указание...

Разделение страницы на несколько страниц
Здравствуйте , никак не могу найти решение как использовать &lt;!--nextpage--&gt; в php файле. Сама...

Разделение mp4 на несколько файлов
Есть mp4 файл в кодеке h264, сформированный по трем разным каналам. Нужно по имеющемуся файлу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.