10. april 2004 - 02:46Der er
8 kommentarer og 1 løsning
Rename flere files
en der vil hjælpe mig med at skifte navn på filer(alle, vis de hedder .jpg, .gif,.png, ) i et dictory med bestemt navn og et tal der skifter for hvert tal?
function IntToNum(int: Integer): string; begin //10000 case int of 1..9: Result := '0000' + IntToStr(int); 10..99: Result := '000' + IntToStr(int); 100..999: Result := '00' + IntToStr(int); 1000..9999: Result := '0' + IntToStr(int); end; end;
procedure TForm1.Button2Click(Sender: TObject); var S: string; begin S := edit4.Text; SelectDirectory('Select working folder', '', S); edit4.Text := S; end;
procedure TForm1.Button1Click(Sender: TObject); var I, Num: Integer; begin ListBox1.Clear;
FileList1.Directory := edit4.Text; Num := StrToInt(Edit2.Text);
ProgressBar1.Max := FileList1.Items.Count;
for I := 1 to FileList1.Items.Count do begin RenameFile(FileList1.Items[I-1], ExtractFilePath(FileList1.Items[I-1]) + Edit1.Text + IntToNum(Num) + Edit3.Text); Num := Num + 1; ProgressBar1.StepIt; ListBox1.Items.Add(' Changing ' + FileList1.Items[I-1] + ' to '); ListBox1.Items.Add(' ' + ExtractFilePath(FileList1.Items[I-1]) + Edit1.Text + IntToNum(Num) + Edit3.Text); Label5.Caption := 'Processing file ' + FileList1.Items[I-1]; end; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Label5.Update; ProgressBar1.Update; ListBox1.Update; end;
end.
dfm:
object Form1: TForm1 Left = 254 Top = 142 Width = 495 Height = 387 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 24 Top = 16 Width = 53 Height = 13 Caption = 'Input folder' end object Label2: TLabel Left = 24 Top = 52 Width = 73 Height = 13 Caption = 'File name prefix' end object Label3: TLabel Left = 24 Top = 80 Width = 89 Height = 29 AutoSize = False Caption = 'File name number start' WordWrap = True end object Label4: TLabel Left = 24 Top = 116 Width = 64 Height = 13 Caption = 'File extension' end object Label5: TLabel Left = 20 Top = 340 Width = 32 Height = 13 Caption = 'Label5' end object Edit1: TEdit Left = 116 Top = 48 Width = 121 Height = 21 TabOrder = 0 Text = 'photo' end object Edit2: TEdit Left = 116 Top = 84 Width = 65 Height = 21 TabOrder = 1 Text = '1' end object Edit3: TEdit Left = 116 Top = 112 Width = 41 Height = 21 TabOrder = 2 Text = '.jpg' end object Button1: TButton Left = 396 Top = 120 Width = 75 Height = 25 Caption = 'Change' TabOrder = 3 OnClick = Button1Click end object ListBox1: TListBox Left = 20 Top = 156 Width = 449 Height = 161 ItemHeight = 13 TabOrder = 4 end object Edit4: TEdit Left = 116 Top = 16 Width = 241 Height = 21 TabOrder = 5 end object Button2: TButton Left = 356 Top = 16 Width = 25 Height = 22 Caption = '...' TabOrder = 6 OnClick = Button2Click end object FileList1: TFileListBox Left = 288 Top = 56 Width = 189 Height = 45 ItemHeight = 13 TabOrder = 7 Visible = False end object ProgressBar1: TProgressBar Left = 20 Top = 320 Width = 449 Height = 16 Min = 0 Max = 100 Step = 1 TabOrder = 8 end object Timer1: TTimer Interval = 100 OnTimer = Timer1Timer Left = 180 Top = 112 end end
procedure RenameFiles(dir: String); var sr: TSearchRec; i: integer; begin if FindFirst(dir+'\*', faAnyFile, sr)=0 then begin i:=0; repeat if (sr.name<>'.') and (sr.name<>'..') then begin RenameFile(dir+'\'+sr.name, dir+'\'+Format('FILE%.4d', [i])); inc(i); end; until FindNext(sr) <> 0; FindClose(sr); end; end;
til abpdk -> egentlig er den jo ikke særlig meget mindre, da den anden indeholder samtligefunktioner i hele programmet. Med alle knapper osv. Den anden er jo faktisk kun nogle få linier kortere ved selve proceduren.
stefmeister>> Nu skrev jeg jo også kun at den var lidt mindre. Iøvrigt kan jeg ikke finde det du kalder "selve proceduren", da løsningen lader til at være "spredt" ud over flere forskellige event-handler procedure.
Det var ikke et forsøg på at konkurrere, men blot at tilbyde en alternativ og lidt mere "udkogt" løsning, som ikke kræver visuelle komponter.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.