![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В чем error? [D5, Win95/98]
Schummi © (2002-03-30 08:12:00)
function FileOperation(FileListBox:TFileListBox;ToPath:string;Action:integer):boolean;
{копирование, перемешение и удаление}
var SHFO: TSHFileOpStruct;
i,c : integer;
FromPath,st,fn : string;
begin
with SHFO do begin
wnd := Application.Handle;
wFunc := Action;
FromPath:= "";
c:=FileListBox.Items.Count-1;
for i:=0 to c do
begin
st:=FileListBox.Items.Strings[i];
Fn:=FavorPath+Form1.ListBox1.Items.Strings[Form1.ListBox1.ItemIndex]+st;
if FileListBox.Selected[i] then
FromPath:=FromPath+Fn+#0;
end;
{FromPath := FromPath+#0;}
pFrom := PChar(FromPath);
pTo := PChar(ToPath);
fFlags := FOF_ALLOWUNDO;
end;
Result := SHFileOperation(SHFO)=0;
end;
...
procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var T:Integer;Selected:String;FileL:TFileListBox;
begin
FileL:=Source as TFileListBox;
T:=FileListBox1.TopIndex;
Selected:=FavorPath+ListBox1.Items.Strings[(Y div ListBox1.ItemHeight)+ListBox1.topindex];
ShowMessage(Selected);
case CheckListBox1.Checked[5] of
True:FileOperation(FileL,Selected,FO_MOVE);
False:FileOperation(FileL,Selected,FO_COPY);
end;
FileListBox1.Update;
FileListBox1.TopIndex:=t;
StatusBar1.SimplePanel:=True;
StatusBar1.SimpleText:="Всего файлов в этой папке: "+IntToStr(FileListBox1.Items.Count);
end;
Заранее спасибо!
Schummi (2002-04-13 06:57:00) [1]Все, разобрался. Всем спасибо!
Schummi (2002-04-07 21:06:00) [2]Ну, пожалуйста!
Schummi (2002-04-07 08:32:00) [3]Не молчите, плз!
Schummi (2002-04-06 07:46:00) [4]Да, но эта же процедура участвует в копировании, когда просто нажимают кнопочку, и все работает!
procedure TForm1.CopyClick(Sender: TObject);
//копирование
var
i,t:integer;
Selected,Dir:string;
begin
i:=FileListBox1.SelCount;
if i=0 then
begin
MessageDlg("Нечего копировать!",mtWarning,[mbOK],0);
exit;
end;
if CheckListBox1.Checked[3] then Dir:=FavorPath else Dir:="";
if not SelectDirectory("Выберите папку для копирования в неё",Dir,Selected) then exit;
t:=FileListBox1.TopIndex;
if Selected[Length(Selected)]<>"\" then Selected:=Selected+"\";
FileOperation(FileListBox1,Selected,FO_COPY);
FileListBox1.Update;
FileListBox1.TopIndex:=t;
StatusBar1.SimplePanel:=True;
StatusBar1.SimpleText:="Всего файлов в этой папке: "+IntToStr(FileListBox1.Items.Count);
end;
Anatoly Podgoretsky (2002-04-04 09:14:00) [5]Полям SHFO, тип которой TSHFileOpStruct
Инициализировать нужно ВСЕ поля, а не только три, у тебя же они черт знает какое значения имеют, от булды.
Schummi (2002-04-04 07:56:00) [6]Присвоить каким полям нулевое значение?
Anatoly Podgoretsky (2002-04-03 11:24:00) [7]Ты смотрел в хелпе описание структуры?
Так вот там не только три используемых тобой поля, но и еще есть, как ты думаешь какое у них значение?
Не знаешь, так присвой этим полям нулевые значения.
Schummi (2002-04-02 21:04:00) [8]А как это? (Тяжело в ученье - легко в бою!)
Anatoly Podgoretsky (2002-04-02 13:51:00) [9]Так проиничиализируй SHFO
Schummi (2002-04-02 07:46:00) [10]А как тогда быть? Я просто прошу тя мне помочь! И вовсе для ентого не надо за меня прогу писать!
Anatoly Podgoretsky (2002-03-31 15:46:00) [11]В принципе это не ошибка, ошибка в другом, неинициализирована структура SHFO
А 1026 означает недопустимые параметры
Anatoly Podgoretsky (2002-03-31 15:31:00) [12]Ты хочешь, чтобы я за тебя написал программу?
Я тебе привел две ошибки для начала, ты исправил код, как он теперь у тебя выглядит?.
Schummi (2002-03-31 15:26:00) [13]Мот, кто знает, че за ошибка такая - "Не удается скопировать файл. Ошибка файловой системы(1026).
Schummi (2002-03-31 11:31:00) [14]В пргограмме есть ещё и функция копирования выделенных файлов в выбранную папку. Но хочется упростить использование, понимаешь? Да и потом, чего пристал? Мот, посмотрел бы, сам нашел бы ошибку? А?
Anatoly Podgoretsky (2002-03-31 09:57:00) [15]Естественно, но с SHFileOperation у тебя же не получается!
Schummi (2002-03-31 09:44:00) [16]2Anatoly Podgoretsky То тогда ещё надо проверять наличие файла в той папке...
Anatoly Podgoretsky (2002-03-30 16:08:00) [17]Ну в чем проблема, используй SHFileOperation, не умеешь с ней работать, используй что попроще, например CopyFile/MoveFile
Schummi (2002-03-30 15:53:00) [18]Дело все вот в чем: Имеется ни форме ListBox с папками. В него из FileListBox перетаскиваются файлы и они должны методами Windows либо копироваться, либо перемещаться, а вылетает ошибка!
Schummi (2002-03-30 15:51:00) [19]Выдается ошибка - "Не удается скопировать файл. Ошибка файловой системы(1026).
Anatoly Podgoretsky (2002-03-30 11:10:00) [20]Как минимум в этом
pFrom := PChar(FromPath);
pTo := PChar(ToPath);