• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Уменьшение длины имени

  • Автор темы A
  • Дата начала
A

A

Мне в программе нужно укоротить путь до папки (использую TShellTreeView).

Код:
function ShortFileName(const FileName: string): string;
var aTmp: array[0..255] of Char;
begin
if not DirectoryExists(FileName) //FileExists(FileName)
then Result:=''
else if GetShortPathName(PChar(FileName), aTmp, Sizeof(aTmp)-1) = 0
then Result:= FileName
else Result:= StrPas (aTmp);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Edit2.Text:=(ShortFileName(Edit1.Text));
end;

Как я понял, чтобы эта функция работала, обязательно должен существовать файл, к которому указывается путь (иначе выдается пустое значение). А можно как-нидуть без файла обойтись? Например, чтобы она укорачивала такой путь:
C:\Documents and Settings\Андрей\Мои документы\DelphiWorld6\base\
 
S

Shakmaev

procedure TForm1.Button3Click(Sender: TObject);
var
aTmp : array [0..255] of Char;
s : string;
begin
s :='c:\Documents and Settings\10bzs\Application Data\Microsoft\Communicator';
if GetShortPathName(PChar(s), aTmp, SizeOf(aTmp)-1) <> 0 then
Caption := StrPas(aTmp);
end;

слеш в конце не нужен
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!