Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.009 c
14-1133602424
Kerk
2005-12-03 12:33
2006.01.01
Soviet dream / Russians are stupid (most of them)


14-1133873705
Бамбук
2005-12-06 15:55
2006.01.01
VC++: рантайм библиотеки


2-1134245842
Demon1313
2005-12-10 23:17
2006.01.01
Срочно плиз-как сделать чтоб при каждом запуске приложения в


8-1122721292
cava
2005-07-30 15:01
2006.01.01
mediaplayer


2-1134727375
yk
2005-12-16 13:02
2006.01.01
Как определить выходные дни





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский