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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2013, 15:32   #11
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Скорее всего ошибка именно на AllList.Clear и AllList или не создан, или Parent-а нет. Да, не с триады случайно вызов?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.02.2013, 17:05   #12
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
... Да, не с триады случайно вызов?
Это как?

После некого видо-изминения кода
Код:
procedure _FindFunctions( CodeText: Tmemo; var  AllList: tlistbox; NamesList: tlistbox);
var
  list: tstringlist;
  i: integer;
  Name: string;
  poss, cnt, jcnt: integer;
  str: string;
begin
  list := tstringlist.Create;
  //list.LoadFromFile(pchar(FileToProcess));
  List.text:=CodeText.Text;
  NamesList.Clear;
  AllList.Clear;
 Alllist.Items.Add('Hello') ;
  for i := 0 to list.Count - 1 do
  begin
    if pos(pchar('function'), list.Strings[i]) <> 0 then
      if pos(pchar('external'), list.Strings[i]) = 0 then begin
      str:=Copy(list.Strings[i], 0, Pos(pchar(';'), list.Strings[i]) - 1);
      try
        AllList.Items.Add(str);
        except
        end;
        end;
        end;
   { if pos(pchar('Function'), list.Strings[i]) <> 0 then
      if pos(pchar('external'), list.Strings[i]) = 0 then
        AllList.Items.Add(Copy(list.Strings[i], 0, Pos(';', list.Strings[i]) - 1));
  end;
 {  for i := 0 to AllList.Items.count - 1 do
  begin
    if pos('(', AllList.Items[i]) <> 0 then
      NamesList.Items.Add(Copy(AllList.Items[i], Pos('n ', AllList.Items[i]) + 1, Pos('(', AllList.Items[i]) - Pos('n ', AllList.Items[i]) - 1))
    else
      NamesList.Items.Add(Copy(AllList.Items[i], Pos('n ', AllList.Items[i]) + 1, Pos(':', AllList.Items[i]) - Pos('n ', AllList.Items[i]) - 1));
  end;
  try
    cnt := 0;
    repeat //óäàëåíèå äóáëèêàòîâ â ñïèñêå
      jcnt := NamesList.Items.Count - 1;
      repeat
        if (NamesList.Items[jcnt] = NamesList.Items[cnt]) and
          (jcnt <> cnt)
          then NamesList.Items.Delete(jcnt);
        Dec(jcnt)
      until jcnt <= cnt;
      Inc(cnt)
    until cnt > NamesList.Items.Count - 1;
  except
  end;
  List.Free;    }
end;
Обнаружил что ошибка именно на этой строке
Код:
str:=Copy(list.Strings[i], 0, Pos(pchar(';'), list.Strings[i]) - 1);

Последний раз редактировалось Lauri; 11.02.2013 в 19:40.
Lauri вне форума Ответить с цитированием
Старый 11.02.2013, 20:47   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
str:=Copy(list.Strings[i], 0, Pos(pchar(';'), list.Strings[i]) - 1);
никакого особенного криминала не вижу, функция Copy достаточно защищёная (внутри есть нужные проверки), хотя, конечно, строки в Паскаль/Delphi нумеруются от 1 (единицы).
т.е. нужно:
Код:
str:=Copy(list.Strings[i], 1, Pos(pchar(';'), list.Strings[i]) - 1);
а поясните, зачем Вы в функции Pos используете тип pchar()?!
чем Pos(';', list.Strings[i]) не устроило?

Последний раз редактировалось Serge_Bliznykov; 11.02.2013 в 20:49.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.02.2013, 21:00   #14
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
Хорошо

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
никакого особенного криминала не вижу, функция Copy достаточно защищёная (внутри есть нужные проверки), хотя, конечно, строки в Паскаль/Delphi нумеруются от 1 (единицы).
т.е. нужно:
Код:
str:=Copy(list.Strings[i], 1, Pos(pchar(';'), list.Strings[i]) - 1);
а поясните, зачем Вы в функции Pos используете тип pchar()?!
чем Pos(';', list.Strings[i]) не устроило?
Вы правы насчёт Pchar, я как то на автомате. Всё работает отлично. Большое спасибо!
Lauri вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi передача текста из memo в memo hauk70 Помощь студентам 27 22.05.2012 18:33
Список строк из DBLookupComboBox в Memo/ListBox Dj_SheLL БД в Delphi 1 20.11.2010 21:12
ListBox, memo и кнопка T@tali БД в Delphi 3 17.06.2010 16:34
ListBox - передача в список файлов. Kocapb C++ Builder 7 14.05.2010 19:28
Memo и ListBox coder_noob Общие вопросы Delphi 6 18.09.2009 12:46