Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск текста и его копирование в переменные, из файла или из Memo 
:(
    Опции темы
andrey_post
  Дата 21.1.2004, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 23.12.2003
Где: Екатеринбург

Репутация: нет
Всего: нет



Передо мной строит такая задача. Есть тектовой файл, его структура вот такая:

:15 число: 456774
:30 число: 20040121
:32 число: 480983409

Мне нужно искать в файле строки ":15", ":30", ":32" и из каждой строки после второго двоеточия вытягивать число в какую-нибудь переменную, а затем после этих действий в поле :15: записать после чисел слово "ОКЕЙ" и сохранить файл.

Пока я использую Memo:
Код

for i:=0 to memo1.lines.count-1 do
    begin
       if 0<pos(':32', memo1.lines[i]) then
       Edit1.text:=memo1.lines[i];
    end;


У меня вытягивается вся строка... confused.gif
Помогите плиз советом!!!
--------------------
И что бы там не происходило, не стоит воспринимать жизнь слишком всерьёз, всё равно нам из неё живыми не выбраться!!!
PM MAIL WWW ICQ   Вверх
Illusion Dolphin
Дата 21.1.2004, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



функция copy(s:string; begin_char_number, count_of_chars:integer);
пример: есть строка
var s,s1:string;
s:="1234567890";
s1:=copy(s,3,4); //s1="3456"


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
andrey_post
Дата 21.1.2004, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 23.12.2003
Где: Екатеринбург

Репутация: нет
Всего: нет



Про функцию copy я в курсе, до дело в том что я не знаю какое количество символов будет стоять после второго двоеточия в строке, там модет быть и 3 символа, и 30 символов.
Так то эту функцию можно и так написать:
Код

for i:=0 to memo1.lines.count-1 do
    begin
       if 0<pos(':15', memo1.lines[i]) then
         s:=memo1.lines[i];
         s1:=copy(s,10,6);
         Edit1.Text:=s1;
    end;
  for i:=0 to memo1.lines.count-1 do
    begin
       if 0<pos(':30', memo1.lines[i]) then
         s:=memo1.lines[i];
         s1:=copy(s,10,6);
         Edit2.Text:=s1;
    end;
  for i:=0 to memo1.lines.count-1 do
    begin
       if 0<pos(':32', memo1.lines[i]) then
         s:=memo1.lines[i];
         s1:=copy(s,11,12);
         Edit3.Text:=s1;
    end;


но смысла я не вижу... к примеру, программе необходимо в файле или в Memo1 найти строку по шаблону ":15", скопировать в переменную все что идет после второго двоеточия, т.е. :15 TEXT: XXXXXXX, т.е. все Х. А после этого добавить после ХХХХХХ в этой строчке слово OKEY.
Пример:
Имеем строчку: :15 TEXT: 345345600
копируем 345345600 в переменную с переводом StrToInt(), затем после цифр добавляем слово OKEY и сохраняем файл. Строкча должна получится такой:
:15 TEXT: 345345600 OKEY

--------------------
И что бы там не происходило, не стоит воспринимать жизнь слишком всерьёз, всё равно нам из неё живыми не выбраться!!!
PM MAIL WWW ICQ   Вверх
Paradox
Дата 21.1.2004, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



МОжно копировать с 10-го до length(s)-10


--------------------
---
PM MAIL WWW   Вверх
x77
Дата 21.1.2004, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



удаляешь певый символ 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;


дальше делаешь с ними вмеми чего хочешь.



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
x77
Дата 21.1.2004, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



Цитата
дело в том что я не знаю какое количество символов будет стоять после второго двоеточия в строке, там модет быть и 3 символа, и 30


ты же можешь его определить, твой число всегда находится между первым пробелом и вторым двоеточием. а чтобы первое двоеточие не мешалось, его надо просто убить. тогда весь код вообще две строчки:

Delete (s, 1, 1);
s2 := Copy (s, Pos (' ', s) + 1, Pos (':', s) - Pos (' ', s));

Это сообщение отредактировал(а) x77 - 21.1.2004, 11:58


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
78125
  Дата 21.1.2004, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 20.1.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Цитата
Про функцию copy я в курсе, до дело в том что я не знаю какое количество символов будет стоять после второго двоеточия в строке, там модет быть и 3 символа, и 30 символов.


Дак число будет располагаться между ":" и последним символом, те length.
--------------------
купим подпись
PM MAIL   Вверх
andrey_post
Дата 21.1.2004, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 23.12.2003
Где: Екатеринбург

Репутация: нет
Всего: нет



Ура!!! Все получилось! только надо до конца довести,
вообще без понятия как слово OKEY дописать.
Вижу два варианта:
Или определить конец строки в Memo1 и дописать туда программно, а потом программно сохранить
или переписывать строки, хотя переписывать не хотелось бы.
как программно добавить в конец активной строки в Memo1 слово?.
--------------------
И что бы там не происходило, не стоит воспринимать жизнь слишком всерьёз, всё равно нам из неё живыми не выбраться!!!
PM MAIL WWW ICQ   Вверх
x77
Дата 21.1.2004, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



что значит "активной"? для любой i-той строки так:

Lines [i] := Lines [i] + 'OKEY';

для строки, на которой сейчас стоит курсор:

SelText := 'OKEY';


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
andrey_post
Дата 21.1.2004, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 23.12.2003
Где: Екатеринбург

Репутация: нет
Всего: нет



Ок! Спасибо большое!!! Все получилось!!!
--------------------
И что бы там не происходило, не стоит воспринимать жизнь слишком всерьёз, всё равно нам из неё живыми не выбраться!!!
PM MAIL WWW ICQ   Вверх
x77
Дата 21.1.2004, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



smile.gif


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.