Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2009, 20:41   #1
nuevegramodelamor
Пользователь
 
Регистрация: 13.09.2009
Сообщений: 75
По умолчанию узнать путь

как в delphi узнать путь где находиться запущенная прога?
nuevegramodelamor вне форума Ответить с цитированием
Старый 13.09.2009, 20:43   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Код:
path:=extractFilepath(paramstr(0));
или
Код:
path:=ExtractFilePath(Application.ExeName);
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 13.09.2009 в 20:45.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 13.09.2009, 20:51   #3
nuevegramodelamor
Пользователь
 
Регистрация: 13.09.2009
Сообщений: 75
По умолчанию

тогда вопрос ещё в догонку,а как зная путь скопировать файл в другое место?
nuevegramodelamor вне форума Ответить с цитированием
Старый 13.09.2009, 20:56   #4
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

delphiworld 6.0
Цитата:
Копирование методом TurboPascal



type
{Для индикации процесса копирования}
TCallBack = procedure (Position, Size: Longint);

procedure FastFileCopy(const InfileName, OutFileName: string;
CallBack: TCallBack);
const
BufSize = 3*4*4096; { 48Kbytes дает прекрасный результат }
type
PBuffer = ^TBuffer;
TBuffer = array [1..BufSize] of Byte;
var
Size : integer;
Buffer : PBuffer;
infile, outfile : file;
SizeDone, SizeFile: Longint;
begin
if (InFileName <> OutFileName) then
begin
buffer := nil;
AssignFile(infile, InFileName);
System.Reset(infile, 1);
try
SizeFile := FileSize(infile);
AssignFile(outfile, OutFileName);
System.Rewrite(outfile, 1);
try
SizeDone := 0; New(Buffer);
repeat
BlockRead(infile, Buffer^, BufSize, Size);
Inc(SizeDone, Size);
CallBack(SizeDone, SizeFile);
BlockWrite(outfile,Buffer^, Size)
until
Size < BufSize;
FileSetDate(TFileRec(outfile).Handl e,
FileGetDate(TFileRec(infile).Handle ));
finally
if Buffer <> nil then
Dispose(Buffer);
System.close(outfile)
end;
finally
System.close(infile);
end;
end
else
raise EInOutError.Create('File cannot be copied into itself');
end;




Копирование методом потока



procedure FileCopy(const SourceFileName, TargetFileName: string);
var
S, T : TFileStream;
begin
S := TFileStream.Create(sourcefilename, fmOpenRead );
try
T := TFileStream.Create(targetfilename, fmOpenWrite or fmCreate);
try
T.CopyFrom(S, S.Size ) ;
FileSetDate(T.Handle, FileGetDate(S.Handle));
finally
T.Free;
end;
finally
S.Free;
end;
end;




Копирование методом LZExpand



uses
LZExpand;

procedure CopyFile(FromFileName, ToFileName : string);
var
FromFile, ToFile: file;
begin
AssignFile(FromFile, FromFileName);
AssignFile(ToFile, ToFileName);
Reset(FromFile);
try
Rewrite(ToFile);
try
if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle)<0 then
raise Exception.Create('Error using LZCopy')
finally
CloseFile(ToFile);
end;
finally
CloseFile(FromFile);
end;
end;




Копирование методами Windows



uses
// !!! важно
ShellApi;

function WindowsCopyFile(FromFile, ToDir : string) : boolean;
var
F: TShFileOpStruct;
begin
F.Wnd := 0; F.wFunc := FO_COPY;
FromFile:=FromFile+#0; F.pFrom:=pchar(FromFile);
ToDir:=ToDir+#0; F.pTo:=pchar(ToDir);
F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
result:=ShFileOperation(F) = 0;
end;

// пример копирования
procedure TForm1.Button1Click(Sender: TObject);
begin
if not WindowsCopyFile('C:\UTIL\ARJ.EXE', GetCurrentDir) then
ShowMessage('Copy Failed');
end;
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 13.09.2009, 21:13   #5
nuevegramodelamor
Пользователь
 
Регистрация: 13.09.2009
Сообщений: 75
По умолчанию

не понял((
вот написал я в теле формы
Код:
var 
path:string;
begin
path:=extractFilepath(paramstr(0));
получил тут путь...
а вот
Код:
// пример копирования
procedure TForm1.Button1Click(Sender: TObject);
begin
if not WindowsCopyFile('C:\UTIL\ARJ.EXE', GetCurrentDir) then
ShowMessage('Copy Failed');
end;
где тут что(
как я понимаю должно быть что-то типо CopyFile('адрес файла','путь куда копируем')
nuevegramodelamor вне форума Ответить с цитированием
Старый 13.09.2009, 21:24   #6
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Цитата:
'C:\UTIL\ARJ.EXE'
-это что
Цитата:
GetCurrentDir
-это куда копируем
Код:
uses
// !!! важно
ShellApi;

function WindowsCopyFile(FromFile, ToDir : string) : boolean;
var
F: TShFileOpStruct;
begin
F.Wnd := 0; F.wFunc := FO_COPY;
FromFile:=FromFile+#0; F.pFrom:=pchar(FromFile);
ToDir:=ToDir+#0; F.pTo:=pchar(ToDir);
F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
result:=ShFileOperation(F) = 0;
end;
- а эту функу напишите перед
Код:
procedure TForm1.Button1Click(Sender: TObject);
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 13.09.2009, 21:28   #7
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Дык есть же функция CopyFile(OldPath, NewPath, True/False);

Я всегда ей и копировал файлы...
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 13.09.2009, 21:30   #8
nuevegramodelamor
Пользователь
 
Регистрация: 13.09.2009
Сообщений: 75
По умолчанию

хм..
Код:
 if not WindowsCopyFile(path, 'C:\') then
ShowMessage('Copy Failed');
это вот в procedure TForm1.FormCreate(Sender: TObject); написал,запустил и выдаёт ошибку"не удаёться скопировать файл.Не удаёться произвести чтение из файла или с диска" ((чего так

Цитата:
Сообщение от Вавел из ГМТУ Посмотреть сообщение
Дык есть же функция CopyFile(OldPath, NewPath, True/False);

Я всегда ей и копировал файлы...
Код:
CopyFile(path, 'C:\', True);
что-то не работает...пишет что тип не правильный

Последний раз редактировалось Stilet; 14.09.2009 в 10:00.
nuevegramodelamor вне форума Ответить с цитированием
Старый 13.09.2009, 21:33   #9
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

CopyFile(PChar(OldPath), PChar(NewPath), True);
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 13.09.2009, 21:37   #10
nuevegramodelamor
Пользователь
 
Регистрация: 13.09.2009
Сообщений: 75
По умолчанию

CopyFile(PChar(Path), 'C:\', True);

ну и ничего не появляется на Цэ диске=\ппц какой-то((
nuevegramodelamor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Узнать полный путь к процессу в Vista abyss_by Win Api 3 26.03.2010 11:47
Узнать путь USB устройства dimonbest Win Api 0 27.07.2009 12:58
lnk, а точнее как узнать путь к exe. Zeraim Общие вопросы Delphi 4 25.07.2009 13:59
Как узнать путь запуска программы? John_chek Общие вопросы Delphi 5 04.05.2007 10:31
как узнать путь запущенного сервиса Alar Общие вопросы Delphi 0 30.10.2006 11:18