Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2009, 21:20   #1
D_E_N
Форумчанин
 
Регистрация: 04.05.2009
Сообщений: 149
По умолчанию проверка на существование папки

привет всем. нужна проверка на существование папки. поиском ничего конкретного не нашел. нашел функцию а не пойму как пользоваться.
D_E_N вне форума Ответить с цитированием
Старый 05.10.2009, 21:22   #2
Usov
Форумчанин
 
Аватар для Usov
 
Регистрация: 29.09.2009
Сообщений: 228
По умолчанию

проверить на сущестование и если нет - создать:
Код:
    if not DirectoryExists(aDirOut) then
      ForceDirectories(aDirOut);
Usov вне форума Ответить с цитированием
Старый 05.10.2009, 21:28   #3
D_E_N
Форумчанин
 
Регистрация: 04.05.2009
Сообщений: 149
По умолчанию

спасибо щас попробую

а как определить типа рабочей среды пользователя... ну например c:\Users\admin\AppData.....

Последний раз редактировалось Stilet; 06.10.2009 в 09:50.
D_E_N вне форума Ответить с цитированием
Старый 05.10.2009, 22:48   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

поищите по SHGetSpecialFolderLocation

p.s. Вас интересует CSIDL_APPDATA

p.p.s. пример из БД знаний "DelphiWorld 6":
Код:
{ 
  Constants: 

  CSIDL_DESKTOP 
  CSIDL_INTERNET 
  CSIDL_PROGRAMS 
  CSIDL_CONTROLS 
  CSIDL_PRINTERS 
  CSIDL_PERSONAL 
  CSIDL_FAVORITES 
  CSIDL_STARTUP 
  CSIDL_RECENT 
  CSIDL_SENDTO 
  CSIDL_BITBUCKET 
  CSIDL_STARTMENU 
  CSIDL_DESKTOPDIRECTORY 
  CSIDL_DRIVES 
  CSIDL_NETWORK 
  CSIDL_NETHOOD 
  CSIDL_FONTS 
  CSIDL_TEMPLATES 
  CSIDL_COMMON_STARTMENU 
  CSIDL_COMMON_PROGRAMS 
  CSIDL_COMMON_STARTUP 
  CSIDL_COMMON_DESKTOPDIRECTORY 
  CSIDL_APPDATA 
  CSIDL_PRINTHOOD 
  CSIDL_ALTSTARTUP 
  CSIDL_COMMON_ALTSTARTUP 
  CSIDL_COMMON_FAVORITES 
  CSIDL_INTERNET_CACHE 
  CSIDL_COOKIES 
  CSIDL_HISTORY 
} 

uses 
  ActiveX, ShlObj; 

procedure TForm1.Button1Click(Sender: TObject); 
  // Replace CSIDL_HISTORY with the constants above 
var 
  Allocator: IMalloc; 
  SpecialDir: PItemIdList; 
  FBuf: array[0..MAX_PATH] of Char; 
  PerDir: string; 
begin 
  if SHGetMalloc(Allocator) = NOERROR then 
  begin 
    SHGetSpecialFolderLocation(Form1.Handle, CSIDL_HISTORY, SpecialDir); 
    SHGetPathFromIDList(SpecialDir, @FBuf[0]); 
    Allocator.Free(SpecialDir); 
    ShowMessage(string(FBuf)); 
  end; 
end; 

// With Windows Me/2000, the SHGetSpecialFolderLocation function 
// is superseded by ShGetFolderLocation. 


// function to get the desktop folder location: 

function GetDeskTopPath : string; 
var 
  shellMalloc: IMalloc; 
  ppidl: PItemIdList; 
  PerDir: string; 
begin 
  ppidl := nil; 
  try 
    if SHGetMalloc(shellMalloc) = NOERROR then 
    begin 
      SHGetSpecialFolderLocation(Form1.Handle, CSIDL_DESKTOP, ppidl); 
      SetLength(Result, MAX_PATH); 
      if not SHGetPathFromIDList(ppidl, PChar(Result)) then 
        raise exception.create('SHGetPathFromIDList failed : invalid pidl'); 
      SetLength(Result, lStrLen(PChar(Result))); 
    end; 
  finally 
   if ppidl <> nil then 
         shellMalloc.free(ppidl); 
  end; 
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
существование файла Pirate_XP Паскаль, Turbo Pascal, PascalABC.NET 3 25.11.2008 22:10
Проверка на существование БД перед запуском приложения Fantom БД в Delphi 7 08.09.2008 23:09
Существование элемента в массиве Carbon Помощь студентам 10 31.03.2008 19:03
Проверка на существование Lonix Общие вопросы Delphi 2 19.03.2007 19:42