![]() |
|
|
Регистрация | << Правила форума >> | 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
|
|||
|
|||
![]() Цитата:
Попробуй как я написал, все-таки. Там у тебя какая-то муть в 3 захода... |
#7
|
|||
|
|||
![]() Цитата:
Ну а я чего написал? Я понял, что это у тебя массив. |