13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
|
|
1 | |
Работа со строками24.09.2013, 23:58. Показов 2538. Ответов 27
Метки нет (Все метки)
Вот у меня есть файлик в которм есть текст, я должен по определенному кретерию скопировать это в новый файлик .
Вопрос:Вот я связал файловую переменную и файл. Этого достаточно, что бы я мог допустим курсор нажание 3 строку принудительно поставил или содержание файловой переменной я должен кинуть в Мемо ?
0
|
24.09.2013, 23:58 | |
Ответы с готовыми решениями:
27
Работа со строками, заполнить компоненты строками из файла Работа со строками(операции над строками) Работа со строками. Функции работы со строками Задание по темам: ООП, исключения, работа со строками (возможно применение коллекций List), работа с компоновщиком |
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
25.09.2013, 00:05 | 2 |
0
|
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,250
|
|
25.09.2013, 00:13 | 3 |
И вообще. Текстовый файл это устройство с последовательным доступом. Не прочитав первые две строки на третью не попадешь никак.
0
|
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
|
|
25.09.2013, 00:16 [ТС] | 4 |
А как мне тогда организовать посирочное считывание из файла?
0
|
angstrom
|
|
25.09.2013, 02:23 | 6 |
Кто мешает загрузить в TStringList? Будет и построчное.
|
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
|
|
26.09.2013, 00:02 [ТС] | 8 |
Ну есть XML файл который имеет что-то вроде такой стрктуры
<Project=[Название проекта]> Содержание проекта </Project> Следом за закрытием блока тег проект опять открывается и инфа о новом проекте. Надо сделать так,что бы по каждому проекту из 1 XML образовались XML по каждому проекту в отдельности. В принципе алгоритм на уме уже вертится, осталось правильно работать со строками... Я их только когда учился юзал. и то пару раз...
0
|
Заблокирован
|
|
26.09.2013, 01:00 | 9 |
iluxa1810,
Ну это то понятно. Но непонятно другое. У вас XML файл. Это ясно. Вам нужно разбить его на отдельные файлы. Но там ведь нужен ещё заголовок и прочая мура. Вы бы показали на примере одного кусочка что должно получится в самом конце. То есть пример полного файла. То есть исходный файл и конечный. один. Как это сделать - дело техники. Я могу только написать как вычленить, а что с ним делать дальше? Ну предположим у вас есть файл- заготовка, в который надо вставить этот кусок и записать в отдельный файл... ну хорошо... Берём TStringList, скажем с именем L_L и загружаем в него ваш файл. var L_L :TStringList; Создаём L_L :=TStringList.create; Загружаем L_L.LoadFromFile('имя фашего файла'); Потом берём строку. скажем S_S и копируем содержимое туда S_S:= L_L.text; Вот со строкой будем работать Работаем церез цикл While поскольку не знаем сколько у вас этих структур. И организовываем счётчик Есть функция поиска PosEx прочитайте как она работает. http://www.kansoftware.ru/?tid=5043 Ищем начало <Project= Функция выдаст позицию И тут же инкримируем счётчик структур Потом ищем конец </Project> Всё, У нас есть начало и конец. К концу прибавляем длину закрывающего тега </Project> это 10 символов И из конца вычитаем начало и функцией copy получаем фаш фрагмент, котрый сохраняем в перменной, скажем F_F Ну а далее делайте с ним что хотите. Скажем у вас есть заготовка (шаблон) куда его нужно воткнуть. Это шаблон копируем в L_L вставляем в нужное место ваш фрагмент. Всё, готово. Сохраняем. L_L.SaveToFile('Префикс имени'+IntToStr(C_F)+'.xml'); C_F - Это счётчик найденных фрагментов, о котором я говорил. Например префикс X И тогда имя первого файла будет X1.xml У второго X2.xml и так далее. Когда PosEx при поиске очередного <Project= выдаст 0, это значит все нужные фрагменты закончились и по этому признаку останавливаем цикл. Всё. Работа завершена. Вот где-то так... Но для более детального разбора нужен исходный файл и пример одного, что должно получится. Вот здесь справочник по всему, что есть в делфи http://www.delphibasics.ru/ Тут список процедур и функций работы со строками http://platonov-andrei.narod.r... utines.htm Тут почитайте http://www.delphi-manual.ru/work-with-strings.php
0
|
669 / 559 / 242
Регистрация: 26.11.2012
Сообщений: 2,191
|
|
26.09.2013, 07:14 | 10 |
А что мешает работать с xml файлом средствами xml в Delphi?
0
|
Супер-модератор
|
|
26.09.2013, 11:11 | 12 |
Это все делается в 2 строки с использованием XMLDOM... Одна строка - выборка всех тегов "<Project ...>", а вторая - занесение каждого найденного фрагмента туда, куда нужно... Пиши дальше свой велосипед.
1
|
Заблокирован
|
|
26.09.2013, 11:47 | 13 |
UI,
Я понимаю. что вы оседлали своего любимого конька. Судя по вашим постам можно легко проследить что и когда вы освоили. Только вот лишние модули - лишние проблемы. Начните писать утилитку на чистом апи, и воткните в неё любой модуль. И радуйтесь как утилитка раздуется. Для компа это фигня. А вот если вы пишите на мобильные системы, где мало памяти и проц не очень... Отказатся от удобств ООП очень сложно, понимаю. Но именно в оптимизации дело. Зачем подрубать модуль, когда всего-то нужно найти два тега и вычлинить всё между ними? Ну а если вы пишите читалку или что-то вроде, или вам нужно разобрать, например, по кусочкам 3D модель - тогда уж можно подумать и про огромный модуль.
1
|
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
|
|
28.09.2013, 12:47 [ТС] | 14 |
Поподробнее.
Добавлено через 3 минуты Как я понял,я должен из файла считывать по 1 строке в строковую переменную типа стринг,потом проверять условие начала записи <project> и конца записи </project>,а потом из этой переменной копировать в новый файл? А у переменной типа TStringList вроде есть параметр [i], который позволяет путешествовать по строкам?
0
|
Заблокирован
|
|
28.09.2013, 14:28 | 15 |
iluxa1810,
Нет. TStringList играет вспомогательную роль. Для загрузки и формирования готового текста. А весь анализ происходит в единственной строке. Добавлено через 27 минут Я же говорю, давайте что вам надо. Исходный файл и пример того что должно выйти. И я вам сделаю.
1
|
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
|
|
28.09.2013, 15:39 [ТС] | 16 |
Файлы на работе =(
И так не интересно, я хотел сам все сделать=) Добавлено через 9 минут В единственной строке,т.е все строки XML записываются как 1 ? В таком случае,вот я нашел 1 структуру, как потом сказать , что бы следующий анализ начался с конца закрытия проджекта ?
0
|
Заблокирован
|
|||||||||||||||||||||||||||||||||||||||||
28.09.2013, 16:48 | 17 | ||||||||||||||||||||||||||||||||||||||||
с конца закрытия чего?
Я же вам написал.
Теперь запускаем цикл While
Ищем начальный. У наc есть две переменные Pos1 и Pos2 Pos1 - позиция начального тега Pos2 - позиция конечного тега Перед тем как запустить цикл, инициализируем Pos2 Pos2:=1; Дело тут вот в чём. Pos2 - Это конец нужной структуры и следовательно отправная поиска точка следующей. Инициализируя. мы даём понять. что начинаем анализ с первой позиции. Поиск ведём функцией PosEx (http://www.kansoftware.ru/?tid=5043) В отличии от POS Она ведёт поиск не с начала, как POS, а с заданной позиции. Для её использования нужно подключить модуль StrUtils, если он не подключен. Добавлено через 5 минут Итак, ищем начальный тег. У вас это <Project
Добавлено через 1 минуту Если этого слова не найдено, Pos1 будет равна нулю. Это значит, что структуры нет или они закончились. По этому условию выходим из цикла. Добавлено через 2 минуты
Собираем всё вместе, получаем.
Всё, начало нам известно, ищем конец.
И следующий поиск будет с pos2, то есть продолжаем "шерстить" строку далше
1
|
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
|
|
28.09.2013, 16:55 [ТС] | 18 |
Добавлено через 33 секунды
Спасибо
0
|
Заблокирован
|
||||||
28.09.2013, 16:57 | 19 | |||||
И вот, наконец...
Это всё. Готовый код, только нужно всё поставить по местам. Объявить переменные и так далее.
1
|
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
|
|
28.09.2013, 17:24 [ТС] | 20 |
А не подскажешь, как в делфи можно скармить целый каталог с этими XML ?
Что бы он во всех XML проделал эту операцию.
0
|
28.09.2013, 17:24 | |
28.09.2013, 17:24 | |
Помогаю со студенческими работами здесь
20
Работа со строками Работа со строками Работа со строками Работа со строками Работа со строками Работа со строками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |