Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.012 c
1-82203
DeScriptor
2003-09-08 01:44
2003.09.25
I/O error 998


3-82070
Denkop
2003-09-03 15:08
2003.09.25
Двойные кавычки в запросе


3-82123
AndDem
2003-08-27 14:06
2003.09.25
LoginPrompt в ADO


14-82391
Nik8.
2003-09-05 12:32
2003.09.25
Документация


14-82390
Е-Моё имя
2003-09-05 12:01
2003.09.25
Тема





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский