Текущий архив: 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