![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Обработчик строк из текстового файла |
|
|
Delphi - Обработчик строк из текстового файла
|
Новый участник Сообщения: 13 |
Есть файл с текстом формата(разделитель '|'):
1|325230ш5ш3|438|Лондон|ЛОНДОН, ВЕЛИКОБРИТАНИЯ| 2|32523лпукп4|22|Европа|ДУБЛИН, ИРЛАНДИЯ| 3|32епкупщ4пп|21|Венгрия|БУДАПЕШТ, ВЕНГРИЯ| Нужно пропарсить его ( 1. Если в 3-ем числе >394, то вычитаем из него 394(строку дублируем),остаток оставляем новой строкой.(учесть, что операция должна быть циклична, т.к. встречаются числа больше 792) 2. Отсортировать строки по 3-ему числу. (1-ое число - счетчик) ) , чтобы на выходе получилось это: 1|32епкупщ4пп|21|Венгрия|БУДАПЕШТ, ВЕНГРИЯ| 2|32523лпукп4|22|Европа|ДУБЛИН, ИРЛАНДИЯ| 3|325230ш5ш3|46|Лондон|ЛОНДОН, ВЕЛИКОБРИТАНИЯ| 4|325230ш5ш3|394|Лондон|ЛОНДОН, ВЕЛИКОБРИТАНИЯ| |
|
Отправлено: 16:37, 02-08-2016 |
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить PM | Цитировать pageYK@fb, в чем возникла проблема?
Где рассуждения? |
------- Отправлено: 14:31, 03-08-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать lxa85, «рассуждения» были здесь: CMD/BAT - [решено] обработка в подстроке.
|
Отправлено: 14:50, 03-08-2016 | #3 |
Новый участник Сообщения: 13
|
Профиль | Сайт | Отправить PM | Цитировать lxa85, рассуждениями поделились ссылочкой выше.
А так затык, в основном, как в Delphi индентифицировать в строке это третье число, delimited опробовал, не зашло. |
Отправлено: 17:47, 03-08-2016 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата pageYK@fb:
|
||
Отправлено: 18:44, 03-08-2016 | #5 |
Ветеран Сообщения: 3307
|
Профиль | Отправить PM | Цитировать Цитата pageYK@fb:
function split(splitter: Char; str: String): TStringList; var substr: String; var parts: TStringList; var i: Integer; begin parts := TStringList.Create; for i := 1 to Length(str) do begin if str[i] = splitter then begin parts.add(substr); substr := ''; end else substr := substr + str[i]; end; parts.add(substr); result := parts; end; P.S. 100 лет не писал на Delphi, уж простите, если накосячил. |
|
Отправлено: 19:28, 03-08-2016 | #6 |
![]() Ветеран Сообщения: 1803
|
Профиль | Отправить PM | Цитировать Вся "работа" вокруг анализа одной "колонки"... не нужно что-то выдумывать. Для выделения подстроки в Delphi все есть
все остальные действия от обработки результата. |
------- Последний раз редактировалось opel431, 04-08-2016 в 00:51. Отправлено: 23:00, 03-08-2016 | #7 |
Новый участник Сообщения: 13
|
Профиль | Сайт | Отправить PM | Цитировать Из вышестоящего, собрал вот такой кусок:
var i,l:integer; ts:TStringList; s: string; begin ts := TStringList.Create; try ts.LoadFromFile('1.txt'); Delimiter := '|'; StrictDelimiter := True; DelimitedText := ts; for l:=0 to ts.Count-1 do begin value := StrToInt(ts.Strings[2]); while value>394 do begin value := value-394; ts.Strings[2]:=IntToStr('394'); // Как передать обновленную строку в файл? end; ts.Strings[2]:=IntToStr(value); // передача строки в файл с остатком. end; // сортировка finally ts.Free; end; end. |
Отправлено: 14:24, 04-08-2016 | #8 |
![]() Ветеран Сообщения: 1803
|
Профиль | Отправить PM | Цитировать Цитата pageYK@fb:
|
|
------- Последний раз редактировалось opel431, 04-08-2016 в 17:45. Отправлено: 15:27, 04-08-2016 | #9 |
Новый участник Сообщения: 13
|
Профиль | Сайт | Отправить PM | Цитировать opel431, Методов хватает, работает не так как надо.
Код
var i,l,value:integer; ts:TStringList; s: string; begin ts := TStringList.Create; try ts.LoadFromFile('1.txt'); ts.Delimiter := '|'; for l:=0 to ts.Count-1 do begin ts.DelimitedText := ts.Strings[l]; value := StrToInt(ts.Strings[2]); while value>394 do begin value := value-394; ts.Strings[2]:='394'; ts.SaveToFile('2.txt'); end; end; finally ts.Free; end; SaveToFile по итогу, возвращает в файл текст уже разбитый на подстроки: "1 325230ш5ш3 438 Лондон ЛОНДОН, ВЕЛИКОБРИТАНИЯ". И как оперировать с несколькими строками для их сортировки так мне осталось неясным. |
Отправлено: 11:03, 08-08-2016 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Сборка текстового файла из содержимого другого текстового файла | icomboy | Скриптовые языки администрирования Windows | 0 | 10-09-2013 15:17 | |
CMD/BAT - [решено] Вывод строк текстового файла, начиная с одной и заканчивая другой | Bruce Wayne | Скриптовые языки администрирования Windows | 5 | 07-08-2013 07:32 | |
VBS/WSH/JS - [решено] из строк текстового файла нужно вырезать определенные символы | alek2012 | Скриптовые языки администрирования Windows | 10 | 11-07-2012 16:54 | |
CMD/BAT - Поиск и копирование нескольких строк из текстового файла. | valen | Скриптовые языки администрирования Windows | 0 | 07-11-2011 17:27 | |
CMD/BAT - [решено] Перенос и удаление строк из текстового файла | sk8ter | Скриптовые языки администрирования Windows | 15 | 03-10-2010 19:35 |
|