Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2009, 15:25   #1
lg12
Пользователь
 
Регистрация: 20.06.2009
Сообщений: 50
По умолчанию создание массива

Код:
procedure TForm1.Button1Click(Sender: TObject);
var x,i:integer;
var a:array['а'..'я'] of string;
begin
 for i:=0 to Memo2.Lines.Count-1 do begin
 a[AnsiChar(i+ord('а'))]:=Memo2.Lines[i];
 end;
 begin
x:=pos('ку',a[i]);
label1.Caption:=floattostr(x);
в этом коде я хотел найти в каждой строке слово ку. не работает
Подскажите: вот у меня массив. как брать оттуда каждую строчку по порядку и проверять есть там определенное слово, если да то выводить его в мемо3. потом переходить к другой строке и тоже проверять

Последний раз редактировалось Stilet; 21.08.2009 в 15:33.
lg12 вне форума Ответить с цитированием
Старый 21.08.2009, 15:32   #2
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

юзать функцию PosEx()...
Lemo вне форума Ответить с цитированием
Старый 21.08.2009, 15:34   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
 
for i:=0 to Memo2.Lines.Count-1 do begin
 if pos(' ку ',Memo2.lines[i])<>0 then Есть такое слово в нашей букве
end;
Смысл ясен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.08.2009, 15:42   #4
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

ОпоздаЛ =(
Вложения
Тип файла: rar Пример.rar (172.4 Кб, 11 просмотров)
Lemo вне форума Ответить с цитированием
Старый 21.08.2009, 19:37   #5
lg12
Пользователь
 
Регистрация: 20.06.2009
Сообщений: 50
По умолчанию вытянуть нужную информацию

вот файл. в нем текст с html страницы. как выбрать только то что написано русским. т.е эт программа тв.
Вложения
Тип файла: txt Текстовый документ (4).txt (1.2 Кб, 153 просмотров)
lg12 вне форума Ответить с цитированием
Старый 21.08.2009, 20:06   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Считываешь файл в Мемо или Stringlist. Читаешь построчно.
Находишь первый символ русской буквы, тем более все начинается с заглавных букв.
Код:
for i:=1 to length(s) do 
if s[i] in ['А'..'Я] then
 begin
   k:=i;//запомним индекс
   break;
 end; 
Удалим начало строки
delete(s,1,k-1);
Сейчас берем участок русского текста до первого знака '<'
s1:=copy(s,1,pos('<',s)-1);
Заносим это куда надо.
puporev вне форума Ответить с цитированием
Старый 21.08.2009, 23:40   #7
lg12
Пользователь
 
Регистрация: 20.06.2009
Сообщений: 50
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
i:integer;
begin
for i:=1 to length(s) do
if s[i] in ['А'..'Я] then
 begin
   k:=i;//запомним индекс
   break;
 end;
//Удалим начало строки
delete(s,1,k-1);
Сейчас берем участок русского текста до первого знака '<'
s1:=copy(s,1,pos('<',s)-1);[/COLOR]
выдает ошибку

Последний раз редактировалось Stilet; 25.08.2009 в 08:51.
lg12 вне форума Ответить с цитированием
Старый 22.08.2009, 07:16   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Я думал, Вы хоть что-то знаете. Я же писал он-лайн, мог что-то пропустить, опечататься, я же Вам направление дал. Неужели не видно что ['А'..'Я] после буквы Я нет апострофа?
Кроме того этой процедурой Вы вообще ничего не получите. Вам же надо Файл прочитать в массив строк, а потом в цикле обрабатывать каждую строку.

Вот как нужно, если только вытащить русский текст.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var L:Tstrings;
    i,j,k:integer;
    s,s1:string;
begin
L:=TStringlist.Create;  //создаем список строк
L.LoadFromFile('file1.txt');//заносим в него строки из файла, файл в папке программы
for i:=0 to L.Count-1 do
 begin
  s:=L.Strings[i]; k:=0;  //обрабатываем строки
  for j:=1 to length(s) do
  if s[j] in ['А'..'Я'] then
    begin
     k:=j;//запомним индекс
     break;
    end;
   //Удалим начало строки
   delete(s,1,k-1);
   //Сейчас берем участок русского текста до первого знака '<'
   s1:=copy(s,1,pos('<',s)-1);
   Memo1.Lines.Add(s1);//заносим в Мемо1
   Memo1.Lines.SaveToFile('file2.txt');// можно в файл
  end;
L.Clear;
end;
Думаю следующий вопрос будет, а как вытащить сначала время, а потом название передачи?

Если нужно нормальную программу, то тогда так.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var L:Tstrings;
    i:integer;
    s,vr,per:string;
begin
L:=TStringlist.Create;  //создаем список строк
L.LoadFromFile('file1.txt');//заносим в него строки из файла, файл в папке программы
for i:=0 to L.Count-1 do
 begin
  s:=L.Strings[i]; //обрабатываем строки
  if pos(':',s)>0 then //если в строке есть двоеточие
   begin
    delete(s,1,pos('>',s));//удалям начало строки до времени
    vr:=copy(s,1,pos('<',s)-1);//время
    delete(s,1,pos('>',s));//удаляем до названия передачи
    per:=copy(s,1,pos('<',s)-1);//название
    if length(vr)=4 then vr:='0'+vr;//если время типа 9:05, добавим для выравнивания впереди 0
    vr:=vr+'   '+per; //объединим строки
    Memo1.Lines.Add(vr);//заносим в Мемо1
    Memo1.Lines.SaveToFile('file2.txt');// можно в файл
  end;
 end;
L.Free; //кстати в первом варианте тоже надо  L.Free; 
end;

Последний раз редактировалось Stilet; 25.08.2009 в 08:51.
puporev вне форума Ответить с цитированием
Старый 22.08.2009, 14:11   #9
lg12
Пользователь
 
Регистрация: 20.06.2009
Сообщений: 50
По умолчанию

puporev большое спасибо. я начинающий

вот код
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
l:Tstrings;
i:integer;
s,vr,per:string;
begin
l:=tstringlist.Create;
l.loadfromfile('D:\loko.txt');
for i:=0 to l.Count-1 do
begin
s:=l.Strings[i];
if pos('Россия',s)>0 then// если это телеканал Россия
begin
if pos(':',s)>0 THEN
begin
delete(s,1,pos('>',s));
vr:=copy(s,1,pos('<',s)-1);
delete(s,1,pos('>',s));
per:=copy(s,1,pos('<',s)-1);
if length(vr)=4 then vr:='0'+vr;
vr:=vr+' '+per;
memo1.lines.add(vr);
memo1.lines.savetofile('D:\12.txt');
end;
end;
end;
не работает условие если это Россия а так без условия все работет
Вложения
Тип файла: txt loko.txt (835 байт, 149 просмотров)

Последний раз редактировалось Stilet; 25.08.2009 в 08:52.
lg12 вне форума Ответить с цитированием
Старый 23.08.2009, 14:32   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Извините, но в файле нет ни одного слова Россия, чего же Вы хотите?
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое создание массива Juggernaut Общие вопросы Delphi 3 20.05.2009 15:13
Создание н-мерного динамического массива Парсифаль Общие вопросы C/C++ 33 02.05.2009 18:29
Создание массива компонентов artemavd Общие вопросы Delphi 8 30.03.2009 15:43
[Delphi] создание и обработка двумерного массива screep Помощь студентам 5 16.06.2008 19:27
Помогите новичку: создание массива String snaem Общие вопросы .NET 4 06.03.2008 21:44