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

Вниз

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

Наверх





Память: 0.48 MB
Время: 0.041 c
1-1156495349
DelphiLexx
2006-08-25 12:42
2006.10.08
CopyRect не работает для TMetaFileCanvas


2-1158734167
stfu
2006-09-20 10:36
2006.10.08
Проблема с вставкой текста на русском в xls(Excel)


2-1158745919
id
2006-09-20 13:51
2006.10.08
Добавление строки в ListView


1-1156793871
Fatefell
2006-08-28 23:37
2006.10.08
Декомпилятор из паскаля


6-1147961976
SamProf
2006-05-18 18:19
2006.10.08
Свой обработчик на серваке IIS





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский