![]() |
RenameFile funzt nur halb
hi
ich hab mir ein miniprog geschrieben... hier der qt:
Delphi-Quellcode:
FindAllFiles is ausser CodeLib (Danke Sakura!)
procedure TForm1.Button1Click(Sender: TObject);
var files, temp:TStringList; i:integer; begin files:=TStringList.Create; temp:=TStringList.Create; FindAllFiles(files,ExtractFileDir(Application.ExeName)); for i:=0 to files.Count-1 do temp.Add(StringReplace(files[i],LabeledEdit1.Text,LabeledEdit2.Text,[rfReplaceAll])); for i:=0 to files.Count-1 do RenameFile(files[i],temp[i]); end; wenn ich nu eingeb '0' und 'Hallo 0', dann funzt es wenn ich dann aber sag '1' und 'Hallo 1', dann funzt es nicht mehr... liegt das an der 0? oder macht das prog das aus prinzip nur einmal mit? oder wie? wenn ich erst 1 mache, und dann 0 isses umgekehrt: 1 funzt und 0 nicht mehr ausserdem findet er zum einen nicht alle dateien, aber er ersetzt auch nicht alle '0' bzw '1' kann mir da irgendwer weiterhelfen? |
Re: RenameFile funzt nur halb
Zitat:
Desweiteren werden deine Stringlisten nicht wieder freigegeben und der Ressourcenschutzblock fehlt. |
Re: RenameFile funzt nur halb
also in die LabeledEdits...naja, ich geb euch ma den kompletten code:
Delphi-Quellcode:
im prinzip nur zwei LabeledEdits und ein button
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) LabeledEdit1: TLabeledEdit; LabeledEdit2: TLabeledEdit; Button1: TButton; procedure FindAllFiles(var FileList: TStringList; RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FindAllFiles(var FileList: TStringList; RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True); var SR: TSearchRec; begin if AnsiLastChar(RootFolder)^ <> '\' then RootFolder := RootFolder + '\'; if Recurse then if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory = faDirectory then if (SR.Name <> '.') and (SR.Name <> '..') then FindAllFiles(FileList, RootFolder + SR.Name, Mask, Recurse); until FindNext(SR) <> 0; finally FindClose(SR); end; if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory <> faDirectory then FileList.Add(RootFolder + SR.Name); until FindNext(SR) <> 0; finally FindClose(SR); end; end; procedure TForm1.Button1Click(Sender: TObject); var files, temp:TStringList; i:integer; begin files:=TStringList.Create; temp:=TStringList.Create; FindAllFiles(files,ExtractFileDir(Application.ExeName)); for i:=0 to files.Count-1 do temp.Add(StringReplace(files[i],LabeledEdit1.Text,LabeledEdit2.Text,[rfReplaceAll])); for i:=0 to files.Count-1 do RenameFile(files[i],temp[i]); end; end. 1. edit: zu ersetzen 2. edit: einzusetzen ich weiss auch das der code unoptimiert ist etc. aber erstma will ich das er funzt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz