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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2008, 10:01   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Восклицание

Убиваю повторы в ListBox так
Код:
type
  TForm1 = class(TForm)
    function InMas(s: string):boolean;
Код:
var
  Form1: TForm1;
  Temp: array of string;
Код:
function TForm1.Inmas(s: string):boolean;
var i: Integer;
begin
result:=False;
for I:= 0 to length(temp)-1 do
begin
if temp[i]=s then
begin
result:=True;
break;
end;
end;
end;
Код:
procedure TForm1.N7Click(Sender: TObject);
var S:TStrings;
i: integer;
n: integer;
count: integer;
begin
OpenDialog2.Execute;
Memo1.Lines.Add(OpenDialog2.FileName);

for i:=Memo1.Lines.Count-1 downto 0 do
if ''=trim(Memo1.Lines[i]) then Memo1.Lines.Delete(i);

setlength(temp,0);
count:=Memo1.Lines.Count-1;
i:=0;   
while i<=count do   
begin
if inMas(Memo1.Lines[i]) then
begin
Memo1.Lines.Delete(i);
dec(count);
dec(i);
end else
begin
setlength(temp,length(temp)+1);
temp[Length(temp)-1]:=Memo1.Lines[i];
end;
inc(i);
end;

S:=TStringList.Create;
S.Add(Memo1.Text);
S.SaveToFile(ExtractFilePath(ParamStr(0))+'paths.txt');
S.Free;

ListBox1.Clear;
ListBox1.Items.Text:=Memo1.Text;

n:=0;
while n <= ListBox1.Count - 1 do
if length(ListBox1.Items[n]) = 0
then ListBox1.Items.Delete(n)
else inc(n);

count:=ListBox1.Items.Count;
Label3.Caption:='Всего файлов '+intToStr(count)+'/'+intToStr(count);
После добавления новой записи вот что происходит:
До добавления:
D:\Games\srcds\cstrike\cfg\antirejo in0.cfg
D:\Games\srcds\cstrike\cfg\antirejo in1.cfg
D:\Games\srcds\cstrike\cfg\antirejo in2.cfg

После добавления:
D:\Games\srcds\cstrike\cfg\antirejo in0.cfg
\antirejoin1.cfg
\antirejoin2.cfg

Как исправить?

Народ ну помогите пожалуйста.

Последний раз редактировалось rpy3uH; 19.12.2008 в 19:24.
Shouldercannon вне форума Ответить с цитированием
Старый 19.12.2008, 16:51   #2
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Может так?
Код:
function TForm1.Inmas(s: string):boolean;
var i: Integer;
begin
  result:=False;
  for I:= 0 to ListBox1.Count - 1 do
  begin
    if ListBox1.Items[n] = s then
    begin
      result:=True;
      break;
    end;
  end;
end;

procedure TForm1.N7Click(Sender: TObject);
var S:String;
  count: Integer;
begin

  if not OpenDialog2.Execute then
    Exit;
  S := Trim(OpenDialog2.FileName);

  if (S <> '') and (not inMas(S)) then
    ListBox1.Items.Add(S);

  count:=ListBox1.Items.Count;
  Label3.Caption:='Âñåãî ôàéëîâ '+intToStr(count)+'/'+intToStr(count);

end;
s.Creator вне форума Ответить с цитированием
Старый 19.12.2008, 18:21   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Спасибо работает.
Shouldercannon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема eldar Работа с сетью в Delphi 12 05.10.2008 18:10
Помогите с чисткой до нулей!!! QIP AGeNt Помощь студентам 2 10.07.2008 00:30
Нужна сумма повторов. Желательно формула jungo Microsoft Office Excel 13 04.05.2008 13:19