Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему не заходит в Брейк ? [D7, XP]


RX ©   (2005-12-24 12:25:00) 

     begin
     for i:=0 to ListFile.Lines.Count do
     for k:=0 to 3 do if ListFile.Lines[i]=massivlist[k]
                         then breakelse
                         massivlist[i]:=ListFile.Lines[i];

     end;


если вместо брейка написать чонить типа qwerty:=123 то это выполняется а брейк нет. И компилер брейкпоинт не ставит туда.


Набережных С.   (2005-12-25 11:18:00) [1]


> Separator ©   (25.12.05 10:50) [16]

Я просто показал, как это может выглядеть со стороны, не более того. Я подумал, что тебя это может интересовать.


Separator   (2005-12-25 10:50:00) [2]


> Набережных С. ©   (25.12.05 10:06) [15]

Я читал 4 и просто оформил для RX  в готовую функцию, чтоб меньше приходилось придумывать. А то чем он больше выдумает, тем больше ошибок допускает


Набережных С.   (2005-12-25 10:06:00) [3]


> Separator ©   (25.12.05 09:24) [12]

Это круто. Действительно, зачем такому профи читать чужие ответы, например [4], он и так знает, что кроме него никто ничего путного не посоветует.


Separator   (2005-12-25 09:36:00) [4]

либо можно так:

function Dup(ListFile: TStringList): TStringList;
var i: integer;
begin
   Result:= TStringList.Create;
   for i:= 0 to ListFile.Count - 1 do
       if Result.IndexOf(ListFile[i]) <> -1
           then Result.Add(ListFile[i])
end;


Смысла от переменных elи eqflagвообще не вижу. Почему цикл кот 0до 100?


Separator   (2005-12-25 09:28:00) [5]

Точней так:
Result.Assign(ListFile)


Separator   (2005-12-25 09:24:00) [6]


function Dup(ListFile: TStringList): TStringList;
begin
   Result:= TStringList.Create;
   Result.Sorted := True;
   Result.Duplicates := dupIgnore;
   Result.Assign(ListFile.Lines)
end;


RX   (2005-12-25 09:09:00) [7]

Вот блин наканецта придумал...
Вот это работает 100%

begin
     el:=0;
     for i:=0 to ListFile.Lines.Count-1 do
     begin
        eqflag:=false;
        for k:=0 to 100 do if ListFile.Lines[i]=massivlist[k]
                         then eqflag:=true;
        if eqflag=false then begin massivlist[el]:=ListFile.Lines[i];
                                   el:=el+1;
                             end;
     end;
end;


Fl@sh   (2005-12-24 15:47:00) [8]


> )))) а как его заполнить чтоб дубликатов не было?
> пожалуста!!! )))

Имхо, лучше все-же делать способом, кот. представил ЮЗ.


RX   (2005-12-24 14:09:00) [9]

)))) а как его заполнить чтоб дубликатов не было?
пожалуста!!! )))


DiamondShark   (2005-12-24 14:05:00) [10]


> RX   (24.12.05 13:50) [6]
> Ну блин неужели нет чегонибудь стандартного всеми тыщу раз
> использумого метода проверки наличия в массиве элемента
> (принадлежит он этому массиву иль нет)??!


i := Low(Massiv);
while (i <= High(Massiv)) and (element <> Massiv[i]) do Inc(i);
if i <= High(Massiv) then // Ура! Нашли!

учить наизузсть.


SergP.   (2005-12-24 14:00:00) [11]


> RX   (24.12.05 13:37) [5]
> Чото блин корректировки не помогают
> а вот SL как декларировать и где?
> ругается типа чото там корресподинг


SL:TStrings


RX   (2005-12-24 13:50:00) [12]

Ну блин неужели нет чегонибудь стандартного всеми тыщу раз использумого метода проверки наличия в массиве элемента (принадлежит он этому массиву иль нет)??!


RX   (2005-12-24 13:37:00) [13]

Чото блин корректировки не помогают
а вот SL как декларировать и где?
ругается типа чото там корресподинг


Юрий Зотов   (2005-12-24 13:25:00) [14]

А зачем здесь вообще нужны какие-то там брейки? Да и ошибки в коде не помешало бы убрать.

for i := 0 to ListFile.Lines.Count - 1do
 for k := 0 to 3 do
   if ListFile.Lines[i] <>massivlist[k] then
     massivlist[ k] := ListFile.Lines[i];

Видимо, компилятор не дурак и строит код примерно в таком духе, так что никаких лишних брейков (т.е. лишних jmp) в нем уже нет - вот потому брейкпойнт и не ставится. Ставить просто негде.

Только сильно похоже, что этот код неверен уже по смыслу. Поскольку он не соответствует задаче, описаной в [3]. Вот вариант:

SL := TStringList.Create;
SL.Sorted := True;
SL.Duplicates := dupIgnore;
SL.Assign(ListFile.Lines);


RX   (2005-12-24 12:55:00) [15]

Алгоритм заполнения массива строками из Мемо путём банальной проверки на их наличие в массиве. В случае если такая строка в массиве есть то брейк (одинаковых строк в массиве не должно собираться), в случае если нет похожей строки в массиве - добавить в массив. Может кто предложит др-й рабочий алг-м?


RX   (2005-12-24 12:49:00) [16]

Нееет.вместо того что бы сделать брейк когда ListFile.Lines[i]=massivlist[k]TRUE - он какого то хрена в елс прыгает. Только что проверил.


The_scorpion   (2005-12-24 12:45:00) [17]


> если вместо брейка написать чонить типа qwerty:=123 то это
> выполняется а брейк нет

Не может такого быть, брейк тоже выполняется. Просто выход идет только из одного цикла, ты наверное это не учитываешь.


Наверх

Титульная страница Поиск, карта сайта Написать письмо