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

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

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

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

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

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

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

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

12
104 / 104 / 74
Регистрация: 27.05.2009
Сообщений: 201
03.06.2012, 16:23
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, выдает ошибку.
Каким способом, можно при избытке или нехватке добавлять эдиты.



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

3 вопрос, имеется в txt файле записи: Текст231 (пробел) Путь. Можно ли после того как поисковик нашел Текст231 остальные символы в строке распознал как путь на конце которого ждет установщик)
0
104 / 104 / 74
Регистрация: 27.05.2009
Сообщений: 201
03.06.2012, 20:43
Цитата Сообщение от 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  [ТС]
Спасибо.
с созданием разобрался.
только не где не могу найти как обнулять такой массив.
то есть если первый раз он создал 6 эдитов, то при следующем заполнение он пишет в них-же а лишнии остаются с той же информацией.


Я правильно понимаю, что чтобы дальше обращаться к информации в этих эдитах. имена у них m[0]-m[10].
(предварительно я "m" и "i" сделал глобальными переменными).
0
104 / 104 / 74
Регистрация: 27.05.2009
Сообщений: 201
06.06.2012, 18:02
можно и без имени, просто по тегу
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  [ТС]
В папке имеется 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
104 / 104 / 74
Регистрация: 27.05.2009
Сообщений: 201
13.06.2012, 08:34
функция для получения списка файлов в папке
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  [ТС]
щас попробую разобраться.
0
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 15
13.06.2012, 22:13  [ТС]
alexmcoder, Поиск не получается настроить. Приложил все, что наработал. С пояснительной запиской.
Если есть возможность посмотри пожалуйста.

prog.rar
0
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 15
14.06.2012, 14:34  [ТС]
странно. вроде разобрался, находит то что нужно, но добавочно выводит непонятно по какому принципу взятую инфу из других блокнотов.
0
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 15
14.06.2012, 15:09  [ТС]
prog.rar перезалил.
0
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 15
14.06.2012, 23:32  [ТС]
разобрался.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.06.2012, 23:32
Помогаю со студенческими работами здесь

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

Разделение программы на несколько файлов
Всем доброго времени суток! Возникла проблема - я написал небольшую програмку в main. #include &lt;stdio.h&gt; #include...

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru