![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать из какого каталога запущена моя прога?
Micah'GF © (2002-09-04 09:27:00)Нужно узнать откуда запущена моя прога и сравнить с %systemroot%
Micah'GF (2002-09-04 17:33:00) [1]Кстати полностью рабочий код получился таким:
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;
Micah'GF (2002-09-04 17:14:00) [2]Вон в чем моя ошибка была... теперь все понятно.. Пасибо всем.
NickBat (2002-09-04 12:03:00) [3]Вообщето не мешало бы указать не просто путь куда копировать, а еще и имя файла туда присоединить. :))))
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);
...
lenin (2002-09-04 12:02:00) [4]Вроде так все работает:
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;
Micah'GF (2002-09-04 11:44:00) [5]Млин.. делаю так
PathTo:array[1..MAX_PATH] of char;
CopyResult:longbool;
....
GetSystemDirectory(@PathTo, MAX_PATH);
CopyResult := CopyFile(PChar(Application.ExeName), @PathTo, TRUE);
....
В CopyResult всегда FALSE и ничего не скопировано...
Помогите готовым кодом... plz.. ну не програмер я..
Micah'GF (2002-09-04 10:56:00) [6]Приведите ктонибудь рабочий кусок кода, который бы выяснил где лежит запущеная прога и скопировал этот файл в %SystemRoot%, а то до меня так и не дойдет как сделать самому.
Виктор Щербаков (2002-09-04 10:55:00) [7]CopyFile "просит" PChar. Выполни явное преобразование типов
PChar(Application.ExeName)
lenin (2002-09-04 10:54:00) [8]PChar(Application.ExeName)
Micah'GF (2002-09-04 10:50:00) [9]Как мне засунуть в массив строку ведь Application.ExeName возвращает строку, а CopyFile просит Array
Anatoly Podgoretsky (2002-09-04 10:42:00) [10]Micah"GF © (04.09.02 10:31)
Откуда ты взял эту функцию, не мудри используй CopyFile
Micah'GF (2002-09-04 10:31:00) [11]Подключил idGlobal, а функция возвращает False
...
GetSystemDirectory(@Path[1], MAX_PATH);
if not CopyFileTo(Application.ExeName, Path) then ShowMessage("бля Error");
...
Виктор Щербаков (2002-09-04 10:27:00) [12]CopyFile объявлена в модуле Windows.
Micah'GF (2002-09-04 10:25:00) [13]Что то CopyFileTo не совсем работает... говорят Undeclared Identifier.... может чего подключить надо???
Виктор Щербаков (2002-09-04 10:16:00) [14]См. API-функцию CopyFile
Micah'GF (2002-09-04 10:14:00) [15]Тут вот такой кусочек кода нашел
....
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:08:00) [16]GetSystemDirectory(@Path[1], MAX_PATH);
Micah'GF (2002-09-04 10:05:00) [17]создал Path:array[1..MAX_PATH] of char;
пишу GetSystemDirectory(Path,MAX_PATH);
а там ругаются Incompatible types: "Array" and "PChar"
Юрий Зотов (2002-09-04 09:57:00) [18]Если "где лежит" - то это ParamStr(0) или Application.ExeName.
Если "стартовый каталог", то это GetCurrentDir сразу после старта программы.
Lord Warlock (2002-09-04 09:54:00) [19]Небольшая поправка - GetWindowsDirectory и GetSystemDirectory
Юрий Зотов (2002-09-04 09:54:00) [20]См. "Ученик © (04.09.02 09:46)" или GetWindowsDirectory.