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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> str.insert (); 
V
    Опции темы
Zorak
Дата 13.8.2011, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Уважаемые форумчани. Обьясните мне пожалуйста как работает Str.Insert (). Str в данном случае типа Stringlist;
Проблема:
Код

  str.LoadFromFile(Dir2 + '\' + IntToStr(numf ) + '.txt');
      for k:=0 to str.Count-1 do
      begin
        if pos('image',str.Strings[k]) >= 1 then
          begin
            str.Insert(k,'/\/\/\/\/\/\/\/\');
          end;
      Application.ProcessMessages;
      end;  // for k :=

Вроде как бы должно работать следующм образом: ЕСЛИ находит в строке подстроку имейдж тогда вставляется моя карикатура и все !!!... на самом деле работает так: ЕСЛИ находится подстрока имейдж то мою карикатуру совает столько раз, до скольких я не умею считать (... Тоесть какоето количество есть раз, но я не могу пробить почему именно столько раз оно его вставляет.. вообщем мне надо вставить только одну строку, а вставляет толпу просто. Почему и как вставить только одну строку ?
Спасибо.


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
Zorak
Дата 14.8.2011, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



P.S. Такой вариант тоже не катит, оно просто игнорит переменную(
Код

    str.LoadFromFile(Dir2 + '\' + IntToStr(numf ) + '.txt');
      for k:=0 to str.Count-1 do
      begin
        prosto := pos('image',str.Strings[k]);
        if prosto >= 1 then
          begin
            prosto := 0;
            str.Insert(k,'/\/\/\/\/\/\/\/\');
            prosto := 0;
          end;
      Application.ProcessMessages;
      end;  // for k :=



--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
ama_kid
Дата 14.8.2011, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



наверное, потому что Insert вставляет строку перед твоей, вызывая тем самым смещение строки с "image" дальше. На следующей итерации - снова её находит по уже изменившемуся индексу и т.д.
Для таких динамически пополняемых массивов использовать for - слегка моветон, лучше используй while и вручную контролируй изменение индекса, например, вручную дополнительно икрементируй его после вставки строки-разделителя. Или вставляй после найденной строки.
Ну, это так - навскидку...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Zorak
Дата 14.8.2011, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Смещение оказалось правильным, я в принципе подозревал это, но я пробовал k и k-1... но с к-1 опять промахнулся, ибо опять же по новому ее сразу находит.. розобрался, спасибо)


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
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.0716 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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