Главная страница
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.014 c
1-37722
Agent[007]
2004-01-01 17:48
2004.01.13
MessageBox


9-37488
Zloy Alien
2003-05-02 08:17
2004.01.13
ГЕНЕРАТОР ИМЕН В ИГРАХ.


1-37685
TATIANA
2003-12-26 11:27
2004.01.13
Maskedit - Edit c маской


1-37769
АМБ
2003-12-29 16:22
2004.01.13
TSimpleDataSet


3-37511
пустойчайник
2003-12-16 12:25
2004.01.13
Странное поведение программы (DBGrid)