![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Путь в файлу
Dmitrij_K © (2006-03-22 10:59:00)Как получить полный путь к файлу из такого вида
..\pas\kan_st.pas
Dmitrij_K (2006-03-22 12:08:00) [1]
> Anatoly Podgoretsky © (22.03.06 11:59) [7]
>
> ExpandFilename
>
Спасибо!
Anatoly Podgoretsky (2006-03-22 11:59:00) [2]ExpandFilename
DelphiN! (2006-03-22 11:53:00) [3]или лучше так
function GetRealPath(Path,CurrentDir: String): String;
var
i: Integer;
n: Integer;
begin
n := 0;
i := pos('..',Path);
CurrentDir := GetCurrentDir;
while i > 0 do
begin
CurrentDir := ExtractFilePath(CurrentDir);
Delete(Path,i,3);
Inc(n);
i := pos('..',Path);
end;
CurrentDir := GetCurrentDir;
for i := 0 to n-1 do
begin
if i > 0 then
Delete(CurrentDir,Length(CurrentDir),1);
CurrentDir := ExtractFilePath(CurrentDir);
end;
Result := CurrentDir+Path;
end;
var
s: String;
begin
ShowMessage(GetRealPath('..\..\pas\kan_st.pas',GetCurrentDir));
end;
Работает, когда переходов на предыдущий каталог несколько
Dmitrij_K (2006-03-22 11:49:00) [4]
> DelphiN! © (22.03.06 11:43) [4]
Неработает
CurentDir = C:\Documents and Settings\lalala\Рабочий стол\Новая папка (3)\
function daj_path(const aCurDir,aFileName:AnsiString):AnsiString;
var s,z : string;
begin
GetDir(0,s);
ChDir(aCurDir);
ChDir(ExtractFilePath(aFileName));
GetDir(0,z);
z := IncludeTrailingPathDelimiter(z) + ExtractFileName(aFileName);
ChDir(s);
result := z;
end;
function GetRealPath(Path,CurrentDir: String): String;
var
i: Integer;
begin
i := pos('..',Path);
while i > 0 do
begin
CurrentDir := GetCurrentDir;
CurrentDir := ExtractFilePath(CurrentDir);
Delete(Path,i,3);
Insert(CurrentDir,Path,i);
i := pos('..',Path);
end;
Result := Path;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(daj_path(ExtractFilePath(paramstr(0)),'..\..\Мои документы\111.htm'));
showmessage(GetRealPath('..\..\Мои документы\111.htm',ExtractFilePath(paramstr(0))));
end;
DelphiN! (2006-03-22 11:43:00) [5]
function GetRealPath(Path,CurrentDir: String): String;
var
i: Integer;
begin
i := pos('..',Path);
while i > 0 do
begin
CurrentDir := GetCurrentDir;
CurrentDir := ExtractFilePath(CurrentDir);
Delete(Path,i,3);
Insert(CurrentDir,Path,i);
i := pos('..',Path);
end;
Result := Path;
end;
var
s: String;
begin
ShowMessage(GetRealPath('..\pas\kan_st.pas',GetCurrentDir));
end;
Dmitrij_K (2006-03-22 11:40:00) [6]Что-то в этом духе
function daj_path(const aCurDir,aFileName:AnsiString):AnsiString;
var s : string;
begin
GetDir(0,s);
ChDir(ExtractFilePath(aFileName));
GetDir(0,result);
result := result + '\' + ExtractFileName(aFileName);
ChDir(s);
end;
Dmitrij_K (2006-03-22 11:35:00) [7]Например
текущая директория c:\projects\lalala\
надо ..\pas\kan_st.pasпреобразовать в c:\projects\pas\kan_st.pas
DelphiN! (2006-03-22 11:32:00) [8]Относительно твоей программы?
ExtractFilePath(ExtractFilePath(ParamStr(0))+'pas\kan_st.pas)?