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

Вниз

IncludeTrailingBackslash   Найти похожие ветки 

 
RomanH ©   (2006-09-22 12:11) [0]

Мастера подскажите почему функция
IncludeTrailingBackslash работает в WinXP SP1, а в WinXP SP2 не работает,
может существует универсальная функция подобная IncludeTrailingBackslash.Подскажите пожайлусто


 
Zeqfreed ©   (2006-09-22 12:16) [1]

Что значит не работает? Эта ф-ция работает со строкой, а ошибка скорее всего в использовании этой строки.


 
Dmitrij_K   (2006-09-22 12:21) [2]

Функция работает.
Ошибка в другом месте


 
han_malign ©   (2006-09-22 12:25) [3]

PathDelim  = {$IFDEF MSWINDOWS} "\"; {$ELSE} "/"; {$ENDIF}
- по моему, где то в Win, я видел настройки которые позволяют перенастроить пути на *NIX-стиль... Но где, и не дежавю ли это - я не знаю(не помню)...


 
RomanH ©   (2006-09-22 12:26) [4]

{ **** UBPFD *********** by kladovka.net.ru ****
>> Получение списка вложенных каталогов

Процедура служит ля получения списка каталогов вложенных в указанный каталог.
Полезно ее использовать для построения дерева каталогов.
Полученные в OutPaper данные можно передать процедуре Радионова Алексейя которая по ним построит дерево.

Зависимости: sysutils, classes, StdCtrls, UDBF.FillTreeViewWithFiles
Автор:       Samsonov Aleksandr, s002156@mail.ru, Tver
Copyright:   s002156Shurik
Дата:        19 сентября 2002 г.
********************************************** }

procedure GetTreeDirs(Root:String;OutPaper:TStringList);
var
 i:Integer;
 s:String;

 procedure InsDirs(s:String;ind:Integer;Path:String;OPaper:TStringList);
 var {Вставляет в Memo список вложенных директорий}
   sr:TSearchRec;
   attr:Integer;
 begin
   attr:=0;
   attr:=faAnyFile;
   if DirectoryExists(Path)then
   if FindFirst(IncludeTrailingBackslash(Path)+"*.*",attr,SR) = 0 then
   begin
     repeat
       if(sr.Attr=faDirectory)and(sr.Name[Length(sr.Name)]<>".")then
         OPaper.Insert(ind,s+sr.Name);
     until (FindNext(sr)<>0);
     FindClose(SR);
   end
 end;

begin
 {Проверяем существуетли начальный каталог}
 if not DirectoryExists(Root) then exit;
 {Создаем список каталогов первой вложенности}
 if root[Length(Root)]<>"\" then
    InsDirs(root+"\",OutPaper.Count,Root,OutPaper)
   else
    InsDirs(root,OutPaper.Count,Root,OutPaper);
 i:=0;
 repeat
   s:=OutPaper[i]; //в s получаем путь к уже внесенному в список кат.
   // Вставляем сразу за данной директорией в списке,
   // список вложенных в нее директорий.
   // Тем самым увеличиваем OutPaper.Lines.Count.
   // Таким образом катологи в которых поиск еще не производился,
   // оказываются ниже и очереь до них еще дойдет.
   InsDirs(s+"\",i+1,OutPaper[i],OutPaper);
   inc(i);
 until (i=OutPaper.Count);
end;


Выполняю
procedure TForm1.Button1Click(Sender: TObject);
var
 Strs : TStringList;
begin
 Strs := TStringList.Create;
 try
   GetTreeDirs("C:\",Strs);  finally
   Strs.Free;
 end;
end;
Ошибка выделена  и пишет: List index out of  bounds[0]/


 
Fay ©   (2006-09-22 12:27) [5]

2 han_malign ©   (22.09.06 12:25) [3]
Оба слеша допустимы.


 
umbra ©   (2006-09-22 12:45) [6]

Относительно сабжа - есть IncludeTrailingPathDelimiter, но судя по ошибке, дело не в нем. Просто в начальном каталоге не было вложенных папок, стринглист оказался пустым и на строке

>  s:=OutPaper[i];

получается именно эта ошибка.


 
Dmitrij_K   (2006-09-22 12:46) [7]

В StringList счет начинается с нуля.
О чем тебе и говорит Delphi - выход за предел массива List index out of  bounds и указывает на строку в которой произошло исключение.


 
ЮЮ ©   (2006-09-22 12:50) [8]


> Просто в начальном каталоге не было вложенных папок

это на С:\ ??? :)

>Ошибка выделена  и пишет: List index out of  bounds[0]/

Поставь breakPoint и войди отладчиком во внутрь.
Когда-то надо начать отлаживать код, а не только писать


 
umbra ©   (2006-09-22 13:01) [9]


> это на С:\ ??? :)

а может у него нет права чтения С:\ ? :)


 
umbra ©   (2006-09-22 13:10) [10]

к тому же, во всем остальном коде есть только одно обращение к тому же элементу списка и оно идет позже, а вставка элементов не может дать такой ошибки.


 
Плохиш ©   (2006-09-22 14:03) [11]

А меня вообще умилило, аФтар сначала пытается прочитать что-то и только потом проверяет, а есть оно что-то :-)
АФтар наверное и не знает, что существуют ещё циклы кроме repeat.


 
Ketmar ©   (2006-09-22 18:12) [12]

мда. за такие "примеры кода" надо расстреливать на месте без права апелляции.



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

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

Наверх




Память: 0.49 MB
Время: 0.034 c
6-1146497136
Pazitron_Brain
2006-05-01 19:25
2006.10.08
TIDIRC


2-1158106874
Not
2006-09-13 04:21
2006.10.08
Подскажите пример исходника программы работающей с dll ?


1-1155810465
GrBob
2006-08-17 14:27
2006.10.08
Variant и Int64


15-1158519090
ProgRAMmer Dimonych
2006-09-17 22:51
2006.10.08
Расскажите, как разместить свою веб-страницу в интернете, ...


15-1158503148
Весь в делах
2006-09-17 18:25
2006.10.08
И здесь отличились