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

Вниз

Копирование файлов   Найти похожие ветки 

 
Dark Elf   (2003-09-15 15:10) [0]

Уважаемые мастера!

Как из программы на Delphi скопировать файл в вышестоящую директорию (например из C:\TEXT\TEMP в C:\TEXT)?

Заранее благодарен за ответ


 
[lamer]Barmaglot ©   (2003-09-15 15:12) [1]

SHFileOperation?


 
Dark Elf   (2003-09-15 15:13) [2]

Нет с помощью обычного CopyFile (я знаю что это очень просто но у меня почему-то не получается)


 
AGGRESSOR ©   (2003-09-15 15:15) [3]

1) SetCurrentDir("..");
2) см. [lamer]Barmaglot


 
AGGRESSOR ©   (2003-09-15 15:15) [4]

А что там может не получаться?


 
Dark Elf   (2003-09-15 15:19) [5]

пишу значит CopyFile("index.txt","..\index.txt",false) а копировать не хочет может что-то с путём?


 
[lamer]Barmaglot ©   (2003-09-15 15:23) [6]

CopyFile("d:\tmp\autoexec.bat", "d:\autoexec.bat", true); ?


 
Dark Elf   (2003-09-15 15:27) [7]

Оно-то всё правильно, спасибо но у меня имя старого файла и нового файла сидят в переменных и всё одинаково кроме того что старый во вложенной директории а новый во внешней. не мог бы ты подсказать как это все сделать с пременными (формат команды CopyFile в этом случае).


 
[lamer]Barmaglot ©   (2003-09-15 15:31) [8]

Код покажи...


 
Dark Elf   (2003-09-15 15:35) [9]

for (index = 1;index <= IntToStr(NMPOP31->MailCount);index++)
{
tempdir = NMPOP31->AttachFilePath;
CreateDir("Temp");
NMPOP31->AttachFilePath = DirectoryListBox1->Directory + "\\Temp";
NMPOP31->GetMailMessage(index);
attachment = NMPOP31->MailMessage->Attachments->Text;
oldfilename = NMPOP31->AttachFilePath+"\\"+attachment;
newfilename = tempdir+"\\"+attachment;
CopyFile(oldfilename.c_str(),newfilename.c_str(), false);
DeleteFile(oldfilename);
RemoveDir("Temp");
fwrite(attachment.c_str(),strlen(attachment.c_str()),1,base);
NMPOP31->AttachFilePath = tempdir;
if (file_count + index > StringGrid1->RowCount + 1)
StringGrid1->RowCount++;
StringGrid1->Cells[0][file_count + index] = IntToStr(file_count + index);
StringGrid1->Cells[1][file_count + index] = attachment;
}


 
Dark Elf   (2003-09-15 16:10) [10]

CopyFile("file.txt","..\file.txt",false) работает а как
CopyFile(oldname,"..\"+oldname,false) не работает и не понятно почему


 
panov ©   (2003-09-15 16:33) [11]

Попробуй обратить внимание вот на эту строчку -
CreateDir("Temp");

У тебя здесь указан относительный путь, а используешь везде далее абсолютный.


 
drakulita ©   (2003-09-15 16:36) [12]

CopyFile(oldname,PChar("..\"+oldname),false) попробуй так у меня работает..


 
VAleksey ©   (2003-09-15 17:00) [13]

Эта функция PChar просит, а ты ей стринг пихаешь.


 
Dark Elf   (2003-09-15 17:17) [14]

Неа, у меня оба параметра PChar


 
VAleksey ©   (2003-09-15 17:32) [15]


> Dark Elf (15.09.03 17:17) [14]

Откуда это видно?


 
Dark Elf   (2003-09-15 17:37) [16]

oldname:String;
......................
CopyFile(PChar(oldname),PChar("..\"+oldname),false)


 
Anatoly Podgoretsky ©   (2003-09-15 17:45) [17]

Теперь вопрос, а файл oldname есть в текущем каталоге, а каталог назначения существует?


 
Dark Elf   (2003-09-15 17:50) [18]

файл oldname есть в текущем каталоге и каталог назначения также существует


 
Anatoly Podgoretsky ©   (2003-09-15 18:03) [19]

Dark Elf (15.09.03 17:50) [18]
Как проверял, код в студию, поскольку тогда должно работать.

Значение текущего каталока
Значение oldname
Сообщение об ошибке
код проверки ошибки
Проверка, что текущего_каталог действительно содержит файл


 
Dark Elf   (2003-09-15 18:07) [20]

oldname:String;
..........................................
SetCurrentDir("C:\TEXT\TEMP");
oldname:="temp.txt";
CopyFile(PChar(oldname),PChar("..\\"+oldname),false);

Сообщения об ошибке нет
GetLastError; выдаёт ошибку №123


 
Anatoly Podgoretsky ©   (2003-09-15 18:11) [21]

Сообщения и не будет, но ты ответил на все вопросы, эту информацию надо и было привести в самом начале.

ошибка 123 это ERROR_INVALID_NAME

Ествественно, что ..\\temp.txt это неверное имя.


 
Dark Elf   (2003-09-15 18:14) [22]

Извиняюсь я сделал очепятку

oldname:String;
..........................................
SetCurrentDir("C:\TEXT\TEMP");
oldname:="temp.txt";
CopyFile(PChar(oldname),PChar( "..\"+oldname),false);


 
Anatoly Podgoretsky ©   (2003-09-15 18:20) [23]

Последний приведеный тобой код работает без ошибок.

program Console;

{$APPTYPE CONSOLE}

uses
SysUtils;
var
S: string;
begin
SetCurrentDir("C:\Temp\0");
S := "temp.txt";
CopyFile(PChar(S),PChar("..\" + S),false);
Readln;
end.


 
Dark Elf   (2003-09-15 18:31) [24]

Спасибо!



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

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

Наверх




Память: 0.51 MB
Время: 0.017 c
1-82235
LeNa19
2003-09-10 23:25
2003.09.25
создание обработчиков событий в runtime


1-82249
Dark Elf
2003-09-15 14:05
2003.09.25
Password Edit


1-82312
APTEMKA
2003-09-13 03:20
2003.09.25
Громкость звука


1-82237
mishgan
2003-09-08 10:29
2003.09.25
Есть ли в DELPHI аналог функции AbnormalTermination()?


3-82137
victor_ch
2003-09-04 10:55
2003.09.25
Изменение свойств ADOCommand в Run-time