![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Точки
Anton777 © (2004-08-12 10:58:00)Помогите профессионалы! Я получаю своей функциейсписок папок и вложенных в них папок и каждый раз в отчёте получаю вместе со спиком вот такую вещь C:\anton\.
C:\anton\..
C:\anton\temp\
C:\anton\temp\.
C:\anton\temp\..
Что это за точки и как с ними бороться и их искусственно убираю с помощью Trim но это не выход помогите Заранее спасибо!
Anton777 (2004-08-12 11:45:00) [1]ВСЕМ СПАСИБО РАЗОБРАЛСЯ !!!!!!!!!!
Anatoly Podgoretsky (2004-08-12 11:42:00) [2]Очень странная строка по уничтожению имен файлов. Еще раз смотри [14]
Sun bittern (2004-08-12 11:42:00) [3]Anton777 © (12.08.04 11:34) [12]
Поищите ответ в FAQ (рекурсивный поиск файлов), а там и под каталоги переделаете
Anton777 (2004-08-12 11:39:00) [4]Так я убираю только то что с точками вот посмотри на эту строку
while (s[Length(s)]='.') do s:=Trim(Copy(s,1,Length(s)-1));
if not ((s[Length(s)]='/')or(s[Length(s)]='\')) then s:=s+'\';
Anatoly Podgoretsky (2004-08-12 11:37:00) [5]Anton777 © (12.08.04 11:34) [12]
Пробелы в конце и начали убирать неверно, особенно если эти имена в дальнейшем предполагается использовать, это будут уже другие имена, несуществующие.
Anatoly Podgoretsky (2004-08-12 11:36:00) [6]Anton777 © (12.08.04 10:58)
Что это за точки и как с ними бороться и их искусственно убираю с помощью Trim
Не мучайся, а посмотри в FAQ примеры сканирования папок и файлов.
Anton777 (2004-08-12 11:35:00) [7]Returns a substring of a string or a segment of a dynamic array.
Unit
System
Category
string handling routines
function Copy(S; Index, Count: Integer): string;
function Copy(S; Index, Count: Integer): array;
Description
S is an expression of a string or dynamic-array type. Index and Count are integer-type expressions. Copy returns a substring or sub array containing Count characters or elements starting at S[Index].
If Index is larger than the length of S, Copy returns an empty string or array.
If Count specifies more characters or array elements than are available, only the characters or elements from S[Index] to the end of S are returned.
Note: When S is a dynamic array, Copy can only be used as a parameter in a call to a procedure or function that expects an array parameter. That is, it acts like the Slice function when working with dynamic arrays.
Anton777 (2004-08-12 11:34:00) [8]Именно trim убирает пробелы до между и перед точками а COPY удаляет эти точки!
VMcL (2004-08-12 11:33:00) [9]>>Anton777 © (12.08.04 11:31) [9]
Функция SysUtils.Trim не удаляет точки.
Ega23 (2004-08-12 11:32:00) [10]2 Anton777 © (12.08.04 11:31) [9]
Речь-то идёт о ПРОБЕЛАХ! А не о точках.
Anton777 (2004-08-12 11:31:00) [11]rims leading and trailing spaces and control characters from a string.
Unit
Sysutils
Category
string handling routines
function Trim(const S: string): string;
Description
Trim removes leading and trailing spaces and control characters from the given string S.
Anatoly Podgoretsky (2004-08-12 11:28:00) [12]Да нет смысла, и без комментариев видно искажение имен папок.
А вот код функции TRIM которая якобы удаляет точки так и не приведен.
_student (2004-08-12 11:23:00) [13]Комментарий бы почитать
Плохиш (2004-08-12 11:20:00) [14]
> Anton777 © (12.08.04 11:16) [5]
Что _student (12.08.04 11:04) [3]ну совсем не помогло?
Anton777 (2004-08-12 11:16:00) [15]procedure GetLstFolder(const WorkDir:String;//äëÿ ðàáî÷åãî êàòàëîãà=================================
var IncludeDir:TstringList);//âîçâðàùàåò ñïèñîê âëîæåííûõ ïàïîê
var ii:integer;
bufLST:TStringList;
FileRec:TSchFileR;
FileAttrs: Integer;
s:string;
begin
bufLST:=TStringList.Create;//ñîçäàåì ñïèñîê ôàéëîâ âõîäíîãî êàòàëîãà
try
FileAttrs:=0;//çàäàòü àòðèáóòû ôàéëà äëÿ ïîèñêà íóæíûõ ôàéëîâ
FileAttrs := FileAttrs + faDirectory;//èñêàòü òîëüêî êàòàëîãè
FileRec.FileAtt:=FileAttrs;
FileRec.WorkDir:=WorkDir;
GetSimpleLstFile(FileRec,bufLST);//ïîëó÷èëè ñïèñîê ôàéëîâ ðàáî÷åãî êàòàëîãà
// bufLST.SaveToFile('bufLST.111');
for ii:=0 to bufLST.Count-1 do//ïåðåáèðàåì âñå ïàïêè ðàáî÷åãî(âõîäíîãî) êàòàëîãà
begin//äëÿ êàæäîé ïàïêè ðàáî÷åãî êàòàëîãà èùåì âëîæåííûå ïàïêè
s:=Trim(bufLST.Strings[ii]);
while (s[Length(s)]='.') do s:=Trim(Copy(s,1,Length(s)-1));
if not ((s[Length(s)]='/')or(s[Length(s)]='\')) then s:=s+'\';
if sWorkDir
then begin
IncludeDir.Add(s);//äîáàâèòü â ãëîáàëüíûé ñïèñîê î÷åðåäíîé íàéäåííûé êàòàëîã
GetLstFolder(s,IncludeDir);//èñêàòü âíóòðè íàéäåííîãî êàòàëîãà(âûçâàòü ñàì ñåáÿ)
end;
end;
finally bufLST.Free; end;
Anatoly Podgoretsky (2004-08-12 11:05:00) [16]И код функции Trim также в студию
_student (2004-08-12 11:04:00) [17].. - наддиректория
. - сама
if (sr.Name <> '.') and (sr.Name <> '..')
Skyle (2004-08-12 11:03:00) [18]
> Anton777 © (12.08.04 10:58)
Точки - это правильно, а вот то, что ты не можешь их проигнорировать - уже вопрос. Для этого нужен код, как сказано в
> [1] Ega23 © (12.08.04 11:01)
Ega23 (2004-08-12 11:01:00) [19]Свою функцию - в студию!