Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.01;
Скачать: CL | DM;

Вниз

Обработка расширений файлов   Найти похожие ветки 

 
Volf_555   (2005-12-12 13:20) [0]

Суть в следующем:
Необходимо из списка файлов выделить все их расширения и произвести обработку их. То есть - допустим, есть следующие расширения, полученные со списка файлов:

*.rar
*.rar
*.exe
*.thm
*.rar
*.jpg
*.zip
*.zip
*.jpg
*.thm
*.zip
*.zip

Необходимо, чтобы в конечном результате вышло следующее:
*.rar
*.exe
*.thm
*.jpg
*.zip

Построить список расширений трудности не составляет.
А вот обработка - да...

Мой обработчик, который обрабатывает список неверно:

var
w,w1:TStringList;
e,r:Integer;
co:Integer;
cur:String;
x1:Integer;
x2:Integer;

...
begin
...
x1:=0;
x2:=w.Count-1;
for e:=x1 to x2 do
begin
 Application.ProcessMessages;
 cur:=w.Strings[e];
 for r:=x1 to x2 do
 begin
  if w.Strings[r]=cur then
  begin
   memo1.Lines.Add("Всего было: "+IntToStr(x2));
   memo1.Lines.Add("x1="+IntToStr(x1));
   memo1.Lines.Add(IntToStr(r)+":"+w.Strings[r]+" deleted");
   w.Delete(r);
   x2:=x2-1;
   x1:=x1+1;
   memo1.Lines.Add("Всего осталось: "+IntToStr(x2));
   memo1.Lines.Add("x1="+IntToStr(x1));
   break;
  end;
 end;
  co:=co+1;
  w1.Add(cur);
  listbox1.Items.Assign(w1);
  memo1.Lines.Add("");
  memo1.Lines.Add(IntToStr(co));
  memo1.Lines.Add(w.Text);
  //memo1.Lines.Add("w.String["+IntToStr(e)+"]:= "+cur);
 end;


 
Digitman ©   (2005-12-12 13:30) [1]

"собачий синдром" : всё понимаю , а сказать не могу ...


 
Игорь Шевченко ©   (2005-12-12 13:30) [2]

StringList.Sorted := true
StringList.Duplicates := dupIgnore

StringList.AddStrings(w.Strings)


 
umbra ©   (2005-12-12 13:33) [3]


while w.IndexOf(cur) <> -1 do
begin
{........................................}
  w.Delete(w.IndexOf(cur));
{................................}
end;
w.add(cur);


 
Digitman ©   (2005-12-12 13:33) [4]

и при чем здесь "расширения" чего-то там ?

так и скажи : есть некий список строковых значений, где не исключены повторы, необходимо получить список уникальных строковых значений из этого исходного списка


 
Игорь Шевченко ©   (2005-12-12 13:38) [5]

Digitman ©   (12.12.05 13:30) [1]

"профессионалам отдельная просьба - быть снисходительными"


 
Tor ©   (2005-12-12 15:41) [6]

Так это у StringList есть кажись св-во которое разрешает или запрещает повторение. Или преред добавлением в результирующий список, прогони этот список на наличие такой строки.


 
Digitman ©   (2005-12-12 15:45) [7]

автор элементарного Паскаля не знает. а вы ему тут про св-ва TStringList долдоните)


> Volf_555   (12.12.05 13:20)


это что за галиматья

 
x2:=x2-1;
x1:=x1+1;


?

объяснить в состоянии ?
в соответствии со спецификацией языка Паскаль ?


 
Volf_555   (2005-12-12 18:44) [8]

Игорь Шевченкo, большое вам спасибо - это то, что мне надо было


 
Leonid Troyanovsky ©   (2005-12-12 18:57) [9]


> Volf_555   (12.12.05 18:44) [8]
> Игорь Шевченкo, большое вам спасибо - это то, что мне надо
> было


Честно говоря, ты должен еще одно "спасибо", to
Digitman ©   (12.12.05 15:45) [7]

Иначе будущее, IMHO, обречено.

--
Regards, LVT.


 
Volf_555   (2005-12-12 19:15) [10]


> Digitman ©   (12.12.05 15:45) [7]
> автор элементарного Паскаля не знает. а вы ему тут про св-
> ва TStringList долдоните)


В смысле - что я не знаю? Как изменять свойства компонента? Это всем известно. Просто не знал про существование таких свойств.


 
Leonid Troyanovsky ©   (2005-12-12 19:22) [11]


> Volf_555   (12.12.05 19:15) [10]

> > Digitman ©   (12.12.05 15:45) [7]
> > автор элементарного Паскаля не знает. а вы ему тут про

>  Просто не знал про существование таких  свойств.


Про существование свойств многие грешат (не страшно).
Важно  > Digitman ©   (12.12.05 15:45) [7]
(Hint: Object Pascal Language Guide: Object Pascal grammar &etc.)

--
Regards, LVT.


 
Игорь Шевченко ©   (2005-12-13 11:11) [12]

Digitman ©   (12.12.05 15:45) [7]
Leonid Troyanovsky ©   (12.12.05 19:22) [11]


> x2:=x2-1;
> x1:=x1+1;


А в чем криминал и несоответствие спецификации языка Паскаль в данном коде ?


 
Johnmen ©   (2005-12-13 11:20) [13]

>Игорь Шевченко ©   (13.12.05 11:11) [12]

Не понятно, чего хотел, учитывая for r:=x1 to x2 do
:)


 
Хинт ©   (2005-12-13 11:21) [14]

2Игорь Шевченко
Наверное имеется ввиду изменение значения переменных, используемых в заголовке цикла, в  его теле


 
Игорь Шевченко ©   (2005-12-13 11:37) [15]

Johnmen ©   (13.12.05 11:20) [13]

Чего хотел, понятно: выводить сообщение.

Код:
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Memo1: TMemo;
   procedure Button1Click(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
 I, J, K: Integer;
begin
 J := 0;
 K := 5;
 for I:=J to K do begin
   J := J + 1;
   K := K - 1;
   Memo1.Lines.Add (Format("Iteration %d, J=%d, K=%d", [I, J, K]));
 end;
end;

end.


Результат:

Iteration 0, J=1, K=4
Iteration 1, J=2, K=3
Iteration 2, J=3, K=2
Iteration 3, J=4, K=1
Iteration 4, J=5, K=0
Iteration 5, J=6, K=-1

В чем проблема, в упор не вижу


 
Хинт ©   (2005-12-13 11:46) [16]

2Игорь Шевченко
Не знал, что так можно делать. Просто запомнил, что в TP в таком случае выдавался Error и запустить программу было невозможно.


 
Игорь Шевченко ©   (2005-12-13 11:52) [17]

Хинт ©   (13.12.05 11:46) [16]

TP у меня под рукой, разумеется, нету, а то, что граничные условия цикла for вычисляются один раз перед выполнением цикла документировано в Object Pascal Language Guide :)

Независимо от гайки "Оптимизация".

В противном случае циклы от 1 до Length(строка) работали бы ужасающе медленно.


 
Хинт ©   (2005-12-13 11:59) [18]

Прошу прощения. Еще не проснулся =) Запрет стоит на изменение переменной "I"...


 
Leonid Troyanovsky ©   (2005-12-13 13:02) [19]


> Игорь Шевченко ©   (13.12.05 11:11) [12]
> > x2:=x2-1;
> > x1:=x1+1;

> А в чем криминал и несоответствие спецификации языка Паскаль
> в данном коде ?


Криминала нет, но, за такую "экономию" из рогатки убивать надо.
А почитать полезно, по-крайней мере, как пример изложения.

--
Regards, LVT.


 
Игорь Шевченко ©   (2005-12-13 13:05) [20]


> А почитать полезно, по-крайней мере, как пример изложения.


Ну это в любом случае полезно.



Страницы: 1 вся ветка

Текущий архив: 2006.01.01;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.043 c
4-1130343710
MaxCmd
2005-10-26 20:21
2006.01.01
Как получить текст из надписа


2-1134764701
RX
2005-12-16 23:25
2006.01.01
Дебагинг


8-1122298305
Renegat
2005-07-25 17:31
2006.01.01
Конрастность черно-белых изоб.


2-1134468598
Raphael
2005-12-13 13:09
2006.01.01
помогите с запросом SQL


5-1119899149
Radgar
2005-06-27 23:05
2006.01.01
Массив в компоненте