![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему не заходит в Брейк ? [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 то это
> выполняется а брейк нет
Не может такого быть, брейк тоже выполняется. Просто выход идет только из одного цикла, ты наверное это не учитываешь.