![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Всем привет
вообщем вот что: Ищю я директории в какой то папке и добавляю найденные имена папок в массив строк . Первые два элемента у меня равны '.' и '..' ну я знаю что это родительский каталог .Так вот суть проблемы: я пытаюсь не записывать эти строки в мой массив вот как я это делаю Код:
procedure findDirList(Path:Pchar; var list:TStringli
var
c:char;
F : TSearchRec;
i:integer;
begin
findfirst(Path,faDirectory,F);
i:=1;
if (F.name <> '.') and ( F.name <> '..')
then
List[i]:=f.name;
repeat
if list[i]<>list[i-1] then
begin
FindNext(F);
if (F.name <> '.') and ( F.name <>'..') then
List[i+1]:=F.name;
inc(i);
end
else
break
....я уж и засекал номер символа через орд и зажав альт писал в условии но не пашет все равно Прогу пишу я на турбо паскале Последний раз редактировалось Sharky, 25.04.2009 в 17:33. |
|
#2
|
|||
|
|||
|
Пробовала так:
Код:
procedure findDirList(const Path: string; var list: TStringList);
var
F: TSearchRec;
begin
if FindFirst(Path, faAnyFile, F) <> 0 then Exit;
list.Clear;
if (F.Name <> '.') and ( F.Name <> '..') then
if (F.Attr and faDirectory) <> 0 then list.Add(F.Name);
try
while FindNext(F) = 0 do
if (F.Name <> '.') and ( F.Name <> '..') then
if (F.Attr and faDirectory) <> 0 then list.Add(F.Name);
finally
FindClose(F);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
SList: TStringList;
begin
SList := TStringList.Create;
try
findDirList(Edit1.Text, SList);
Memo1.Lines.Clear;
Memo1.Lines.AddStrings(SList);
finally
SList.Free;
end;
end;P.S. Ай, забыла, что на Pascal пишите! Ну да ладно, это не меняет сути... |
|
#3
|
|||
|
|||
|
Честно говоря, не понял зачем такие сложности.
Ну и функцию, наверное, ты не совсем правильно используешь. На дельфях это будет выглядеть так: Код:
var
I : Integer;
F : TSearchRect;
iFound : Integer;
begin
I := 0;
iFound := FindFirst(Path,faAnyFile,F);
While iFound = 0 Do
Begin
If ((F.Attr And faDirectory) <> 0) And
(F.Name <> '.') And
(F.Name <> '..') Then
Begin
Inc(I);
List[i] := F.Name;
End;
iFound := FindNext(F);
End;
FindClose(F); |
|
#4
|
||||
|
||||
|
Цитата:
type TsringList= array [1..255] of string; |
|
#5
|
||||
|
||||
|
И ваще с какой стати мой код не работает
написано же ведь Код:
if (F.name <> '.') and ( F.name <> '..') then List[i]:=f.name; Вот почему???? |
|
#6
|
|||
|
|||
|
Цитата:
Ну а я чего написал? Я понял, что это у тебя массив. |
|
#7
|
|||
|
|||
|
Цитата:
Попробуй как я написал, все-таки. Там у тебя какая-то муть в 3 захода... |