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

Вниз

Путь в файлу   Найти похожие ветки 

 
Dmitrij_K   (2006-03-22 10:59) [0]

Как получить полный путь к файлу из такого вида
..\pas\kan_st.pas


 
DelphiN! ©   (2006-03-22 11:32) [1]

Относительно твоей программы?
ExtractFilePath(ExtractFilePath(ParamStr(0))+"pas\kan_st.pas)?


 
Dmitrij_K   (2006-03-22 11:35) [2]

Например
текущая директория c:\projects\lalala\
надо ..\pas\kan_st.pas преобразовать в c:\projects\pas\kan_st.pas


 
Dmitrij_K   (2006-03-22 11:40) [3]

Что-то в этом духе

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;


 
DelphiN! ©   (2006-03-22 11:43) [4]


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:49) [5]


> 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:53) [6]

или лучше так

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;


Работает, когда переходов на предыдущий каталог несколько


 
Anatoly Podgoretsky ©   (2006-03-22 11:59) [7]

ExpandFilename


 
Dmitrij_K   (2006-03-22 12:08) [8]


> Anatoly Podgoretsky ©   (22.03.06 11:59) [7]
>
> ExpandFilename
>


Спасибо!



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

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

Наверх




Память: 0.48 MB
Время: 0.035 c
2-1143042991
mrAndersen
2006-03-22 18:56
2006.04.09
CopyFile


6-1135668708
vista
2005-12-27 10:31
2006.04.09
извлечь текст из html страницы.без html-тегов


4-1138097369
Игорь М.
2006-01-24 13:09
2006.04.09
Окно top most


11-1123867743
Riton
2005-08-12 21:29
2006.04.09
KOL + freelibrary


2-1143199941
Pazitron_Brain
2006-03-24 14:32
2006.04.09
Подсветка слов в RichEdt