Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  135

•  TDictionary Custom Sort  3 315

•  Fast Watermark Sources  3 065

•  3D Designer  4 824

•  Sik Screen Capture  3 320

•  Patch Maker  3 535

•  Айболит (remote control)  3 637

•  ListBox Drag & Drop  2 996

•  Доска для игры Реверси  81 555

•  Графические эффекты  3 927

•  Рисование по маске  3 231

•  Перетаскивание изображений  2 613

•  Canvas Drawing  2 735

•  Рисование Луны  2 561

•  Поворот изображения  2 166

•  Рисование стержней  2 161

•  Paint on Shape  1 564

•  Генератор кроссвордов  2 226

•  Головоломка Paletto  1 764

•  Теорема Монжа об окружностях  2 214

•  Пазл Numbrix  1 682

•  Заборы и коммивояжеры  2 052

•  Игра HIP  1 279

•  Игра Go (Го)  1 224

•  Симулятор лифта  1 471

•  Программа укладки плитки  1 214

•  Генератор лабиринта  1 542

•  Проверка числового ввода  1 352

•  HEX View  1 490

•  Физический маятник  1 355

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Управление каталогами и файлами




unit win95;
{

Копирование, перемещение и удаление файлов и каталогов наподобие
Проводника (Explorer) в Windows 95.
Дата  : 06/04/97
Последнее обновление: 03/08/97

Просьба сообщать о всех найденных ошибках и недочетах на мой
адрес электронной почты.
Приветствуются пожелания и предложения по улучшению функциональности!!!

ОБНОВЛЕНИЯ:
(18/04/97)
Множество небольших поправок после множества ваших писем.
Спасибо всем.

(31/08/97)
Две новых процедуры: Win95AddToRecent и
Win95ClearRecentDocs.
}
interface
uses Classes, ShellApi, ShlObj, Registry, Windows;
type

  Str10 = string[10];

const

  fpRootKey =
    '\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders';
  fpDesktop: Str10 = 'DESKTOP';
  fpFavorites: Str10 = 'FAVORITES';
  fpFonts: Str10 = 'FONTS';
  fpPersonal: Str10 = 'PERSONAL';
  fpPrograms: Str10 = 'PROGRAMS';
  fpRecent: Str10 = 'RECENT';
  fpSendTo: Str10 = 'SENDTO';
  fpStartMenu: Str10 = 'START MENU';
  fpStartup: Str10 = 'STARTUP';
  fpTemplates: Str10 = 'TEMPLATES';

  {Пути к системным папкам}
function GetFolderPath(const FolderName: Str10): string;

{Функции для работы с файлами}
procedure Win95AddToRecentDocs(const Filename: string);
procedure Win95ClearRecentDocs;
{Для манипулирования несколькими файлами разделите их имена символом "#0"}
function Win95Copy(Owner: Integer; FromFile, ToFile: string; RenameOnCollision,
  Confirm: boolean): Boolean;
function Win95Move(Owner: Integer; FromFile, ToFile: string; RenameOnCollision,
  Confirm: boolean): Boolean;
{Если SendToRecycleBin = True, то файлы будут отправлены в Корзину (RecycleBin),

в противном случае они будут стерты}
function Win95Erase(Owner: Integer; WichFiles: string; SendToRecycleBin,
  Confirm: Boolean): Boolean;

implementation

function GetFolderPath(const FolderName: Str10): string;
begin

  with TRegistry.Create do
  try
    RootKey := HKEY_CURRENT_USER;
    OpenKey(fpRootKey, False);
    Result := ReadString(FolderName);
  finally
    Free;
  end;
end;

procedure Win95AddToRecentDocs(const Filename: string);
begin

  SHAddToRecentDocs(SHARD_PATH, @Filename[1]);
end;

procedure Win95ClearRecentDocs;
begin

  SHAddToRecentDocs(SHARD_PATH, nil);
end;

function Win95Copy(Owner: Integer; FromFile, ToFile: string; RenameOnCollision,
  Confirm: boolean): Boolean;
const

  Aborted: Boolean = False;
var

  Struct: TSHFileOpStructA;
begin

  while pos(';', FromFile) > 0 do
    FromFile[pos(';', FromFile)] := #0;
  while pos(';', ToFile) > 0 do
    ToFile[pos(';', ToFile)] := #0;
  FromFile := FromFile + #0#0;
  ToFile := ToFile + #0#0;
  with Struct do
  begin
    wnd := Owner;
    wFunc := FO_Copy;
    pFrom := PChar(FromFile);
    pTo := PChar(ToFile);
    fFlags := FOF_ALLOWUNDO or FOF_FILESONLY;
    if RenameOnCollision then
      fFLags := fFlags or FOF_RENAMEONCOLLISION;
    if not Confirm then
      fFLags := fFlags or FOF_NOCONFIRMATION;
    fAnyOperationsAborted := Aborted;
    hNameMappings := nil;
    lpszProgressTitle := nil;
  end;
  result := (SHFileOperationA(Struct) = 0) and (not Aborted);
end;

function Win95Move(Owner: Integer; FromFile, ToFile: string; RenameOnCollision,
  Confirm: boolean): Boolean;
const

  Aborted: Boolean = False;
var

  Struct: TSHFileOpStructA;
begin

  while pos(';', FromFile) > 0 do
    FromFile[pos(';', FromFile)] := #0;
  while pos(';', ToFile) > 0 do
    ToFile[pos(';', ToFile)] := #0;

  FromFile := FromFile + #0#0;
  ToFile := ToFile + #0#0;
  with Struct do
  begin
    wnd := Owner;
    wFunc := FO_Move;
    pFrom := PChar(FromFile);
    pTo := PChar(ToFile);
    fFlags := FOF_ALLOWUNDO or FOF_FILESONLY;
    if RenameOnCollision then
      fFLags := fFlags or FOF_RENAMEONCOLLISION;
    if Confirm then
      fFLags := fFlags or FOF_NOCONFIRMATION;
    fAnyOperationsAborted := Aborted;
    hNameMappings := nil;
    lpszProgressTitle := nil;
  end;
  result := (SHFileOperationA(Struct) = 0) and (not Aborted);
end;

function Win95Erase(Owner: Integer; WichFiles: string; SendToRecycleBin,
  Confirm: Boolean): Boolean;
const

  Aborted: Boolean = False;
var

  Struct: TSHFileOpStructA;
begin

  while pos(';', WichFiles) > 0 do
    WichFiles[pos(';', WichFiles)] := #0;
  WichFiles := WichFiles + #0#0;
  with Struct do
  begin
    wnd := Owner;
    wFunc := FO_Delete;
    pFrom := PChar(WichFiles);
    pTo := nil;
    if not Confirm then
      fFlags := FOF_NOCONFIRMATION;
    if SendToRecycleBin then
      fFLags := fFlags or FOF_ALLOWUNDO or FOF_FILESONLY
    else
      fFlags := fFlags or 0 or FOF_FILESONLY;
    fAnyOperationsAborted := Aborted;
    hNameMappings := nil;
    lpszProgressTitle := nil;
  end;
  result := (SHFileOperationA(Struct) = 0) and (not Aborted);
end;

end.








Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте