Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » короткое имя -->Длинное имя

Ответить
Настройки темы
короткое имя -->Длинное имя

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Как из короткого имени(например,
e:\install\wertep~1) длинное?

Отправлено: 09:50, 30-12-2003

 

редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Выбрать все файлы удовлетворяющие маске wertep*, первый из них и будет искомым. Соответственно для ~2 - второй итд. Криво, но работает.

-------
http://ivank.ru


Отправлено: 10:07, 30-12-2003 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


а что стандартных способов нету?

Отправлено: 10:30, 30-12-2003 | #3


Пользователь


Сообщения: 53
Благодарности: 0

Профиль | Отправить PM | Цитировать


GetFullPathName
По короткому имени файла в формате MS-DOS и Windows 16 возвращает его полное имя в формате Windows 32.

Отправлено: 00:58, 31-12-2003 | #4


Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


че то нигде не нашел как юзать эту функцию.

Я пишу в таком синтаксисе

getfullpathname(short,255,long,'')

short,long: array[0..255] of char;

что не так?

Добавлено:

в догонку:

я нашел правильный синтаксис: последний аргумент типа PChar должен быть.

однако в переменную long пишется тотже путь что и в short. Может еще чего надо.

Отправлено: 09:59, 31-12-2003 | #5


Аватара для CyberDaemon

DOOMer


Сообщения: 3254
Благодарности: 438

Профиль | Отправить PM | Цитировать


ThE ACE Ты делфи без хелпа чтоли ставил? Описалово находится на раз, по CTRL-F1
[pre]
The GetFullPathName function retrieves the full path and filename of a specified file.

DWORD GetFullPathName(

* *LPCTSTR lpFileName, // address of name of file to find path for
* *DWORD nBufferLength, // size, in characters, of path buffer
* *LPTSTR lpBuffer, // address of path buffer
* *LPTSTR *lpFilePart // address of filename in path
* );


Parameters

lpFileName

Points to a null-terminated string that specifies a valid filename. This string can use either short (the 8.3 form) or long filenames.

nBufferLength

Specifies the size, in characters, of the buffer for the drive and path.

lpBuffer

Points to a buffer that contains the null-terminated string for the name of the drive and path.

lpFilePart

Points to a variable that receives the address (in lpBuffer) of the final filename component in the path. This filename component is the long filename, if any, rather than the 8.3 form of the filename.



Return Values

If the GetFullPathName function succeeds, the return value is the length, in characters, of the string copied to lpBuffer, not including the terminating null character.
If the lpBuffer buffer is too small, the return value is the size of the buffer, in characters, required to hold the path.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

The GetFullPathName function merges the name of the current drive and directory with the specified filename to determine the full path and filename of the specified file. It also calculates the address of the filename portion of the full path and filename. This function does not verify that the resulting path and filename are valid or that they refer to an existing file on the associated volume.

See Also

GetShortPathName, GetTempPath, SearchPath[/pre]

-------
"640 K ought to be enough for anybody" Bill Gates, 1981


Отправлено: 13:19, 31-12-2003 | #6


Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Это все я нашел, даже написал выше. Вроде все так. Но в long все равно остается короткое имя.

Отправлено: 14:01, 31-12-2003 | #7


Пользователь


Сообщения: 53
Благодарности: 0

Профиль | Отправить PM | Цитировать


Следующие три функции помогут преобразовать длинные имена файлов в коротки и наоборот. Функция Mince служит для отображения полного имени файла, включая путь.




Function Mince(PathToMince: String; InSpace: Integer): String;


Var
 sl: TStringList;
 sHelp, sFile: String;
 iPos: Integer;

Begin
 sHelp := PathToMince;
 iPos := Pos('\', sHelp);
 If iPos = 0 Then
 Begin
   Result := PathToMince;
 End
 Else
 Begin
   sl := TStringList.Create;
   // Decode string
   While iPos <> 0 Do
   Begin
     sl.Add(Copy(sHelp, 1, (iPos - 1)));
     sHelp := Copy(sHelp, (iPos + 1), Length(sHelp));
     iPos := Pos('\', sHelp);
   End;
   If sHelp <> '' Then
   Begin
     sl.Add(sHelp);
   End;
   // Encode string
   sFile := sl[sl.Count - 1];
   sl.Delete(sl.Count - 1);
   Result := '';
   While (Length(Result + sFile) < InSpace) And (sl.Count <> 0) Do
   Begin
     Result := Result + sl[0] + '\';
     sl.Delete(0);
   End;
   If sl.Count = 0 Then
   Begin
     Result := Result + sFile;
   End
   Else
   Begin
     Result := Result + '..\' + sFile;
   End;
   sl.Free;
 End;
End;

{===================================================}
Function ShortFileName(Const FileName: String): String;
{===================================================}
Var
 aTmp: Array[0..255] Of Char;

Begin
 If Not FileExists(FileName) Then
 Begin
   Result := '';
 End
 Else
 Begin
   If GetShortPathName(PChar (FileName), aTmp, Sizeof (aTmp) - 1) = 0 Then
   Begin
     Result:= FileName;
   End
   Else
   Begin
     Result:= StrPas (aTmp);
   End;
 End;
End;

{==============================================}
Function LongFileName(ShortName: String): String;
{==============================================}
Var
 SR: TSearchRec;

Begin
 Result := '';
 If (pos ('\\', ShortName) + pos ('*', ShortName) +
     pos ('?', ShortName) <> 0) Or Not FileExists(ShortName) Then
 Begin
   { ignore NetBIOS name, joker chars and invalid file names }
   Exit;
 End;
 While FindFirst(ShortName, faAnyFile, SR) = 0 Do
 Begin
   { next part as prefix }
   Result := '\' + SR.Name + Result;
   SysUtils.FindClose(SR);  { the SysUtils, not the WinProcs procedure! }
   { directory up (cut before '\') }
   ShortName := ExtractFileDir (ShortName);
   If length (ShortName) <= 2 Then
   Begin
     Break;  { ShortName contains drive letter followed by ':' }
   End;
 End;
 Result := ExtractFileDrive (ShortName) + Result;
end;




Добавлено:

На будущее
Основные функции и процедуры для работы с файлами

AssignFile - Устанавливает ассоциативную связь между файловой переменной и внешним файлом.
BlockRead - Читает несколько записей из файла в переменную.
BlockWrite - Записывает несколько записей в файл.
CloseFile - Разрывает ассоциативную связь между файловой переменной и файлом.
DeleteFile - Удаляет файл с диска.
DiskFree - Определяет количество свободного места на диске.
DiskSize - Определяет размер указанного диска.
Eof - Определяет, стоит ли указатель в конце файла.
Erase - Удаляет файл, связанный с файловой переменной.
DiskSize - Определяет размер указанного диска.
FileExists - Проверяет, существует ли указанный файл.
FileGetAttr - Возвращает атрибуты указанного файла.
FilePos - Возвращает текущую позицию файлового указателя.
FileSearch - Производит поиск файла в нескольких заданных каталогах.
FileSetAttr - Устанавливает атрибуты файла.
FileSize - Возвращает размер файла в байтах, а для файлов типа Record - количество записей.
FindClose - Высвобождает память, выделенную процедурой FindFirst.
FindFirst - Находит файл с заданным набором атрибутов по заданной маске в указанном каталоге.
FindNext - Производит повторный поиск файла.
IOResult - Возвращает статус ошибки последней выполненной операции ввода/вывода.
Read - Читает данные из файла.
Rename - Переименовывает файл.
RenameFile - Переименовывает файл.
Reset - Открывает существующий файл.
Rewrite - Создает новый файл и открывает его.
Seek - Устанавливает файловый указатель в заданную позицию.
Truncate - Удаляет все записи в файле, находящиеся после текущей позиции.
Write - Записывает данные в файл.





Функции и процедуры для работы с каталогами

ChDir - Устанавливает текущий каталог.
CreateDir - Создает новый каталог.
DirectoryExists - Определяет, существует ли указанный каталог.
ForceDirectories - Создает все недостающие каталоги по заданному пути.
GetCurrentDir - Возвращает полное имя текущего каталога.
GetDir - Возвращает имя текущего каталога на указанном диске.
MkDir - Создает подкаталог.
RemoveDir - Удаляет заданный каталог.
RmDir - Удаляет заданный каталог.
SetCurrentDir - Устанавливает текущий каталог.





Функции и процедуры для работы с именем файла

ChangeFileExt - Возвращает имя файла с новым заданным расширением.
ExcludeTrailingBackslash (Delphi 5 и выше) - удаляет в конце строки (пути к файлу) символ наклонной влево черты '\'.
ExpandFileName - Возвращает полное имя файла, добавляя указанное имя файла к имени текущего каталога.
ExpandUNCFileName - Возвращает полное имя файла на сетевом диске.
ExtractFileDir - звлекает из полного имени файла полное имя каталога, в котором находится файл.
ExtractFileDrive - Извлекает из полного имени файла имя диска.
ExtractFileExt - Возвращает расширение файла.
ExtractFileName - Извлекает имя файла из полного имени файла.
ExtractFilePath - Извлекает из полного имени файла имя диска и каталогов (путь к файлу).
ExtractRelativePath - Преобразовывает полный путь в относительный.
ExtractShortPathName - Конвертирует длинное имя файла в формат DOS.
IncludeTrailingBackslash (Delphi 5 и выше) - Добавляет в конец строки символ наклонной влево черты '\'.
MatchesMask - Проверяет, соответствует ли имя файла заданной маске (фильтру).
MinimizeName (Delphi 4 и выше) - Заменяет часть имени файла многоточием, для того, чтобы уместить его в заданный размер холста. ProcessPath - Извлекает из полного имени файла имя диска, имя каталога и имя файла.



Отправлено: 17:07, 31-12-2003 | #8


Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Riko, большие тебе благодарности, ты мне очень помог.

Отправлено: 10:32, 05-01-2004 | #9


Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


to RIKO
а что за переменная InSpace в процедуре MINCE

Отправлено: 13:48, 05-01-2004 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » короткое имя -->Длинное имя

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Имя администратора DarkDeivel Автоматическая установка Windows 2000/XP/2003 1 24-06-2008 13:01
Имя компьютерa? Ferum01 Microsoft Windows NT/2000/2003 9 04-10-2007 19:44
Изменение "Мой компьютер" на "Имя текущего пользователя на имя компьютера" shcval Microsoft Windows 2000/XP 1 15-12-2006 21:01
имя Chris О сайте и форуме 19 26-01-2002 14:22




 
Переход