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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2017, 03:14   #1
Andrew1812
 
Регистрация: 06.04.2017
Сообщений: 3
По умолчанию Pos не находит символ в Listbox-е

Здравствуйте, товарищи! Полторы суток не могу сделать процедуру. Весь интернет перерыл. Дошел до того, что пишу в форум (Первый раз в жизни. Поздравьте с дебютом.)

Задача: Для каждой строки с символом из листбокса1(загружается из файла(.txt)) найти строку с этим же символом в листбоксе3 (тоже загружается из файла(.txt), но другого) и в следующих 10-ти строках в этом файле (состоящих из нескольких чисел) найти число переменной (значение задаю ручками пока), чтобы потом вынести индекс этой строки и добавить его в листбокс2 новой строкой.

Компилирую, ввожу переменную, кликаю, а он мне выводит только первые 2 результата, будто пошел на третий цикл и не нашел символ из третьей строки ЛистБокса1 и далее.

Я проверил, все символы документов на английском. Может, с кодировкой что-то не понял?

При этом из листбокса1 он видит все символы, а в Листбокс3 не находит их.

Код:
procedure TForm1.Button1Click(Sender: TObject);

var
i,j,l,m:integer;
sf, pf, bf:string;

begin
    listbox3.Items.LoadFromFile('Data\KEY\m\16-19.txt');
    LISTBOX1.Items.LoadFromFile('Data\fac\FAC.TXT');
    listbox2.Items.Clear;         //очищаем листбокс для результата
    bf:='8';
{1} for i:= 0 to listbox1.Count-1 do          // перечисляет буквы из FAC (A,B,C,..Q 4)
    begin
      pf:= listbox1.Items.Strings[i];         // присваиваем переменной знак буквы из FAC
{2}   for l:=0 to (listbox1.Items.Count-1)  do          // ищем букву в документе, но почему-то не находим ничего, кроме A b B
        begin
        if Pos(pf,listbox3.Items.Strings[l])>0 then         //если смвол найден, то выполняет (почему-то только с символами A,B)
          begin
{3}       for j:=1 to 10 do         //ищем цифры в 10-ти строках, начиная со следующей
            begin
            m:=j+l;         //
            if Pos(bf,listbox3.Items.Strings[m])<>0 then          //если BF найден в строке mб то
            begin
              sf:=inttostr(j);
              listbox2.Items.Add(pf + '  ' + sf);
            break         // выход из цикла 2
            end;
          end;
        Break         // выход из цикла 3
        end;
      end;
   end;
end;



Символы в листбоксе1 (каждый в новой строке): A,B,C,E,F,G,H,I,L,M,N,O,Q 1,Q 2,Q 3,Q 4.

ЛистБокс3 содержит примерно следующее:
{
A
0 1 2 3 4
5 6
[...]
17 18 19 20
B
0 1 2 3
[...]
13
C
0 1 2 3 4 5 6
[...]
23 24 25 26
E
0 1 2 3 4
[...]
25 26
//И так далее
}
Вложения
Тип файла: rar 16-19.rar (393 байт, 5 просмотров)
Тип файла: rar fac.rar (126 байт, 6 просмотров)

Последний раз редактировалось Alex11223; 10.04.2017 в 07:30.
Andrew1812 вне форума Ответить с цитированием
Старый 10.04.2017, 07:52   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
{2}   for l:=0 to (listbox1.Items.Count-1)  do          // ищем букву в документе, но почему-то не находим ничего, кроме A
Интересно, почему в listbox3 ни чего не находит ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.04.2017, 16:56   #3
Andrew1812
 
Регистрация: 06.04.2017
Сообщений: 3
По умолчанию

Вот, блин! Спасибо, работает! Всю ночь сидел. В упор не видел. Надо чаще спать.
Andrew1812 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
while pos nibufep Общие вопросы Delphi 2 22.07.2016 23:47
используя процедуру keypress и фунцию listbox.при нажатии на listbox менялась ее высота Алекс38 Общие вопросы Delphi 1 19.09.2012 19:36
Assembler!!! Заменить на символ ‘!’ каждый 3тий символ в строке. Leon9313 Помощь студентам 0 24.04.2012 13:02
if not Pos Shouldercannon Общие вопросы Delphi 9 01.02.2012 15:48
как добавить в listbox файлы(пишу с помощью bassplayer)(Listbox+opendialog=play) blackstersl Общие вопросы Delphi 11 09.06.2010 13:23