Главная страница
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.47 MB
Время: 0.012 c
1-37616
~GaMeRd~
2003-12-28 14:31
2004.01.13
работа с TStrings


14-37939
Ermek
2003-12-19 02:44
2004.01.13
расширением стандартного компонента Ole Container


1-37649
3APA3A
2003-12-26 20:59
2004.01.13
StringGrid...


3-37559
Vick
2003-12-17 10:33
2004.01.13
Нет доступа при чтении файлов -ем с другого сервера


14-37906
Undert
2003-12-20 18:54
2004.01.13
Хороший дефрагментатор ...