0 / 0 / 0
Регистрация: 23.06.2015
Сообщений: 11
1

Копирование файлов через FileListBox

23.06.2015, 21:50. Показов 3689. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Нужна очень помощь. Суть проблемы: делаю для работы форму по разбрасыванию корреспонденции по папкам общего доступа(адреса куда будут копироваться файлы статические, примерно 50 папок) из папок отделов(адреса откуда будут копироваться файлы так же статические, 20 папок), через RadioButon реализовал присвоение FileListBox'у нужной папки от куда будет происходить копирование, и вот дальше уперся в тупик, не могу сообразить как реализовать копирование выбранных файлов в FileListBox'е в папки назначения, при условии что копирование может быть не во все папки, реализовывается через CheckBox'ы выбор нужных папок. Последний раз писал в Delphi 8 лет назад, забыл все напрочь. Очень нужен конкретный пример кода, по форуму рылся, ни чего похожего не нашел.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.06.2015, 21:50
Ответы с готовыми решениями:

FileListBox копирование файлов
Приветствую всех! Столкнулся с такой маленькой проблемкой: Нужно чтоб при двойном нажатии на...

Копирование файлов через opendialogs
Добрый день. Подскажите как скопировать несколько выбранных файлов, в определенную папку....

FileListBox перечень файлов
Всем привет. Помогите, потому что я что-то торможу... Есть FileListBox, количество файлов может...

Отображение типа файлов из ShellListView в FileListBox
Здраствуйте! Возможно это очень простой вопрос, но не для меня, так как еще учусь и вникаю в...

22
57 / 57 / 37
Регистрация: 11.05.2015
Сообщений: 196
24.06.2015, 07:38 2
Yarrrrr, у Вас 50 папок куда кидать и 20 папок откуда. Вы собираетесь разграничивать через групповую политику копирования или как? При выборе нужного файла в FileListBox копирует в папку Dir:
Delphi
1
2
3
4
5
6
7
8
const
Dir: String = 'C:\Folder for Copy\'
...
procedure TForm1.FileListBox1Change(Sender: TObject);
begin
If Dir[Length(Dir)]<>'\' then Dir:=Dir+'\';
CopyFile(PChar(FileListBox1.FileName),PChar(Dir+ExtractFileName(FileListBox1.FileName)),False); //False - копирование с заменой, если будет True, функция вернет состояние копирования (скопировано или не скопировано)
end;
Будут вопросы, задавай, только с конкретикой.
1
0 / 0 / 0
Регистрация: 23.06.2015
Сообщений: 11
24.06.2015, 13:26  [ТС] 3
Спасибо за ответ, но остаются вопросы. Постараюсь по конкретнее описать что требуется: при нажатии на один из 20 RadioButon'ов FileListBox'у присваивается определенная директория, из которой в последствии необходимо будет скопировать выбранные файлы в другие папки( до 50 шт.) по нажатию на кнопку Button. Указание в какие папки надо будет копировать эти файлы будет осуществляться через проверку группы CheckBox'ов к которым будет присвоена определенная директория. Наглядный пример:
Delphi
1
2
3
4
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
FileListBox1.Directory:= 'P:\Mail\01\Post';
end;
потом выбрав файлы необходимо чтоб по нажатию на Button1(Отправить) происходила проверка CheckBox'ов с последующим копированием этих файлов по всем выбранным папкам,
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckBox1.Checked then begin
const
Dir: String ="c:\Temp\;
procedure TForm1.FileListBox1Change(Sender: TObject);
begin
If Dir[Length(Dir)]<>'\' then Dir:=Dir+'\';
CopyFile(PChar(FileListBox1.FileName),PChar(Dir+ExtractFileName(FileListBox1.FileName)),False); //False - копирование с заменой, если будет True, функция вернет состояние копирования (скопировано или не скопировано)
end;
и так ко всем выбранным CheckBox'ам.
Попробовал вставить код, но что то не совсем получается, ругается на вот этот момент
Delphi
1
2
const
Dir: String ='c:\Temp\';
Может я не туда его вставляю, хотелось бы понять кудой его надо ставить или что не так я делаю.
0
57 / 57 / 37
Регистрация: 11.05.2015
Сообщений: 196
24.06.2015, 14:03 4
Цитата Сообщение от Yarrrrr Посмотреть сообщение
ругается на вот этот момент
Не верный синтаксис. Все переменные и константы, в том числе процедуры и функции должны быть описаны перед началом процедуры/функции, т.е.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
const
Dir: String = 'C:\Temp\';
{procedure TForm1.FileListBox1Change(Sender: TObject);  //Эта процедура создаться если кликнуть по FileListBox'у дважды, и происходит, когда пользователь выделяет из списка файл
begin
If Dir[Length(Dir)]<>'\' then Dir:=Dir+'\';
CopyFile(PChar(FileListBox1.FileName),PChar(Dir+ExtractFileName(FileListBox1.FileName)),False); //False - копирование с заменой, если будет True, функция вернет состояние копирования (скопировано или не скопировано)
end;}
...
begin
if CheckBox1.Checked then With FileListBox1 do 
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir+ExtractFileName(FileName)),False);
  end;
  Selected[i-1]:=False;  //Уберем выделение
end;
...
end;
1
0 / 0 / 0
Регистрация: 23.06.2015
Сообщений: 11
24.06.2015, 16:47  [ТС] 5
Спасибо за подсказку, попробовал сделать вот такой вот код получился:
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
unit pr1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ExtCtrls, CheckLst, FileCtrl;
 
type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    GroupBox1: TGroupBox;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    CheckBox7: TCheckBox;
    GroupBox2: TGroupBox;
    CheckBox8: TCheckBox;
    CheckBox9: TCheckBox;
    CheckBox10: TCheckBox;
    CheckBox11: TCheckBox;
    CheckBox12: TCheckBox;
    CheckBox13: TCheckBox;
    CheckBox14: TCheckBox;
    CheckBox15: TCheckBox;
    CheckBox16: TCheckBox;
    CheckBox17: TCheckBox;
    CheckBox18: TCheckBox;
    CheckBox19: TCheckBox;
    CheckBox20: TCheckBox;
    CheckBox21: TCheckBox;
    CheckBox22: TCheckBox;
    CheckBox23: TCheckBox;
    CheckBox24: TCheckBox;
    CheckBox25: TCheckBox;
    CheckBox26: TCheckBox;
    CheckBox27: TCheckBox;
    CheckBox28: TCheckBox;
    CheckBox29: TCheckBox;
    CheckBox30: TCheckBox;
    CheckBox31: TCheckBox;
    CheckBox32: TCheckBox;
    CheckBox33: TCheckBox;
    CheckBox34: TCheckBox;
    CheckBox35: TCheckBox;
    CheckBox36: TCheckBox;
    CheckBox37: TCheckBox;
    CheckBox38: TCheckBox;
    CheckBox39: TCheckBox;
    CheckBox40: TCheckBox;
    GroupBox3: TGroupBox;
    CheckBox41: TCheckBox;
    CheckBox42: TCheckBox;
    CheckBox43: TCheckBox;
    CheckBox44: TCheckBox;
    CheckBox45: TCheckBox;
    CheckBox46: TCheckBox;
    CheckBox47: TCheckBox;
    CheckBox48: TCheckBox;
    CheckBox49: TCheckBox;
    CheckBox50: TCheckBox;
    CheckBox51: TCheckBox;
    CheckBox52: TCheckBox;
    CheckBox53: TCheckBox;
    CheckBox54: TCheckBox;
    CheckBox55: TCheckBox;
    CheckBox56: TCheckBox;
    CheckBox57: TCheckBox;
    CheckBox58: TCheckBox;
    CheckBox59: TCheckBox;
    CheckBox60: TCheckBox;
    GroupBox4: TGroupBox;
    Button2: TButton;
    Button1: TButton;
    Button3: TButton;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    RadioButton5: TRadioButton;
    RadioButton6: TRadioButton;
    RadioButton7: TRadioButton;
    RadioButton8: TRadioButton;
    RadioButton9: TRadioButton;
    RadioButton10: TRadioButton;
    RadioButton11: TRadioButton;
    RadioButton12: TRadioButton;
    RadioButton13: TRadioButton;
    RadioButton14: TRadioButton;
    RadioButton15: TRadioButton;
    RadioButton16: TRadioButton;
    RadioButton17: TRadioButton;
    RadioButton18: TRadioButton;
    RadioButton19: TRadioButton;
    RadioButton20: TRadioButton;
    FileListBox1: TFileListBox;
    CheckBox61: TCheckBox;
    CheckBox62: TCheckBox;
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure RadioButton4Click(Sender: TObject);
    procedure RadioButton5Click(Sender: TObject);
    procedure RadioButton6Click(Sender: TObject);
    procedure RadioButton7Click(Sender: TObject);
    procedure RadioButton8Click(Sender: TObject);
    procedure RadioButton9Click(Sender: TObject);
    procedure RadioButton10Click(Sender: TObject);
    procedure RadioButton11Click(Sender: TObject);
    procedure RadioButton12Click(Sender: TObject);
    procedure RadioButton13Click(Sender: TObject);
    procedure RadioButton14Click(Sender: TObject);
    procedure RadioButton15Click(Sender: TObject);
    procedure RadioButton16Click(Sender: TObject);
    procedure RadioButton17Click(Sender: TObject);
    procedure RadioButton18Click(Sender: TObject);
    procedure RadioButton19Click(Sender: TObject);
    procedure RadioButton20Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  
implementation
 
{$R *.dfm}
         
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
  FileListBox1.Directory:= 'P:\Mail_ocz\01\Post\';
end;
 
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
  FileListBox1.Directory:= 'P:\Mail_ocz\02\Post\';
end;
 
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
  FileListBox1.Directory:= 'P:\Mail_ocz\03\Post\';
end;
 
procedure TForm1.RadioButton4Click(Sender: TObject);
begin
  FileListBox1.Directory:= 'P:\Mail_ocz\04\Post\';
end;
 
procedure TForm1.RadioButton5Click(Sender: TObject);
begin
  FileListBox1.Directory:= 'P:\Mail_ocz\05\Post\';
end;
 
procedure TForm1.RadioButton6Click(Sender: TObject);
begin
  FileListBox1.Directory:= 'P:\Mail_ocz\06\Post\';
end;
. . .
procedure TForm1.RadioButton16Click(Sender: TObject);
begin
  FileListBox1.Directory:= 'P:\Mail_ocz\19\Post\';
end;
 
procedure TForm1.RadioButton17Click(Sender: TObject);
begin
  FileListBox1.Directory:= 'P:\Mail_ocz\20\Post\';
end;
 
procedure TForm1.RadioButton18Click(Sender: TObject);
begin
  FileListBox1.Directory:= 'P:\Mail_ocz\22\Post\;
end;
 
procedure TForm1.RadioButton19Click(Sender: TObject);
begin
  FileListBox1.Directory:= 'P:\Mail_ocz\71\Post\';
end;
 
procedure TForm1.RadioButton20Click(Sender: TObject);
begin
  FileListBox1.Directory:= 'c:\post_otdel\';
end;
 
procedure TForm1.Button3Click(Sender: TObject);
var
i: Integer;
const
Dir1: String = '\\Dnp\fz\Dnp_B\In\';
Dir2: String = '\\Dnp\fz\Dnp_Zov\In\';
Dir3: String = '\\Dnp\fz\Dnp_Kir\In\';
Dir4: String = '\\Dnp\fz\Dnp_Lev\In\';
Dir5: String = '\\Dnp\fz\Dnp_Leninka\In\';
Dir6: String = '\\Dnp\fz\CPTO\In\';
Dir7: String = '\\Dnp\fz\Apostolovo\In\';
Dir8: String = '\\Dnp\fz\Vasilkovka\In\';
Dir9: String = '\\Dnp\fz\Verhnedneprovsk\In\';
Dir10: String = '\\Dnp\fz\Volnogorsk\In\';
Dir11: String = '\\Dnp\fz\Dnepropetrovsk\IN\';
Dir12: String = '\\Dnp\fz\Dnp_S\IN\';
Dir13: String = '\\Dnp\fz\Zh_Vody\IN\';
Dir14: String = '\\Dnp\fz\Kr_Ing\IN\';
Dir15: String = '\\Dnp\fz\Kr_Rog\IN\';
Dir16: String = '\\Dnp\fz\Kr_selo\In\';
Dir17: String = '\\Dnp\fz\Krinichki\in\';
Dir18: String = '\\Dnp\fz\Magdalinovka\in\';
Dir19: String = '\\Dnp\fz\Marganets\In\';
Dir20: String = '\\Dnp\fz\Mejevay\IN\';
Dir21: String = '\\Dnp\fz\Nikopol\In\';
Dir22: String = '\\Dnp\fz\Novomoskovsk\In\';
Dir23: String = '\\Dnp\fz\Ordjonikidze\In\';
Dir24: String = '\\Dnp\fz\Pavlograd\In\';
Dir25: String = '\\Dnp\fz\Pershotravensk\in\';
Dir26: String = '\\Dnp\fz\Petrikovka\In\';
Dir27: String = '\\Dnp\fz\Petropavlovka\In\';
Dir28: String = '\\Dnp\fz\Pokrovka\in\';
Dir29: String = '\\Dnp\fz\Pytihatki\In\';
Dir30: String = '\\Dnp\fz\Sinelnikovo\in\';
Dir31: String = '\\Dnp\fz\Solenoe\in\';
Dir32: String = '\\Dnp\fz\Sofievka\in\';
Dir33: String = '\\Dnp\fz\Ternovka\in\';
Dir34: String = '\\Dnp\fz\Kr_Tern\IN\';
Dir35: String = '\\Dnp\fz\Tomakovka\In\';
Dir36: String = '\\Dnp\fz\Tsarichanka\In\';
Dir37: String = '\\Dnp\fz\Shirokoe\In\';
Dir38: String = '\\Dnp\fz\Urievka\IN\';
Dir39: String = '\\Dnp\p\Mail_ocz\01\+DateToStr(Date)';
Dir40: String = '\\Dnp\p\Mail_ocz\02\+DateToStr(Date)';
Dir41: String = '\\Dnp\p\Mail_ocz\03\+DateToStr(Date)';
Dir42: String = '\\Dnp\p\Mail_ocz\04\+DateToStr(Date)';
Dir43: String = '\\Dnp\p\Mail_ocz\05\+DateToStr(Date)';
Dir44: String = '\\Dnp\p\Mail_ocz\06\+DateToStr(Date)';
Dir45: String = '\\Dnp\p\Mail_ocz\08\+DateToStr(Date)';
Dir46: String = '\\Dnp\p\Mail_ocz\09\+DateToStr(Date)';
Dir47: String = '\\Dnp\p\Mail_ocz\10\+DateToStr(Date)';
Dir48: String = '\\Dnp\p\Mail_ocz\11\+DateToStr(Date)';
Dir49: String = '\\Dnp\p\Mail_ocz\12\+DateToStr(Date)';
Dir50: String = '\\Dnp\p\Mail_ocz\13\+DateToStr(Date)';
Dir51: String = '\\Dnp\p\Mail_ocz\16\+DateToStr(Date)';
Dir52: String = '\\Dnp\p\Mail_ocz\17\+DateToStr(Date)';
Dir53: String = '\\Dnp\p\Mail_ocz\18\+DateToStr(Date)';
Dir54: String = '\\Dnp\p\Mail_ocz\19\+DateToStr(Date)';
Dir55: String = '\\Dnp\p\Mail_ocz\20\+DateToStr(Date)';
Dir56: String = '\\Dnp\p\Mail_ocz\22\+DateToStr(Date)';
Dir57: String = '\\Dnp\p\Mail_ocz\71\+DateToStr(Date)';
Dir58: String = '\\Dnp\fz\Profnav\IN\';
Dir59: String = '\\Dnp\o\old_Mail\+DateToStr(Date)\';
{procedure TForm1.FileListBox1Change(Sender: TObject);  //Ýòà ïðîöåäóðà ñîçäàòüñÿ åñëè êëèêíóòü ïî FileListBox'ó äâàæäû, è ïðîèñõîäèò, êîãäà ïîëüçîâàòåëü âûäåëÿåò èç ñïèñêà ôàéë
begin
If Dir[Length(Dir)]<>'\' then Dir:=Dir+'\';
CopyFile(PChar(FileListBox1.FileName),PChar(Dir+ExtractFileName(FileListBox1.FileName)),False); //False - êîïèðîâàíèå ñ çàìåíîé, åñëè áóäåò True, ôóíêöèÿ âåðíåò ñîñòîÿíèå êîïèðîâàíèÿ (ñêîïèðîâàíî èëè íå ñêîïèðîâàíî)
end;}
begin
  if CheckBox1.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir1+ExtractFileName(FileName)),False);
  end;
  if CheckBox2.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir2+ExtractFileName(FileName)),False);
  end;
  if CheckBox3.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir3+ExtractFileName(FileName)),False);
  end;
  if CheckBox4.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir4+ExtractFileName(FileName)),False);
  end;
  if CheckBox5.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir5+ExtractFileName(FileName)),False);
  end;
  if CheckBox6.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir6+ExtractFileName(FileName)),False);
  end;
  if CheckBox8.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir7+ExtractFileName(FileName)),False);
  end;
  if CheckBox9.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir8+ExtractFileName(FileName)),False);
  end;
  if CheckBox10.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir9+ExtractFileName(FileName)),False);
  end;
  if CheckBox11.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir10+ExtractFileName(FileName)),False);
  end;
  if CheckBox12.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir11+ExtractFileName(FileName)),False);
  end;
  if CheckBox13.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir12+ExtractFileName(FileName)),False);
  end;
  if CheckBox13.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir12+ExtractFileName(FileName)),False);
  end;
  if CheckBox14.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir13+ExtractFileName(FileName)),False);
  end;
  if CheckBox15.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir14+ExtractFileName(FileName)),False);
  end;
  if CheckBox16.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir15+ExtractFileName(FileName)),False);
  end;
. . .
  if CheckBox60.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir58+ExtractFileName(FileName)),False);
  end;
   if CheckBox62.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir59+ExtractFileName(FileName)),False);
  end;
  Selected[i-1]:=False;  //Óáåðåì âûäåëåíèå
end;
end;
     end;
end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
      end;
 
end.


не хочет копировать ни чего, все компилится, но ни чего не происходит по нажатию на кнопку, что я перемудрил?
0
57 / 57 / 37
Регистрация: 11.05.2015
Сообщений: 196
25.06.2015, 06:19 6
Куда столько эндов то? аж 57 шт. 180 ст. ошибка FileListBox1.Directory:= 'P:\Mail_ocz\22\Post\';. Интересно и как это можно было скомпилировать? у тебя в форме есть описание процедур, а сами процедуры в строчку записались.
1
0 / 0 / 0
Регистрация: 23.06.2015
Сообщений: 11
25.06.2015, 07:54  [ТС] 7
По поводу эндов - без них ни чего не компилится, ругается что не хватает, по поводу 180 строки, в программе там ошибки нет. видать когда сокращал случайно стер конец строки, а вот как оно все скомпилилось, не знаю, но форма открывается, папки, источник копирования, по нажатию радиобатанов срабатывают, выбираю файлы в файллистбоксе, проставляю чекбоксы, жму отправить и .... ничего не отправляется
0
57 / 57 / 37
Регистрация: 11.05.2015
Сообщений: 196
25.06.2015, 08:01 8
Yarrrrr, сокращение у тебя на 167 строчке, ендов столько не должно быть, смотри где у тебя ошибка. А если нажать на 19, 20 радиобатн список файлов меняется?

Добавлено через 1 минуту
можешь еще проверить доступ к сетевому ресурсу, есть он или нету и пользователя
1
0 / 0 / 0
Регистрация: 23.06.2015
Сообщений: 11
25.06.2015, 10:03  [ТС] 9
Все радиобатаны меняют значение файллистбокса, с первого по 20, сокращение в коде было сделано из за того что слишком длинный текст в сообщение не влазил. сейчас еще раз пробовал, получается если ставлю чекбокс1, то туда отправляет, ставлю в другом месте, ни чего не отправляется. Получается около 60 адресатов, из них может отправляться всем, а может отправляться выборочно, файл будет отправляться один и тот же. Доступ к сетевым ресурсам полный, с правами доменного администратора.
0
57 / 57 / 37
Регистрация: 11.05.2015
Сообщений: 196
25.06.2015, 10:20 10
Еще раз взглянул в программный код и увидел
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if CheckBox1.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir1+ExtractFileName(FileName)),False);
  end;
end;  //Пропущен end; который отвечает за первый чекбокс, т.е. если первый стоит, то он проверит все остальные, иначе он ничего не выполнит
  if CheckBox2.Checked then With FileListBox1 do
begin
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;
    CopyFile(PChar(FileName),PChar(Dir2+ExtractFileName(FileName)),False);
  end;
end; //И так везде нужно по вставлять и в конце убрать 57 ендов
  if CheckBox3.Checked then With FileListBox1 do
...
1
0 / 0 / 0
Регистрация: 23.06.2015
Сообщений: 11
25.06.2015, 14:21  [ТС] 11
Огромное спасибо за подсказку, все получилось, копирует во все адреса, где стоит активным чек бокс, но копирует все содержимое файллистбокса, хотя я выбираю один или несколько файлов, я так понимаю что где-то в коде надо указать что только выбранные, а вот что именно поменять я не знаю. И еще такой вопрос у меня в путях, куда будет копироваться информация есьт вот такой код:
Delphi
1
Dir39: String = '\\Dnp\p\Mail_ocz\01\+DateToStr(Date)\';
под ним я подразумивал что инфа будет копироваться в папку с текущей датой, и каждый день будет новая папка, процедуру создания папки я написал, все создается, но вот копироваться туда не хочет, я так понимаю что эти пути надо не как постоянные прописывать, а как переменные, тогда вопрос возникает как правильно пропичсать путь к папке с указанием что надо каждый день в новую папку копировать, в названии которой текущая дата.
0
пофигист широкого профиля
4739 / 3172 / 860
Регистрация: 15.07.2013
Сообщений: 18,281
25.06.2015, 15:18 12
Цитата Сообщение от Yarrrrr Посмотреть сообщение
но копирует все содержимое файллистбокса, хотя я выбираю один или несколько файлов
Это ты руками выбираешь один или несколько. А в своем коде
Delphi
1
2
3
4
5
  For i:=0 to Count-1 do
  begin
    Selected[i]:=True;    //в этой строке ты выбираешь все
    CopyFile(PChar(FileName),PChar(Dir2+ExtractFileName(FileName)),False);
  end;
надо проверять свойство Selected, а не устанавливать его.
1
57 / 57 / 37
Регистрация: 11.05.2015
Сообщений: 196
25.06.2015, 16:04 13
Цитата Сообщение от Yarrrrr Посмотреть сообщение
копироваться в папку с текущей датой
Немного по другому нужно прописать
Delphi
1
2
3
...
Dir39: String = '\\Dnp\p\Mail_ocz\01\'+DateToStr(Date)+'\';
...
Ну и да, если тебе нужно копировать только те, которые выбраны, то их и копируй:
Delphi
1
2
3
4
...
For i:=0 to Count-1 do
    If Selected[i] then CopyFile(PChar(FileName),PChar(Dir2+ExtractFileName(FileName)),False);
...
1
пофигист широкого профиля
4739 / 3172 / 860
Регистрация: 15.07.2013
Сообщений: 18,281
25.06.2015, 16:15 14
Цитата Сообщение от Rasomaha Посмотреть сообщение
DateToStr(Date)
Настоятельно рекомендую в именах файлов или папок употреблять
Delphi
1
FormatDateTime('yyyymmdd',Date);
Не будет проблем с сортировкой.
1
57 / 57 / 37
Регистрация: 11.05.2015
Сообщений: 196
25.06.2015, 16:26 15
Цитата Сообщение от northener Посмотреть сообщение
Настоятельно рекомендую в именах файлов или папок употреблять
Здесь нужно смотреть как он реализовал процедуру создания папки, если он пользовался таким форматом, то и копировать в туже нужно, ну а если нет?
1
0 / 0 / 0
Регистрация: 23.06.2015
Сообщений: 11
26.06.2015, 08:41  [ТС] 16
Доброго утра!
Цитата Сообщение от Rasomaha Посмотреть сообщение
Немного по другому нужно прописать
Код Delphi
Выделить код
1
2
3
...
Dir39: String = '\\Dnp\p\Mail_ocz\01\'+DateToStr(Date)+'\';
...
поменял значения в путях на такое, теперь выпадает ошибка Constant expression expected, что ему не так? пути стоят в константах, а тут как бы переменная получается, куда его перекинуть надо, или что изменить в параметрах?
0
57 / 57 / 37
Регистрация: 11.05.2015
Сообщений: 196
26.06.2015, 10:10 17
Yarrrrr, да, придется вытащить их из констант, и заполнять самостоятельно. + Date это что за переменная? С датами можешь так работать
Delphi
1
2
3
4
5
6
7
var
Date: TDate;
...
Date:=Yesterday; //Date:=Now-1; Вчера
Date:=Now;       //Сегодня
DAte:=Tomorrow;  //Date:=Now+1; Завтра
...
Основной принцип, я думаю, понятен. И еще, может ты попробуешь не громоздить такой большой код, а попробуешь создать массивы? Ну к примеру:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
var
  RadioButton: Array [0..11] of TRadioButton;
  i: Integer;
...
For i:=0 to 11 do
begin
  RadioButton[i]:=TRadioButton.Create(Form1);
  RadioButton[i].Parent:=Self;
  RadioButton[i].Caption:=Format('Test RadioButton № %.2d',[i+1]);
  RadioButton[i].Top:=10+20*(i div 2);
  RadioButton[i].Left:=10+150*(i mod 2);
  RadioButton[i].Width:=140;
end;
1
0 / 0 / 0
Регистрация: 23.06.2015
Сообщений: 11
26.06.2015, 10:25  [ТС] 18
Код можно сделать и поменьше, не вопрос, но на это надо время, которого у меня не особо много, так как в основном в командировках, в офисе бываю редко, некогда особо разбираться в этом, но сделать надо, поэтому делаю как могу, а могу не очень, но не суть, со временем буду все равно переделывать под более нормальный вид, так как добавлять еще логирование надо будет и еще несколько примочек. но то потом, сейчас главное чтоб оно копировало через прогу, а не сидел человек и раскидывал руками по папкам и через 7 батников. По поводу
Цитата Сообщение от Rasomaha Посмотреть сообщение
+ Date это что за переменная?
, тут такой момент. каждый день приходит уйма почты, которую нужно сохранять в папку с текущей датой, тоесть сегодня пришла почта, ее надо скопировать в папку по адресу
\\Dnp\p\Mail_ocz\01\26.06.2015\, завтра будет соответсвенно папка \\Dnp\p\Mail_ocz\01\27.06.2015\ и так далее, папку с датой создаю таким макаром
Delphi
1
ForceDirectories(DateToStr(Date));
, и вот не могу догнать как прописать чтоб он копировал именно туда.
0
57 / 57 / 37
Регистрация: 11.05.2015
Сообщений: 196
26.06.2015, 10:55 19
тебе нужно тогда убрать с констант Dir39-Dir57 и Dir59, и загнать их в переменные, а при создании формы их прописать.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var
  Form1: TForm1;
  Dir39,Dir40,Dir41,Dir42,Dir43,Dir44,Dir45,Dir46,Dir47,Dir48,Dir49,Dir50,Dir51,Dir52,Dir53,Dir54,Dir55,Dir56,Dir57,Dir59: String;
...
procedure TForm1.FormCreate(Sender: TObject); //Двойной клик по форме
var
Date: TDate;
begin
Date:=Now;  //Ну или подредактируешь, смысл в том, что при запуске программы это выполняется
Dir39:='\\Dnp\p\Mail_ocz\01\'+DateToStr(Date)+'\';
Dir40:='\\Dnp\p\Mail_ocz\02\'+DateToStr(Date)+'\';
Dir41:='\\Dnp\p\Mail_ocz\03\'+DateToStr(Date)+'\';
Dir42:='\\Dnp\p\Mail_ocz\04\'+DateToStr(Date)+'\';
Dir43:='\\Dnp\p\Mail_ocz\05\'+DateToStr(Date)+'\';
Dir44:='\\Dnp\p\Mail_ocz\06\'+DateToStr(Date)+'\';
Dir45:='\\Dnp\p\Mail_ocz\08\'+DateToStr(Date)+'\';
Dir46:='\\Dnp\p\Mail_ocz\09\'+DateToStr(Date)+'\';
Dir47:='\\Dnp\p\Mail_ocz\10\'+DateToStr(Date)+'\';
Dir48:='\\Dnp\p\Mail_ocz\11\'+DateToStr(Date)+'\';
Dir49:='\\Dnp\p\Mail_ocz\12\'+DateToStr(Date)+'\';
Dir50:='\\Dnp\p\Mail_ocz\13\'+DateToStr(Date)+'\';
Dir51:='\\Dnp\p\Mail_ocz\16\'+DateToStr(Date)+'\';
Dir52:='\\Dnp\p\Mail_ocz\17\'+DateToStr(Date)+'\';
Dir53:='\\Dnp\p\Mail_ocz\18\'+DateToStr(Date)+'\';
Dir54:='\\Dnp\p\Mail_ocz\19\'+DateToStr(Date)+'\';
Dir55:='\\Dnp\p\Mail_ocz\20\'+DateToStr(Date)+'\';
Dir56:='\\Dnp\p\Mail_ocz\22\'+DateToStr(Date)+'\';
Dir57:='\\Dnp\p\Mail_ocz\71\'+DateToStr(Date)+'\';
Dir59:='\\Dnp\o\old_Mail\'+DateToStr(Date)+'\';
end;
1
0 / 0 / 0
Регистрация: 23.06.2015
Сообщений: 11
26.06.2015, 11:15  [ТС] 20
ок, огромное спасибо, буду пробовать
0
26.06.2015, 11:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.06.2015, 11:15
Помогаю со студенческими работами здесь

Копирование из FileListBox в ListBox без расширений файлов
при копировании из FileListBox в ListBox копируются и расширения файлов, как сделать так чтобы...

Копирование файлов через FOR
Нужно сделать копирование файлов через цикл for из одной папку в другую в BAT файле (допустим все...

Копирование файлов через C++ Builder
привеД всем помогите пожалуйсто с кодом программы мне нужно скопировать текстовй документ из папки...

Копирование файлов через блокнот
Добрый вечер! Мне надо копировать файлы из одной папки в другую с учетом того,что эти файлы...

Копирование файлов через сравнение
Сравнить два каталога разницу записать в третий. В третий каталог нужно положить все файлы,...

Копирование файлов через http
Как скопировать файлы с сервера через http? Например с http://www.mydomen.ru/*.*


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru