Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

текущая директория


Wall ©   (2007-02-20 10:45:00) 

Здравствуйте. Обьясните пожалуйста, может ли текущая директория поменяться самопроизвольно во время работы, можно ли спокойно работать,
используя относительные пути к файлам и не проверять GetCurrentDir.
И вообще где она записана физически? В самом приложении или где-то
еще?


iXT   (2007-02-20 22:14:00) [1]


> Плохиш ©   (20.02.07 22:05) [16]

Смотря что делает super.exe :) Может там SetCurrentDir.


Плохиш   (2007-02-20 22:05:00) [2]


> А вот насчет ярлыка - эт точно.

Какой-такой ярлык-марлык? c:\tmp> d:\bbb\super.exeЧто вернёт GetCurrentDir и какое отношение это будет иметь к "дир проги"?


Плохиш   (2007-02-20 22:01:00) [3]


> Elen ©   (20.02.07 10:50) [1]
> GetCurrentDir показывает дир проги.

С чего бы это?


Loginov Dmitry   (2007-02-20 18:17:00) [4]

> удобно писать пути относительно exe.


Ну так и пиши

MyApplicationDir + MyRelativePath


Reindeer Moss Eater   (2007-02-20 15:46:00) [5]

Текущая директория поменяться самопроизвольно не может.


Wall   (2007-02-20 14:19:00) [6]

> Вон, с любым диалогом CurrDir меняется.
sorry, я не использую vcl вообще.
данные могут читаться как из файлов, так
и из архива - удобно писать пути относительно exe. кроме того
"читатели" ничего не знают о том, откуда в данный момент берутся файлы.
стоит переделать?


Ega23   (2007-02-20 11:56:00) [7]


> Никогда не сталкиваюсь с такой проблемой т.к. пользуюсь
> Application.exename


Application не всегда есть. Именно поэтому и написал в [3] ParamStr(0)


Reindeer Moss Eater   (2007-02-20 11:54:00) [8]

Текущая директория поменяться самопроизвольно не может.


Elen   (2007-02-20 11:53:00) [9]


> Вон, с любым диалогом CurrDir меняется.

Никогда не сталкиваюсь с такой проблемой т.к. пользуюсь Application.exename


Ega23   (2007-02-20 11:49:00) [10]


> Дык я думала что автор имеет ввиду стороннюю прогу. А вот
> насчет ярлыка - эт точно.


Тут не только ярлык. Вон, с любым диалогом CurrDir меняется.


Elen   (2007-02-20 11:33:00) [11]


> Ega23 ©   (20.02.07 11:01) [6]

Дык я думала что автор имеет ввиду стороннюю прогу. А вот насчет ярлыка - эт точно.


Ega23   (2007-02-20 11:01:00) [12]


> Врядли. GetCurrentDir показывает дир проги.
>


А как тебе такое:


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtDlgs, ExtCtrls;

type
 TForm1 = class(TForm)
   Image1: TImage;
   OpenPictureDialog1: TOpenPictureDialog;
   Button1: TButton;
   Button2: TButton;
   Label1: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 if not OpenPictureDialog1.Execute then Exit;
 Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Label1.Caption := GetCurrentDir;
end;

end.


:)


ЮЮ   (2007-02-20 11:00:00) [13]


> Врядли. GetCurrentDir показывает дир проги.

И что такое 'дир проги.'?
Если запустить с помощью ярлыка, то указывает путь, указанный в "Рабочая папка"


Wall   (2007-02-20 11:00:00) [14]

ok, спасибо


Ega23   (2007-02-20 10:57:00) [15]


> Обьясните пожалуйста, может ли текущая директория поменяться
> самопроизвольно во время работы


Да.


> можно ли спокойно работать,
> используя относительные пути к файлам и не проверять GetCurrentDir.
>
> И вообще где она записана физически? В самом приложении
> или где-то
> еще?


Объяви глобальную переменную MyApplicationDir : string;, в самом начале проинициализируй её как
MyApplicationDir := ExtractFilePath(ParamStr(0));
и используй дальше её.


Wall   (2007-02-20 10:55:00) [16]

> GetCurrentDir показывает дир проги.
либо показывает значение, установленное SetCurrentDir


Elen   (2007-02-20 10:50:00) [17]


>  может ли текущая директория поменяться самопроизвольно
> во время работы

Врядли. GetCurrentDir показывает дир проги.


Наверх

Титульная страница Поиск, карта сайта Написать письмо