понедельник, 30 сентября 2013 г.

Delphi: get path to APP DATA and saving files there



Получение переменных окружения ОС:
То есть получение пути к некой папке appfolder в User Application Data


const  dirName= '%appdata%\appfolder';
var   dirNameApp: string;

Function GetEnvironmentStrings(): TStrings;
var
  ptr: PChar;
  s: string;
  Done: boolean;
  ss:TStrings;
begin
  ss := TStringList.Create();
  s:='';
  Done:=FALSE;
  ptr:=windows.GetEnvironmentStrings;
  while Done=false do
  begin
    if ptr^=#0 then
    begin
      inc(ptr);
      if ptr^=#0 then Done:=TRUE
        else ss.Add(s);
      s:=ptr^;
    end else s:=s+ptr^;
  inc(ptr);
 end;
 result := ss;
end;
dirNameApp :=  GetEnvironmentStrings().Values['APPDATA'];

или так:



function GetWin(Comand: string): string;
var
buff: array [0 .. $FF] of char;
begin
ExpandEnvironmentStrings(PChar(Comand), buff, SizeOf(buff));
Result := buff;
end;


dirNameApp:= GetWin(dirName);
пример вызова


procedure TForm1.Refreshing();
var
  SR: TSearchRec;
  FindRes: Integer;
  dirName2: string;
begin
Form1.ListBox1.Clear;
dirName2 := GetWin(dirName);
  dirName2:=dirName2+'\*'+'.txt';
  FindRes := FindFirst(dirName2, faAnyFile, SR);
  while FindRes = 0 do
  begin
    // если каталог не найден
    if ((SR.Attr and faDirectory) = faDirectory) and
      //  если расширение "." или "..":
    ((SR.Name = '.') or (SR.Name = '..')) then
    begin
      FindRes := FindNext(SR);
      Continue;
    end;
    // Form1.ListBox1.Items.Add(SR.Name);
    Form1.ListBox1.Items.Add(Copy(SR.Name, 1, length(SR.Name)-4));
    FindRes := FindNext(SR);
  end;
  FindClose(SR);
end;




Комментариев нет:

Отправить комментарий

Постоянные читатели

Популярные сообщения