Вниз
Скачать: CL | DM;

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

← →
msdn   (2004-07-14 12:03) [0]

Доброе утро. Вот код:
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 TFrame.Button1Click(Sender: TObject);
var
Dir:string;
i:integer;
begin
if SelectDirectory(Dir,[],0) then
begin
for i:=0 to length(a) do
begin
WindowsCopyFile(a[i], dir)
end;
end;
end;

Вопрос следующий. После копирования, которое происходит вполне успешно, бесконечно выдаётся ошибка "Не удаётся скопировать файл. Указано неправильное или слишком длинное имя файла. Задайте другое имя". Как подавить или исправить ошибку? Заранее благодарен.


← →
wicked ©   (2004-07-14 12:06) [1]

что такое "a"?...


← →
msdn   (2004-07-14 12:10) [2]

массив в котором храню кучу имён файлов, я тут подумал может это с русскими именами файлов связано?


← →
wicked ©   (2004-07-14 12:14) [3]

может цикл нужно оформить так:

> for i:=0 to length(a) - 1 do
> begin
> WindowsCopyFile(a[i], dir)
> end;


ЗЫ а length точно возвращает размер массива?...


← →
Vitalik ©   (2004-07-14 12:17) [4]


> ЗЫ а length точно возвращает размер массива?...

Точно. К бабке не ходи :)


← →
msdn   (2004-07-14 12:18) [5]

length(a) - 1 да тут вы правы,забыл, но это не помогло.


← →
msdn   (2004-07-14 12:42) [6]

ну кто-то что-то толковое по этому поводу сказать может?


← →
wicked ©   (2004-07-14 13:02) [7]


>  FromFile:=FromFile+#0; F.pFrom:=pchar(FromFile);
>  ToDir:=ToDir+#0; F.pTo:=pchar(ToDir);

вполне вероятно, что F.pFrom и F.pTo не заканчиваются на двойной NULL символ...
как вылечить - завести два массива array [0..MAX_PATH + 10] of char, сделать им ZeroMemory, и копировать переменные FromFile и ToDir в них... соответственно, их адреса (адреса нулевых элементов) передавать в F.pFrom и F.pTo...


← →
Fay ©   (2004-07-14 14:29) [8]

(Length(a) -1) = High(a)
Так, к слову.


← →
stone ©   (2004-07-14 14:35) [9]


> msdn   (14.07.04 12:03)  

А стандартная дельфовая функция CopyFile не спасет "отца русской демократии"?


← →
Vetalich   (2004-07-15 02:58) [10]

А не проще так:

var
lpBuffer:pchar;
s_dir:string;
Begin
s_dir:=string(lpBuffer)+"C:\123.ini";  //Куда
CopyFile("D:\23435",pchar(s_dir),False);  //Откуда


И копирует и лишних слов не задаёт... :)



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.024 c
3-1089270470
pok
2004-07-08 11:07
2004.08.01
Виборка по текстовому полю??? SQL!


14-1089284506
Baron
2004-07-08 15:01
2004.08.01
Новое враг хорошего?


14-1089751778
Knight
2004-07-14 00:49
2004.08.01
Чё-то я туплю...


1-1090348862
Евгений ,лучше женя
2004-07-20 22:41
2004.08.01
Как в Delphi можно вставить анимированый gif-рисунок в роли банер


14-1089302163
OSokin
2004-07-08 19:56
2004.08.01
Мастера Дельфи




   Наверх