Читаем Советы по Delphi. Версия 1.4.3 от 1.1.2001 полностью

– Peter Below

<p>Восстанавление длинных имен файлов по известным коротким</p>

boris советует:

//---------------------------------------------------------------------

// Восстанавливает длинные имена файлов по известным коротким (8.3)

// В качестве аргумента принимает полный или неполный (в т.ч. относительный)

// путь к файлу, например 'C:\WINDOWS\РАБОЧИ~1\ИТАКДА~1.LNK' или

// '..\..\COMMON~1\BORLAN~1\BDE\BDEREA~1.TXT'. Понимает сетевые имена.

// Возвращает полный(!) путь типа 'C:\Windows\Рабочий стол\и так далее.lnk',

// 'C:\Program Files\Common Files\Borland Shared\BDE\bdereadme.txt',

// '\\Computer\resource\Folder with long name\File with long name.ext'

//---------------------------------------------------------------------

Function RestoreLongName(fn: string): string;

 function LookupLongName(const filename: string): string;

 var sr: TSearchRec;

 begin

  if FindFirst(filename, faAnyFile, sr)=0 then Result:=sr.Name

  else Result:=ExtractFileName(filename);

  SysUtils.FindClose(sr);

 end;

 function GetNextFN: string;

 var i: integer;

 begin

  Result:='';

  if Pos('\\', fn)=1 then begin

   Result:='\\';

   fn:=Copy(fn, 3, length(fn)-2);

   i:=Pos('\', fn);

   if i<>0 then begin

    Result:=Result+Copy(fn,1,i);

    fn:=Copy(fn, i+1, length(fn)-i);

   end;

  end;

  i:=Pos('\', fn);

  if i<>0 then begin

   Result:=Result+Copy(fn,1,i-1);

   fn:=Copy(fn, i+1, length(fn)-i);

  end else begin

   Result:=Result+fn;

   fn:='';

  end;

 end;

Var name: string;

Begin

 fn:=ExpandFileName(fn);

 Result:=GetNextFN;

 Repeat

  name:=GetNextFN;

  Result:=Result+'\'+LookupLongName(Result+'\'+name);

 Until length(fn)=0;

End;

<p>Как указать системе на необходимость сбросить буфера *.INI-файла на диск?</p>

Nomadic советует:

procedure FlushIni(FileName: string);

var

{$IFDEF WIN32}

 CFileName: array[0..MAX_PATH] of WideChar;

{$ELSE}

 CFileName: array[0..127] of Char;

{$ENDIF}

begin

{$IFDEF WIN32}

 if (Win32Platform = VER_PLATFORM_WIN32_NT) then begin

  WritePrivateProfileStringW(nil, nil, nil, StringToWideChar(FileName, CFileName, MAX_PATH));

 end else begin

  WritePrivateProfileString(nil, nil, nil, PChar(FileName));

 end;

{$ELSE}

 WritePrivateProfileString(nil, nil, nil, StrPLCopy(CFileName, FileName, SizeOf(CFileName) – 1));

{$ENDIF}

end;

<p>Копирование файлов III</p>

Nomadic советует:

Можно так:

procedure CopyFile(const FileName, DestName: TFileName);

var

 CopyBuffer: Pointer; { buffer for copying }

 TimeStamp, BytesCopied: Longint;

 Source, Dest: Integer; { handles }

 Destination: TFileName; { holder for expanded destination name }

const

 ChunkSize: Longint = 8192; { copy in 8K chunks }

begin

 Destination := ExpandFileName(DestName); { expand the destination path }

 if HasAttr(Destination, faDirectory) then { if destination is a directory... }

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT