Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.013 c
6-37814
SkyN
2003-11-14 16:27
2004.01.13
Как узнать, к какому ресурсу подключен сетевой диск


9-37486
reticon
2003-06-22 19:25
2004.01.13
DirectX help


1-37648
Cam
2003-12-31 07:53
2004.01.13
DCU


1-37617
ИМХО
2003-12-28 10:50
2004.01.13
TListView и картинки


1-37760
andruxin
2003-12-29 17:22
2004.01.13
Как разукрасить TListView.




   Наверх