| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Поиск текста и его копирование в переменные |
| Автор: andrey_post 21.1.2004, 09:44 | ||
| Передо мной строит такая задача. Есть тектовой файл, его структура вот такая: :15 число: 456774 :30 число: 20040121 :32 число: 480983409 Мне нужно искать в файле строки ":15", ":30", ":32" и из каждой строки после второго двоеточия вытягивать число в какую-нибудь переменную, а затем после этих действий в поле :15: записать после чисел слово "ОКЕЙ" и сохранить файл. Пока я использую Memo:
У меня вытягивается вся строка... Помогите плиз советом!!! |
| Автор: Illusion Dolphin 21.1.2004, 10:53 |
| функция copy(s:string; begin_char_number, count_of_chars:integer); пример: есть строка var s,s1:string; s:="1234567890"; s1:=copy(s,3,4); //s1="3456" |
| Автор: andrey_post 21.1.2004, 11:33 | ||
| Про функцию copy я в курсе, до дело в том что я не знаю какое количество символов будет стоять после второго двоеточия в строке, там модет быть и 3 символа, и 30 символов. Так то эту функцию можно и так написать:
но смысла я не вижу... к примеру, программе необходимо в файле или в Memo1 найти строку по шаблону ":15", скопировать в переменную все что идет после второго двоеточия, т.е. :15 TEXT: XXXXXXX, т.е. все Х. А после этого добавить после ХХХХХХ в этой строчке слово OKEY. Пример: Имеем строчку: :15 TEXT: 345345600 копируем 345345600 в переменную с переводом StrToInt(), затем после цифр добавляем слово OKEY и сохраняем файл. Строкча должна получится такой: :15 TEXT: 345345600 OKEY |
| Автор: Paradox 21.1.2004, 11:43 |
| МОжно копировать с 10-го до length(s)-10 |
| Автор: x77 21.1.2004, 11:51 |
| удаляешь певый символ Delete (s, 1, 1); получаешь первое число s1 := Copy (s, 1, Pos (' ', s) - 1); удаляешь пробел Delete (s, 1, 1) получаешь второе число s2 := Copy (s, 1, Pos (':', s) - 1); удаляешь двоеточие Delete (s, 1, 1) остаётся третье число s3 := s; дальше делаешь с ними вмеми чего хочешь. |
| Автор: x77 21.1.2004, 11:58 | ||
ты же можешь его определить, твой число всегда находится между первым пробелом и вторым двоеточием. а чтобы первое двоеточие не мешалось, его надо просто убить. тогда весь код вообще две строчки: Delete (s, 1, 1); s2 := Copy (s, Pos (' ', s) + 1, Pos (':', s) - Pos (' ', s)); |
| Автор: 78125 21.1.2004, 13:26 | ||
Дак число будет располагаться между ":" и последним символом, те length. |
| Автор: andrey_post 21.1.2004, 15:03 |
| Ура!!! Все получилось! только надо до конца довести, вообще без понятия как слово OKEY дописать. Вижу два варианта: Или определить конец строки в Memo1 и дописать туда программно, а потом программно сохранить или переписывать строки, хотя переписывать не хотелось бы. как программно добавить в конец активной строки в Memo1 слово?. |
| Автор: x77 21.1.2004, 15:22 |
| что значит "активной"? для любой i-той строки так: Lines [i] := Lines [i] + 'OKEY'; для строки, на которой сейчас стоит курсор: SelText := 'OKEY'; |
| Автор: andrey_post 21.1.2004, 16:10 |
| Ок! Спасибо большое!!! Все получилось!!! |
| Автор: x77 21.1.2004, 16:30 |
| |