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

Вниз

Как узнать из какого каталога запущена моя прога?   Найти похожие ветки 

 
Micah'GF ©   (2002-09-04 09:27) [0]

Нужно узнать откуда запущена моя прога и сравнить с %systemroot%


 
MBo ©   (2002-09-04 09:33) [1]

ExtractFileDir(ParamStr[0]) или из Appliсation.ExeName


 
lenin ©   (2002-09-04 09:33) [2]

ExtractFilePath(Application.ExeName)


 
Ученик ©   (2002-09-04 09:46) [3]

Еще будет полезна GetEnvironmentVariable


 
Micah'GF ©   (2002-09-04 09:47) [4]

Млин быстро вы.... :)
Прошло всего 10-15 минут, а уже 2 ответа. Пасибо вам.
Я только что случайно наткнулся на функцию Application.ExeName.

А вот теперь надо узнать путь %SystemRoot%


 
Юрий Зотов ©   (2002-09-04 09:50) [5]

"Откуда запущена" или "стартовый каталог"?
Это не обязательно одно и то же.


 
Lord Warlock ©   (2002-09-04 09:51) [6]

API-функции
GetSystemDir
GetWinDir

в качестве параметра - например Path: array [0..Max_Path] of char


 
Micah'GF ©   (2002-09-04 09:53) [7]

Всмысле надо узнать где лежит, сравнить с %SystemRoot% и скопировать ее туда если там нету.


 
Юрий Зотов ©   (2002-09-04 09:54) [8]

См. "Ученик © (04.09.02 09:46)" или GetWindowsDirectory.


 
Lord Warlock ©   (2002-09-04 09:54) [9]

Небольшая поправка - GetWindowsDirectory и GetSystemDirectory


 
Юрий Зотов ©   (2002-09-04 09:57) [10]

Если "где лежит" - то это ParamStr(0) или Application.ExeName.
Если "стартовый каталог", то это GetCurrentDir сразу после старта программы.


 
Micah'GF ©   (2002-09-04 10:05) [11]

создал Path:array[1..MAX_PATH] of char;
пишу GetSystemDirectory(Path,MAX_PATH);
а там ругаются Incompatible types: "Array" and "PChar"


 
Виктор Щербаков ©   (2002-09-04 10:08) [12]

GetSystemDirectory(@Path[1], MAX_PATH);


 
Micah'GF ©   (2002-09-04 10:14) [13]

Тут вот такой кусочек кода нашел

....
OldFile := TFileStream.Create(Edit1.Text, fmOpenRead or fmShareDenyWrite);
try
NewFile := TFileStream.Create(NewFileName, fmCreate or fmShareDenyRead);

try
NewFile.CopyFrom(OldFile, OldFile.Size);
finally
FreeAndNil(NewFile);
end;
finally
FreeAndNil(OldFile);
end;
.....

говорят он скопирует нужный файл.
А можно скопировать не открывая файл и не создавая новый... ну типа как в досе команда Copy _from_ _to_


 
Виктор Щербаков ©   (2002-09-04 10:16) [14]

См. API-функцию CopyFile


 
Micah'GF ©   (2002-09-04 10:25) [15]

Что то CopyFileTo не совсем работает... говорят Undeclared Identifier.... может чего подключить надо???


 
Виктор Щербаков ©   (2002-09-04 10:27) [16]

CopyFile объявлена в модуле Windows.


 
Micah'GF ©   (2002-09-04 10:31) [17]

Подключил idGlobal, а функция возвращает False

...
GetSystemDirectory(@Path[1], MAX_PATH);
if not CopyFileTo(Application.ExeName, Path) then ShowMessage("бля Error");
...


 
Anatoly Podgoretsky ©   (2002-09-04 10:42) [18]

Micah"GF © (04.09.02 10:31)
Откуда ты взял эту функцию, не мудри используй CopyFile


 
Micah'GF ©   (2002-09-04 10:50) [19]

Как мне засунуть в массив строку ведь Application.ExeName возвращает строку, а CopyFile просит Array


 
lenin ©   (2002-09-04 10:54) [20]

PChar(Application.ExeName)


 
Виктор Щербаков ©   (2002-09-04 10:55) [21]

CopyFile "просит" PChar. Выполни явное преобразование типов
PChar(Application.ExeName)


 
Micah'GF ©   (2002-09-04 10:56) [22]

Приведите ктонибудь рабочий кусок кода, который бы выяснил где лежит запущеная прога и скопировал этот файл в %SystemRoot%, а то до меня так и не дойдет как сделать самому.


 
Micah'GF ©   (2002-09-04 11:44) [23]

Млин.. делаю так

PathTo:array[1..MAX_PATH] of char;
CopyResult:longbool;

....
GetSystemDirectory(@PathTo, MAX_PATH);
CopyResult := CopyFile(PChar(Application.ExeName), @PathTo, TRUE);
....

В CopyResult всегда FALSE и ничего не скопировано...

Помогите готовым кодом... plz.. ну не програмер я..


 
lenin ©   (2002-09-04 12:02) [24]

Вроде так все работает:
procedure TForm1.Button1Click(Sender: TObject);
var PathTo: array [0..MAX_PATH] of Char;
st: string;
begin
GetSystemDirectory(PathTo,MAX_PATH);
st:=string(PathTo)+"\"+PChar(ExtractFileName(Application.ExeName));
CopyFile(PChar(Application.ExeName),PChar(st), TRUE);
Caption:=st;
end;


 
NickBat ©   (2002-09-04 12:03) [25]

Вообщето не мешало бы указать не просто путь куда копировать, а еще и имя файла туда присоединить. :))))

var
buf: array [0..255] of Char;
PathTo: string;
...

GetSystemDirectory(buf,256);
PathTo:=StrPas(buf)+"\"+ExtractFileName(Application.ExeName);
CopyFile(PChar(Application.ExeName),PChar(PathTo),true);
...


 
Micah'GF ©   (2002-09-04 17:14) [26]

Вон в чем моя ошибка была... теперь все понятно.. Пасибо всем.


 
Micah'GF ©   (2002-09-04 17:33) [27]

Кстати полностью рабочий код получился таким:

procedure TForm1.FormCreate(Sender: TObject);
VAR
PathFrom:array[1..MAX_PATH] of Char;
PathTo:string;
CopyResult:longbool;
begin
GetSystemDirectory(@PathFrom, MAX_PATH);

PathTo:=StrPas(@PathFrom) + "\" + ExtractFileName(Application.ExeName);
Edit1.Text := PChar(Application.ExeName);
Edit2.Text := PathTo;
CopyFile(PChar(Application.ExeName), PChar(PathTo), TRUE);
end;



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

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

Наверх




Память: 0.53 MB
Время: 0.015 c
7-50994
DMA
2002-07-05 13:44
2002.09.16
Проблема с окном в ХР


3-50614
billybons
2002-08-26 12:18
2002.09.16
Почему не работает TFilterOption foCaseInsensitive ?


8-50873
fore_3
2002-05-16 12:54
2002.09.16
Проблема с перемоткой DVD


14-50953
Flash1
2002-08-21 21:51
2002.09.16
Методика оценки программного продукта?


3-50634
Adoon
2002-08-26 19:15
2002.09.16
БД