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

Вниз

точка в имени папки   Найти похожие ветки 

 
Ruzzz ©   (2007-12-10 21:37) [0]

Я так понимаю в имени папки в Windows нельзя использовать точку в конце и в начале? Где на сайте MS это можна узнать?

Это нужно для:

 var
   hFind: Integer;
   FindFileData: WIN32_FIND_DATA;
 begin
   hFind := Windows.FindFirstFile(PChar(ParentDirectory + "*"), FindFileData);
   if hFind <> INVALID_HANDLE_VALUE then begin
     repeat
       if FindFileData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
         FilesList.Add(ParentDirectory + FindFileData.cFileName)
       else
         if FindFileData.cFileName[0] <> "." then begin // !!! ВОТ
           DirectoriesList.Add(ParentDirectory + FindFileData.cFileName + "\");
         end;
     until not Windows.FindNextFile(hFind, FindFileData);
     Windows.FindClose(hFind);
   end;

Можна ли надеятся что и в будущих версиях Windows это будет работать?


 
sniknik ©   (2007-12-10 21:55) [1]

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


 
Ruzzz ©   (2007-12-10 22:02) [2]

подскажите ссылку на сайте MS позжлста, или хоть по каким ключевым фразам искать


 
Юрий Зотов ©   (2007-12-10 22:06) [3]

> Ruzzz ©   (10.12.07 21:37)

Чтобы на было проблем, проверяйте не первый символ имени, а все имя (на равенство "."  или "..").


 
guav ©   (2007-12-10 22:11) [4]

Naming a File в MSDN:
Do not end a file or directory name with a trailing space or a period. Although the underlying file system may support such names, the operating system does not. You can start a name with a period (.).


 
Anatoly Podgoretsky ©   (2007-12-10 22:13) [5]


> Я так понимаю в имени папки в Windows нельзя использовать
> точку в конце и в начале?  

Откуда ты такое прочитал или почему так думаешь, может посмотришь папку Document and Setting\User при наличии Д2006 ты сможешь там увидеть например папку .borland и не только ее.
Или например такую
C:\Documents and Settings\app\Application Data\Microsoft\.NET Framework Config


 
Ruzzz ©   (2007-12-10 22:30) [6]

я про это нигде не читал, но хотел, поэтому и спрашивал где это в msdn найти, и на счет -точка в начале- ошибся, сам видел папки типа .borland и .Trash-ubuntu, но чота проглючило!
вообще хочу прогу оптимизировать поэтому исщу более быстрые способы.
я так понимаю "Do not end a file or directory name with a trailing space or a period. Although the underlying file system may support such names, the operating system does not" говорит о том что лучше и в конце точку не проверять, лучше действительно сравнивать с ".." и "."
Cпасибо всем!


 
Ruzzz ©   (2007-12-10 23:12) [7]

делаю так: (кстати меня удивило что хватает одного string :)
if (string(FindFileData.cFileName) <> ".") and ((FindFileData.
cFileName) <> "..") then begin ...

получаю:
lea eax,[ebp-$00000150]
lea edx,[ebp-$00000114]
mov ecx,$00000104
call @LStrFromArray
mov eax,[ebp-$00000150]
mov edx,$00451810
call @LStrCmp
jz +$71
lea eax,[ebp-$00000154]
lea edx,[ebp-$00000114]
mov ecx,$00000104
call @LStrFromArray
mov eax,[ebp-$00000154]
mov edx,$0045181c
call @LStrCmp
jz +$49


делаю так: ("."=#2e)
if not((Word(FindFileData.cFileName[0]) = $002e) or ((Word (FindFileData.cFileName[0]) = $2e2e) and (FindFileData.cFileName[2] = #0))) then begin ...

получаю:
xor eax,eax
mov al,[ebp-$00000114]
cmp ax,$2e
jz +$60
xor eax,eax
mov al,[ebp-$00000114]
cmp ax,$2e2e
jnz +$09
cmp byte ptr [ebp-$00000112],$00
jz +$49


а если так:
not((FindFileData.cFileName[0] = ".") and ((FindFileData.cFileName[1] = #0) or (Word(FindFileData.cFileName[1]) = $002e)))

получаю:
cmp byte ptr [ebp-$00000114],$2e
jnz +$15
mov al,[ebp-$00000113]
test al,al
jz +$54
and eax,$000000ff
cmp ax,$2e
jz +$49


т.е. оптимизация на лицо!


 
antonn ©   (2007-12-10 23:22) [8]

а если сделать
if(true) then
будет еще быстрее! Представляешь, какая оптимизация? %))


 
Ruzzz ©   (2007-12-10 23:43) [9]

может тогда вообще без if :) или компилятору все равно :)


 
Плохиш ©   (2007-12-11 00:03) [10]


> Ruzzz ©   (10.12.07 23:43) [9]
> или компилятору все равно

Компилятор интересует только соответствие синтаксису, а ваши извраты ему до лампочки...

> может посмотришь папку Document and Setting\User при наличии
> Д2006 ты сможешь там увидеть например папку .borland

Это началось с D7...


 
Ruzzz ©   (2007-12-11 00:19) [11]

if (true) then ЧТО-ТО и просто ЧТО-ТО думаю даст на asm одно и тоже - я про это



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

Форум: "Начинающим";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.004 c
2-1197110204
dr_creigan
2007-12-08 13:36
2008.01.06
Как скрыть приложение от Process Viewer в NT


2-1197204556
istok
2007-12-09 15:49
2008.01.06
Запись в файл на winapi


2-1197148139
Lip
2007-12-09 00:08
2008.01.06
Транспонирование матрицы не заводя новой матрицы


9-1161888652
Pa5ha
2006-10-26 22:50
2008.01.06
Физика самолета


15-1196713499
Ega23
2007-12-03 23:24
2008.01.06
Я что-то пропустил?





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