Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.13;
Скачать: CL | DM;

Вниз

ParamStr   Найти похожие ветки 

 
vvvaaa   (2003-12-30 19:42) [0]

Подскажите пожалста как сделать чтобы функция ParamStr выдовала полный путь к файлу? В хелпе написано "Use double quotes to wrap multiple words as one parameter (such as long file names containing spaces)" но как это реализовать я не понял.


 
jack128 ©   (2003-12-30 20:04) [1]

имеется в виду, что например при запуске файла my.exe вот так
my.exe multiple word param считается что в программу передали 3 параметра (1- multiple, 2 - word, 3 - param). А вот если так my.exe "multiple word param", то 1 параметр (multiple word param)


 
vvvaaa   (2003-12-30 20:20) [2]

Не я имеею ввиду другое. При вызове ParamStr(1) она выдаёт
C:\PROGRA~1\BORLAND\DELPHI6\PROJECTS\ABCDEF~1.VVV
а должна выдавать
C:\PROGRAM FILES\BORLAND\DELPHI6\PROJECTS\ABCDEFGHJKL.VVV


 
хз ©   (2003-12-30 20:52) [3]

Просто имя в формате MS-DOS.

Для преобразования используй это:


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;


 
vvvaaa   (2003-12-30 22:38) [4]

Спасибо работает. Хотя я так и не понял почему возвращается DOSовское имя, если ParamStr(0) возвращает нормальное(полное) имя и запрос идёт через Windows?


 
jack128 ©   (2003-12-30 23:07) [5]


> Спасибо работает. Хотя я так и не понял почему возвращается
> DOSовское имя, если ParamStr(0) возвращает нормальное(полное)
> имя и запрос идёт через Windows?

Если глянишь в исходник ParamStr, то увидешь, что ParamStr(0) обрабатывается совершенно особым образом..



Страницы: 1 вся ветка

Текущий архив: 2004.01.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
11-37601
Separator
2003-04-11 10:42
2004.01.13
KOL и MySQL


3-37574
Amigo Sv
2003-12-15 08:15
2004.01.13
Как создать запрос из поля


1-37605
NneRreaLl
2003-12-29 01:07
2004.01.13
Передать результат


14-37862
lena19
2003-12-17 23:23
2004.01.13
удаление системных файлов в Windows XP


3-37557
md
2003-12-15 14:41
2004.01.13
что за ошибка?