|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
помогите. процесс не может получить доступ к файлу
процесс не может получить доступ к файлу. файл занят другим процессом. в чем ошибка? я же, вроде, освободил файлы, подскажите пожалуйста.
Код:
unit USGDMG; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, ExtCtrls, ComCtrls, ShellCtrls, StdCtrls; type TForm1 = class(TForm) StatusBar1: TStatusBar; Open1: TOpenDialog; LV1: TListView; Panel1: TPanel; SpeedButton1: TSpeedButton; ShellTreeView1: TShellTreeView; copy: TButton; Label1: TLabel; procedure SpeedButton1Click(Sender: TObject); procedure LV1ColumnClick(Sender: TObject; Column: TListColumn); procedure LV1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); procedure copyClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; numCol:integer; implementation {$R *.dfm} procedure TForm1.SpeedButton1Click(Sender: TObject); var list:TListItem; Npk,Npr:array[0..4] of byte; Npktr,Nprtr:real; f:TFileStream; i:integer; begin if open1.Execute then begin for i:=0 to open1.Files.Count-1 do begin f:=TFileStream.Create(open1.Files[i],fmOpenRead); f.Seek(67,sofromBeginning); f.Read(Npr,sizeof(npr)); f.Seek(72,sofromBeginning); f.Read(Npk,sizeof(npk)); Nprtr:=Npr[0]*256*256+Npr[1]*256+Npr[2]; Nprtr:=Nprtr+Npr[3]/256+Npr[4]/256/256; Npktr:=Npk[0]*256*256+Npk[1]*256+Npk[2]; Npktr:=Npktr+Npk[3]/256+Npk[4]/256/256; list:= lv1.Items.Add; list.Caption:=extractfileName(open1.Files[i]); list.SubItems.add(floattostr(Nprtr)); list.SubItems.Add(floattostr(Npktr)); list.SubItems.Add(extractfiledir(open1.Files[i])); end; f.Free; end else exit; end; procedure TForm1.LV1ColumnClick(Sender: TObject; Column: TListColumn); begin numCol:=column.Index; (Sender as TCustomListView).AlphaSort; end; procedure TForm1.LV1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); var ix: Integer; begin if numCol = 0 then Compare := CompareText(Item1.Caption,Item2.Caption) else begin ix := numCol - 1; Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]); end; end; procedure TForm1.copyClick(Sender: TObject); var from,tofile:string; i:integer; begin i := LV1.Selected.Index; for i:=i to i+LV1.SelCount-1 do begin from:=lv1.Items.Item[i].SubItems.strings[2]+'\'+lv1.Items.Item[i].caption; tofile:=shelltreeview1.Path+'\'+lv1.Items.Item[i].caption; if copyfile(Pchar(from),Pchar(tofile),false) then ShowMessage('Ôàéë óñïåøíî ñêîïèðîâàí!') else ShowMessage('Íåóäà÷à!'+IntToStr(GetLastError)); end; showmessage('Êîïèðîâàíèå çàâåðøåíî'); end; end. |
#2
|
||||
|
||||
Код:
... if open1.Execute then begin for i:=0 to open1.Files.Count-1 do begin f:=TFileStream.Create(open1.Files[i],fmOpenRead); try f.Seek(67,sofromBeginning); f.Read(Npr,sizeof(npr)); f.Seek(72,sofromBeginning); f.Read(Npk,sizeof(npk)); Nprtr:=Npr[0]*256*256+Npr[1]*256+Npr[2]; Nprtr:=Nprtr+Npr[3]/256+Npr[4]/256/256; Npktr:=Npk[0]*256*256+Npk[1]*256+Npk[2]; Npktr:=Npktr+Npk[3]/256+Npk[4]/256/256; list:= lv1.Items.Add; list.Caption:=extractfileName(open1.Files[i]); list.SubItems.add(floattostr(Nprtr)); list.SubItems.Add(floattostr(Npktr)); list.SubItems.Add(extractfiledir(open1.Files[i])); finally f.Free; end; end; end ... Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Tonyy (23.03.2012)
|
#3
|
|||
|
|||
круто! спасибо!
|